两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

存儲器控制器、存儲器系統(tǒng)、固態(tài)驅(qū)動器及用于處理若干個命令的方法

文檔序號:6349320閱讀:141來源:國知局
專利名稱:存儲器控制器、存儲器系統(tǒng)、固態(tài)驅(qū)動器及用于處理若干個命令的方法
技術(shù)領(lǐng)域
一般來說,本發(fā)明涉及半導(dǎo)體存儲器裝置、方法及系統(tǒng),且更特定來說,涉及存儲器控制器、存儲器系統(tǒng)、固態(tài)驅(qū)動器及用于處理若干個命令的方法。
背景技術(shù)
通常提供存儲器裝置作為計算機或其它電子裝置中的內(nèi)部半導(dǎo)體集成電路。存在包含易失性及非易失性存儲器的許多不同類型的存儲器。易失性存儲器可需要電力來維持其數(shù)據(jù)且包含隨機存取存儲器(RAM)、動態(tài)隨機存取存儲器(DRAM)、同步動態(tài)隨機存取存儲器(SDRAM)以及其它存儲器。非易失性存儲器可通過在不被供電時保留所存儲的信息來提供持久性數(shù)據(jù)且可包含NAND快閃存儲器、NOR快閃存儲器、只讀存儲器(ROM)、電可擦除可編程ROM (EEPROM)、可擦除可編程ROM(EPROM)及相變隨機存取存儲器(PCRAM)以及其它存儲器。存儲器裝置可組合在一起以形成固態(tài)驅(qū)動器(SSD)。SSD可包含非易失性存儲器 (例如,NAND快閃存儲器及NOR快閃存儲器)及/或可包含易失性存儲器(例如,DRAM及 SRAM)以及各種其它類型的非易失性及易失性存儲器。SSD可用以取代硬盤驅(qū)動器作為計算機的主存儲裝置,因為SSD可在性能、大小、 重量、耐用性、操作溫度范圍及功率消耗方面具有優(yōu)于硬驅(qū)動器的優(yōu)點。舉例來說,SSD在與磁盤驅(qū)動器相比時因其缺少移動部件而可具有優(yōu)良性能,缺乏移動部件可改進尋道時間、 等待時間及與磁盤驅(qū)動器相關(guān)聯(lián)的其它機電延遲。SSD制造商可使用非易失性快閃存儲器來形成可不使用內(nèi)部電池電源的快閃SSD,因此允許所述驅(qū)動器更通用且更緊湊。SSD可包含若干個存儲器裝置,例如,若干個存儲器芯片(如本文中所用,“若干個”某物可指一個或一個以上此物;例如,若干個存儲器裝置可指一個或一個以上存儲器裝置)。如所屬領(lǐng)域的技術(shù)人員將了解,存儲器芯片可包含若干個裸片。每一裸片可包含若干個存儲器陣列及其上的外圍電路。存儲器陣列可包含若干個平面,其中每一平面包含若干個物理存儲器單元塊。每一物理塊可包含可存儲若干個數(shù)據(jù)扇區(qū)的若干個頁。存儲器系統(tǒng)(例如,SSD)可并入到計算系統(tǒng)中,所述存儲器系統(tǒng)可通過通信接口 (例如,主要針對主機與大容量存儲裝置(例如,硬盤驅(qū)動器、光學(xué)驅(qū)動器及SSD)之間的命令及數(shù)據(jù)傳送所設(shè)計的串行高級技術(shù)附件(SATA)高速串行總線)通信地耦合到主機。在SSD的操作期間,可使用例如編程命令、讀取命令及擦除命令等命令以及其它命令。舉例來說,編程(例如,寫入)命令可用以將數(shù)據(jù)編程于固態(tài)驅(qū)動器上,讀取命令可用以讀取固態(tài)驅(qū)動器上的數(shù)據(jù),且擦除命令可用以擦除固態(tài)驅(qū)動器上的數(shù)據(jù)。

發(fā)明內(nèi)容


圖1是根據(jù)本發(fā)明的一個或一個以上實施例的計算系統(tǒng)的功能性框圖。圖2是根據(jù)本發(fā)明的一個或一個以上實施例的包含至少一個存儲器系統(tǒng)的計算系統(tǒng)的功能性框圖。圖3是根據(jù)本發(fā)明的一個或一個以上實施例的通信地耦合到若干個存儲器裝置的存儲器系統(tǒng)控制器的功能性框圖。圖4圖解說明根據(jù)本發(fā)明的一個或一個以上實施例的邏輯到物理地址映射。圖5是根據(jù)本發(fā)明的一個或一個以上實施例的前端DMA的命令隊列的功能性框圖。圖6A及圖6B圖解說明根據(jù)本發(fā)明的一個或一個以上實施例的前端DMA的命令隊列的操作。圖7是根據(jù)本發(fā)明的一個或一個以上實施例用于在若干個后端通道當中分配命令的流程圖。圖8是圖解說明根據(jù)本發(fā)明的一個或一個以上實施例在前端與若干個通道之間的接口的功能性框圖。圖9A是根據(jù)本發(fā)明的一個或一個以上實施例實施的直接存儲器存取模塊(DMA) 描述符塊的功能性框圖。圖9B圖解說明根據(jù)本發(fā)明的一個或一個以上實施例實施的圖解說明于圖9A中的 DMA描述符塊(DDB)中的條目。
具體實施例方式本發(fā)明包含存儲器控制器、存儲器系統(tǒng)、固態(tài)驅(qū)動器及用于處理若干個命令的方法。在一個或一個以上實施例中,存儲器控制器包含多個后端通道及通信地耦合到所述多個后端通道的命令隊列。所述命令隊列可經(jīng)配置以保持從主機接收的主機命令。電路經(jīng)配置以至少響應(yīng)于所述命令隊列中的所述主機命令中的若干個主機命令而產(chǎn)生若干個后端命令,且將所述若干個后端命令分配到所述多個后端通道中的若干個后端通道。本發(fā)明還包含用于存儲器控制器的方法及裝置。在一個或一個以上實施例中,一存儲器控制器包含多個后端通道及通信地耦合到所述多個后端通道及命令隊列的前端命令分派器。所述命令分派器可經(jīng)配置以確定待由所述若干個命令實現(xiàn)的對存儲器的凈改變,且修改所述若干個命令中的一者或一者以上以優(yōu)化所述若干個命令在所述多個后端通道當中的分配。本文中的圖遵循其中第一個數(shù)字或前幾個數(shù)字對應(yīng)于圖式圖編號且其余數(shù)字識別圖式中的元件或組件的編號慣例。不同圖之間的類似元件或組件可通過使用類似數(shù)字來識別。舉例來說,在圖1中,104可指代元件“04”,且在圖2中,類似元件可指代為204等。圖1是根據(jù)本發(fā)明的一個或一個以上實施例的計算系統(tǒng)的功能性框圖。圖1的實施例圖解說明計算系統(tǒng)100的一個實施例的組件及架構(gòu)。計算系統(tǒng)100包含存儲器系統(tǒng)104(舉例來說,固態(tài)驅(qū)動器(SSD)),存儲器系統(tǒng)104經(jīng)由接口 106(例如,USB、PCI、 SATA/150、SATA/300或SATA/600接口以及其它接口)通信地耦合到主機(例如,主機102)。SATA設(shè)計為通常稱為并行ATA(PATA)的高級技術(shù)附件(ATA)標準的后繼標準。第一代SATA接口(也稱為SATA/150或非官方地稱為SATA 1)以約每秒1. 5吉位((ib/s)或每秒150兆字節(jié)(MB/s)的速率進行通信。隨后,將3. OGb/s信令速率添加到物理層,從而有效地使最大值(例如,最高數(shù)據(jù)吞吐量)從150MB/S加倍到300MB/S。3. OGb/s規(guī)范還稱為SATA/300或非官方地稱為SATA II或SATA2。SATA/300的傳送速率可暫時滿足磁性硬盤驅(qū)動器吞吐量要求;然而,由于使用多個快速快閃通道的固態(tài)驅(qū)動器可支持高得多的數(shù)據(jù)傳送速率,因此可在支持快閃固態(tài)驅(qū)動器讀取速度時實施甚至更快速的SATA標準(例如, 具有6(ib/s的吞吐量的SATA/600)。主機102可包含若干個單獨的集成電路,或者一個以上組件或功能可位于同一集成電路上。根據(jù)一個或一個以上實施例,主機102可至少部分地作為“母板”而物理地實施于計算系統(tǒng)100中,其中SSD 104物理地實施于單獨的卡上,所述母板與所述SSD經(jīng)由總線通信地耦合。主機102可包含通信地耦合到存儲器與總線控制件107的若干個處理器105 (例如,并行處理器、協(xié)處理器、處理器核心等)。若干個處理器105可為微處理器或某個其它類型的控制電路,例如,專用集成電路(ASIC)。所述計算系統(tǒng)的其它組件也可具有處理器。存儲器與總線控制件107可具有直接通信地耦合到其的存儲器及其它組件,舉例來說,動態(tài)隨機存取存儲器(DRAM) 111、圖形用戶接口 113或其它用戶接口(例如,顯示監(jiān)視器、鍵盤、 鼠標等)O存儲器與總線控制件107還可具有通信地耦合到其的外圍裝置與總線控制件 109,外圍裝置與總線控制件109又可連接到若干個裝置,例如,使用通用串行總線(USB)接口的快閃驅(qū)動器115、非易失性存儲器主機控制接口(NVMHCI)快閃存儲器117或SSD 104。 如讀者將了解,SSD 104可與硬盤驅(qū)動器(HDD) —同或替代硬盤驅(qū)動器(HDD)用于若干個不同計算系統(tǒng)中。圖1中所圖解說明的計算系統(tǒng)100為此系統(tǒng)的一個實例。圖2是根據(jù)本發(fā)明的一個或一個以上實施例的包含至少一個存儲器系統(tǒng)的計算系統(tǒng)的功能性框圖。計算系統(tǒng)200包含通信地耦合到主機202的存儲器系統(tǒng)204(例如, SSD)。SSD 204可經(jīng)由接口 206(例如,電纜、總線,例如,SATA接口)通信地耦合到主機202。 SSD 204可類似于圖1中的固態(tài)驅(qū)動器104。圖2圖解說明固態(tài)驅(qū)動器204的一個或一個以上實施例的組件,包含控制器210、 物理接口 208(例如,連接器)及若干個存儲器裝置212-1、…、212-N,即對應(yīng)于控制器210 的若干個通道的若干個存儲器裝置(例如,對應(yīng)于特定通道的一個或一個以上存儲器裝置)。相應(yīng)地,存儲器裝置212-1、…、212-N在圖式上展示為“通道編號存儲器”。如本文中所用,存儲器裝置可包含共享控制輸入的若干個存儲器單元(例如,裸片、芯片、陣列或其它群組)且可使用若干個存儲器類型(例如,NAND快閃)來制作??刂戚斎胪ǔ?砂刂锋i存啟用(ALE)、芯片啟用(CE)、讀取啟用(RE)、準備就緒/繁忙(R/B)、寫入保護(WP) 及輸入/輸出(I/O)連接(例如,引腳、墊等)。在一個或一個以上實施例中,SSD 204可包含用以包封SSD 204的外殼,但此外殼并非是必需的,舉例來說,主機202及SSD 204兩者可由計算系統(tǒng)外殼包封。接口 206可用以在SSD 204與另一裝置(例如,主機202)之間傳達信息。根據(jù)一個或一個以上實施例,SSD 204可用作計算系統(tǒng)200中的存儲裝置。根據(jù)一個或一個以上實施例,SSD 204可配置為用于計算系統(tǒng)200的外部或便攜式存儲器系統(tǒng),例如,具有插入連接性。
控制器210可與存儲器裝置212-1、…、212-N通信以操作(例如,讀取、編程(即, 寫入)、擦除等)所述存儲器裝置的存儲器單元。控制器210可用以管理與存儲器裝置 212-1、…、212-N的通信及存儲于所述存儲器裝置中的數(shù)據(jù)??刂破?10可具有可為若干個集成電路的電路??刂破?10還可具有也可為若干個離散組件的電路。對于一個或一個以上實施例,控制器210中的電路可包含用于控制跨越若干個通道且跨越若干個存儲器裝置212-1、…、212-N的存取的控制電路。存儲器控制器210可經(jīng)由所述若干個通道與對應(yīng)存儲器裝置選擇性地通信。主機202與SSD 204之間的通信協(xié)議可不同于用于存取存儲器裝置(例如,存儲器裝置212-1、…、212-N)所需的通信協(xié)議。存儲器控制器210可包含經(jīng)配置以將從主機 202接收的命令翻譯成適當命令以實現(xiàn)跨越若干個存儲器裝置212-1、…、212-N的既定操作的控制電路。存儲器控制器210的電路可在主機202與SSD 204之間提供翻譯層。存儲器控制器210還可將主機命令序列、相關(guān)聯(lián)數(shù)據(jù)及其它信息(例如,信號)處理成適當通道命令序列(舉例來說)以存儲及檢索數(shù)據(jù)。存儲器控制器210可在適當時間經(jīng)由去往對應(yīng)存儲器裝置的適當通道選擇性地分配命令、傳達(例如,接收、發(fā)送、傳輸)相關(guān)聯(lián)數(shù)據(jù)及其匕fn息ο根據(jù)本發(fā)明的一個或一個以上實施例,每一存儲器裝置212-1、…、212-N可包含若干個存儲器單元??墒褂酶鞣N類型的易失性或非易失性存儲器陣列(例如,NAND快閃、 DRAM以及其它陣列)來形成存儲器裝置212-1、…、212-N。根據(jù)本發(fā)明的一個或一個以上實施例,存儲器裝置212-1、…、212-N可包含以NAND架構(gòu)、NOR架構(gòu)、AND架構(gòu)或某種其它存儲器陣列架構(gòu)配置的若干個快閃存儲器單元,所有所述架構(gòu)可用于實施本發(fā)明的一個或一個以上實施例。存儲器裝置212-1、…、212-N可包含可經(jīng)配置以提供特定物理或邏輯配置(例如,頁、塊、平面、陣列或其它群組)的若干個存儲器單元。一頁可根據(jù)若干個物理數(shù)據(jù)扇區(qū)存儲數(shù)據(jù)。每一物理扇區(qū)可對應(yīng)于一邏輯扇區(qū)且可包含額外開銷信息,例如,錯誤校正碼 (ECC)信息及邏輯塊地址(LBA)信息以及用戶數(shù)據(jù)。如所屬領(lǐng)域的技術(shù)人員將了解,邏輯塊尋址是通常由主機用于識別邏輯信息扇區(qū)的方案。作為一實例,一邏輯扇區(qū)可存儲表示若干個數(shù)據(jù)字節(jié)(例如,256個字節(jié)、512個字節(jié)或1,OM個字節(jié))的信息。如本文中所用, 一頁是指一編程及/或讀取單位,例如可一起或作為一功能性群組編程及/或讀取的若干個單元或其上存儲的若干數(shù)據(jù)部分。舉例來說,一些存儲器陣列可包含若干個頁,所述若干個頁組成一存儲器單元塊,即,包含可作為一單位一起擦除的存儲器單元的塊,例如,可以大致同時方式擦除每一物理塊中的單元。一存儲器單元平面中可包含若干個塊。一裸片上可包含若干個存儲器單元平面。一陣列可包含若干個裸片。以實例且并非限定方式,U8GB 存儲器裝置可包含每頁4314個數(shù)據(jù)字節(jié)、每塊1 個頁、每平面2048個塊及每裝置16個平面。然而,實施例并不限于此實例。每一存儲器裝置212-1、…、212-N可包含各種類型的易失性及非易失性存儲器陣列,例如,快閃及DRAM陣列以及其它陣列。在一個或一個以上實施例中,存儲器裝置 212-1、…、212-N可為固態(tài)存儲器陣列。存儲器裝置212-1、…、212-N可包含可聚集成若干單位的若干個存儲器單元。如本文中所用,一單位可包含若干個存儲器單元,例如,頁、物理塊、平面、整個陣列或其它存儲器單元群組。舉例來說,一存儲器裝置可為一存儲器陣列且包含若干個平面,其中每一平面包含若干個物理塊。每一物理塊中的存儲器單元可作為一單位一起擦除,例如,可以大致同時方式擦除每一物理塊中的單元。舉例來說,可在一單個操作中一起擦除每一物理塊中的單元。一物理塊可包含若干個頁。每一頁中的存儲器單元可作為一單位一起編程,例如,可以大致同時方式編程每一頁中的單元。每一頁中的存儲器單元還可作為一單位一起讀取。存儲器系統(tǒng)的物理扇區(qū)可對應(yīng)于邏輯扇區(qū)且可包含額外開銷信息,例如,錯誤校正碼(ECC)信息及邏輯塊地址(LBA)信息以及用戶數(shù)據(jù)。如所屬領(lǐng)域的技術(shù)人員將了解, 邏輯塊尋址是通常由主機用于識別邏輯信息扇區(qū)的方案。作為一實例,每一物理扇區(qū)可存儲表示若干個數(shù)據(jù)字節(jié)(例如,256個字節(jié)、512個字節(jié)或1,024個字節(jié)以及其它數(shù)目個字節(jié))的信息。然而,本發(fā)明的實施例并不限于存儲于物理扇區(qū)中或與邏輯扇區(qū)相關(guān)聯(lián)的特定數(shù)據(jù)字節(jié)數(shù)目。圖3是根據(jù)本發(fā)明的一個或一個以上實施例的通信地耦合到若干個存儲器裝置的存儲器系統(tǒng)控制器的功能性框圖。如圖3中所示,存儲器控制器310可通信地耦合到若干個(例如,8個)存儲器裝置(例如,312-1、…、312-N)。在一個或一個以上實施例中, 所述存儲器裝置可為圖2中以212-1、…、212-N展示的存儲器裝置。每一存儲器裝置(例如,312-1、…、312-N)對應(yīng)于控制器310的通道(例如,350-1、…、350-N)。如本文中所用,存儲器裝置可包含共享控制輸入的若干個存儲器單元,如先前所論述。在一個或一個以上實施例中,存儲器控制器310可為SSD控制器。在一個或一個以上實施例中,存儲器控制器310可類似于圖2中所示的控制器210。每一存儲器裝置(例如,312-1、…、312-N)可如先前關(guān)于存儲器裝置212_1、…、 212-N所描述組織且可制作于個別裸片上或可制作于堆疊式裸片上。每一裸片可包含若干個存儲器單元陣列。存儲器控制器310可包含前端部分344及后端部分346??刂破?10 可在前端344中處理命令及數(shù)據(jù),例如,(例如)通過減少傳輸?shù)胶蠖瞬糠?46上的命令的數(shù)量來優(yōu)化所述若干個命令在多個后端通道當中的分配)??刂破?10可進一步在后端通道中的每一者中處理命令及數(shù)據(jù)以實現(xiàn)關(guān)于特定通道的存儲器操作的額外效率。以此方式,控制器310管理與存儲器裝置312-1、…、312-N的通信。如圖3中所示,前端部分344可包含通信地耦合到應(yīng)用層320的任務(wù)文件315及主機緩沖器322(例如,F(xiàn)IFO)的主機接口 314。舉例來說,主機接口 314可經(jīng)配置以經(jīng)由SSD 上的物理接口(例如,圖2中的208)及SATA接口(例如,圖2中的206)與主機(例如,圖 2中的20 傳達輸入及輸出信息(例如,數(shù)據(jù)流)。根據(jù)一個或一個以上實施例,可將命令 (包含命令參數(shù))(例如,輸入信息的命令部分)引導(dǎo)到任務(wù)文件315且可將相關(guān)聯(lián)有效負載(例如,輸入信息的數(shù)據(jù)部分)引導(dǎo)到主機FIFO 322。任務(wù)文件315可為一個深隊列且可經(jīng)由命令處理器與分派器318(下文中稱為“命令分派器”)而與前端直接存儲器存取模塊(DMA) 316通信。命令分派器318經(jīng)配置(例如, 包含硬件)以使得其可在命令從主機到達之后即刻對照某些準則檢查任務(wù)文件315中的命令(例如,完整性檢查),且一旦關(guān)于所述準則通過檢驗,即可接受到達的命令且可將其從任務(wù)文件315分配到前端DMA 316及適當?shù)暮蠖送ǖ?。已使用固件?zhí)行用以完整性檢查的先前方法;然而,在硬件中執(zhí)行主機命令完整性檢查更快速,從而通過命令分派器318導(dǎo)致主機命令處理速度的增加。
主機FIFO 322可通信地耦合到具有若干個加密引擎(例如,實施AES算法的加密引擎)的加密裝置324。加密裝置3M可經(jīng)配置以處理(例如,加密)與特定命令相關(guān)聯(lián)的有效負載且將所述有效負載傳輸?shù)角岸薉MA 316??稍?008年12月12日提出申請的標題為“并行加密/解密(Parallel Encryption/Decryption),,的具有至少一個共同發(fā)明人且具有代理人檔案號1002. 0400001的第12/333,822號共同轉(zhuǎn)讓美國專利申請案中找到關(guān)于加密裝置324的操作的額外細節(jié)。前端部分344還可具有若干個其它處理器330,其可包含前端處理器(FEP) 328、存儲器336(例如,RAM、ROM)、DMA 332及主緩沖器334。舉例來說,若干個處理器330可通過通信總線通信地耦合到前端DMA 316。前端DMA 316可包含包括相關(guān)聯(lián)寄存器的DMA描述符塊(DDB)與寄存器340以用于含有若干個數(shù)據(jù)字。前端DMA 316還可包含仲裁器342以用于在通信地耦合到其的若干個通道之間進行仲裁。加密裝置3 還可通信地耦合到FEP 328。FEP 3 還可直接通信地耦合到主機FIFO 322及前端DMA 316。前端DMA 316可通信地耦合到命令分派器318??刂破?10可包含對應(yīng)于若干個存儲器裝置(例如,312-1、…、312-N)的若干個通道(例如,1、…、N)。所述若干個通道與所述若干個存儲器裝置之間的關(guān)系在本文中描述且在圖中展示為一對一關(guān)系;然而,本發(fā)明的實施例并不限于此,且本發(fā)明涵蓋其它配置(例如,多個存儲器裝置對應(yīng)于特定通道、特定存儲器裝置對應(yīng)于多個通道或其組合)。前端DMA 316及命令分派器318有效地將前端 344電路通信地耦合到后端電路346(例如,后端通道1 (350-1)、…、后端通道N(350_N))。 根據(jù)本發(fā)明的一個或一個以上實施例,控制器310包含8個通道(例如,1、…、8)。本發(fā)明的實施例并不限于具有8個通道的控制器,因此,控制器可經(jīng)實施而具有大于或小于8的數(shù)量的通道?,F(xiàn)在參考控制器310的后端部分346,后端部分346包含若干個通道(例如, 350-1、…、350-N)。每一后端通道可包含一通道處理器(例如,356-1、…、356-N)及相關(guān)聯(lián)通道DMA(例如,3M-1、…、3M-N),所述相關(guān)聯(lián)通道DMA中的每一者可通信地耦合到前端DMA 316。命令分派器318可經(jīng)配置以經(jīng)由通道命令隊列(例如,355-1、…、355-N)將命令分配到相應(yīng)通道處理器(例如,356-1、…、356-N)。在一個或一個以上實施例中,通道命令隊列(例如,355-1、…、355-N)可保持從命令分派器318接收的若干個命令。前端DMA 316可經(jīng)配置以將與特定命令相關(guān)聯(lián)的數(shù)據(jù)分配到對應(yīng)通道DMA (例如, 354-1, ->354-N)0通道DMA (例如,3M-1、…、354-N)可通信地耦合到通道緩沖器(例如,358-1、…、358-N),所述通道緩沖器又可通信地耦合到錯誤校正碼(ECC)與存儲器接口模塊(例如,360-1、…、360-N)。通道處理器(例如,356-1、…、356-N)還可通信地耦合到 ECC/存儲器接口 (例如,360-1、...、360-N)、通道 DMA (例如,354-1、-,354-N)及通道緩沖器(例如,358-1、…、358-N)。雖然圖3中所示的實施例將每一后端通道350-1、…、350-N圖解說明為包含后端通道處理器(例如,356-1、…、356-N),但本發(fā)明的實施例并不限于此。舉例來說,后端部分346可包含例如共享后端處理器的電路,其包含(例如)例如可對若干個后端通道(例如,350-1、…、350-N)進行操作的專用集成電路(ASIC)的硬件邏輯。因此,所述共享后端處理器可經(jīng)通信地耦合以與類似于針對專用通道處理器(例如,356-1、…、356-N)所描述的命令分派器及前端DMA的命令分派器318及前端DMA 316通信。如圖3中所示,特定存儲器裝置(例如,312-1、…、312-N)對應(yīng)于每一通道(例如,350-1、…、350-N)以使得對所述特定存儲器裝置的存取可經(jīng)由所述對應(yīng)通道進行。主機接口 314可為控制器310與主機之間的通信接口。在一個或一個以上實施例中,在主機與控制器之間傳達的信息可包含若干個命令,例如,編程(例如,寫入)命令、讀取命令、擦除命令。所述命令可用以操作相關(guān)聯(lián)存儲器裝置。命令分派器318可經(jīng)由主機接口 314及應(yīng)用層320從主機(例如,圖2中的202) 接收若干個命令。命令分派器318可保持所接收的命令且可將命令分配到若干個相應(yīng)后端通道(例如,350-1、…、350-N)的相應(yīng)通道命令隊列(例如,355-1、…、355-N)及前端DMA 316。有效負載可與命令相關(guān)聯(lián)。舉例來說,針對向存儲器寫入的命令,相關(guān)聯(lián)有效負載可為待寫入的數(shù)據(jù)。可經(jīng)由主機FIFO 322及AES 3 在前端DMA 316處接收與特定命令相關(guān)聯(lián)的有效負載。前端DMA 316可將與命令分派器318中的特定命令相關(guān)聯(lián)的數(shù)據(jù)分配到通道DMA (例如,3M-1、->354-N)或直接分配到對應(yīng)通道緩沖器(例如,358-1、…、 358-N)。通道DMA(例如,3M-1、…、3M-N)可將與特定命令相關(guān)聯(lián)的數(shù)據(jù)分配到對應(yīng)通道緩沖器(例如,358-1、…、358-N)。在一個或一個以上實施例中,通道緩沖器(例如,358-1、…、358-N)可保持對應(yīng)于若干個命令的數(shù)據(jù),所述數(shù)據(jù)是經(jīng)由通道DMA(例如, 354-1, ->354-N)而從前端DMA 316接收的。在一個或一個以上實施例中,從主機(例如,圖2中的202)傳達到控制器318的命令分派器318的信息可包含若干個命令,例如,編程命令、讀取命令及擦除命令以及其它命令。編程命令可用以將數(shù)據(jù)寫入到存儲器(例如,存儲器裝置312-1、…、312-N),讀取命令可用以從存儲器讀取數(shù)據(jù)且擦除命令可用以擦除所述存儲器的一部分。所述命令可指示操作的類型(例如,編程、讀取、擦除)連同開始位置(例如,LBA)及所述存儲器操作中所涉及的存儲器的數(shù)量(例如,邏輯扇區(qū)的數(shù)目)。在一個或一個以上實施例中,LBA可與主機的邏輯扇區(qū)相關(guān)聯(lián),例如,主機的每一邏輯扇區(qū)可與特定LBA相關(guān)聯(lián)。舉例來說,LBA 1000可與第一邏輯扇區(qū)相關(guān)聯(lián),LBA1001可與第二邏輯扇區(qū)相關(guān)聯(lián),LBA 1002可與第三邏輯扇區(qū)相關(guān)聯(lián)等。作為另一實例,編程陣列中對應(yīng)于開始于LBA 1000處的16個邏輯數(shù)據(jù)扇區(qū)的存儲器單元的命令可編程與LBA 1000 到1015相關(guān)聯(lián)的存儲器單元,例如,對應(yīng)于與LBA 1000到1015相關(guān)聯(lián)的邏輯數(shù)據(jù)扇區(qū)的存儲器單元。因此,存儲器陣列中的每一邏輯數(shù)據(jù)扇區(qū)可由特定LBA指代。LBA可由后端 346映射到與特定存儲器塊相關(guān)聯(lián)的物理地址(例如,特定存儲器塊的開始地址),或LBA 可被映射到與存儲器塊內(nèi)的特定扇區(qū)相關(guān)聯(lián)的物理地址(例如,特定存儲器扇區(qū)的開始地址)。圖4圖解說明根據(jù)本發(fā)明的一個或一個以上實施例實施的邏輯到物理地址映射。 地址映射461圖解說明存儲器裝置(例如,312-1、…、312-N)的LBA與物理塊地址(PBA) 之間的相關(guān)性。舉例來說,LBA 1(462-1)對應(yīng)于PBA A (464-1), LBA 2(462-2)對應(yīng)于PBA B (464-2),LBA 3 (462-3)對應(yīng)于 PBA C (464-3),LBA 4 (462-4)對應(yīng)于 PBA D (464-4),…, 且 LBA M(462-M)對應(yīng)于 PBA M(464-M)。接收命令
根據(jù)本發(fā)明的一個或一個以上實施例,前端DMA(例如,圖3中的316)可包含命令隊列386。前端DMA(例如,圖3中的316)可保持經(jīng)由應(yīng)用層320及命令分派器318從主機接收的若干個命令。命令分派器318可處理所述命令且將命令分配到前端DMA316及若干個適當后端通道(例如,圖3中的350-1、…、350-N)。由命令分派器(例如,圖3中的 318)執(zhí)行的操作可在硬件、軟件或其組合中實施。命令分派器(例如,圖3中的318)可包含命令處理器部分及分派器部分。所述命令處理器部分及分派器部分可為離散硬件模塊, 或相應(yīng)功能可以集成方式由控制電路實施。在從主機接收到命令(下文中稱為“主機命令”)之后,所述命令分派器(例如,圖 3中的318)的命令處理器部分可即刻檢查所述主機命令的完整性且接著將所述主機命令向前傳遞到所述命令分派器的分派器部分。根據(jù)本發(fā)明的一個或一個以上實施例,所述命令分派器(例如,圖3中的318)的命令處理器部分可經(jīng)配置以檢查命令以找出可接受LBA 范圍且找出有效標簽以及進行其它完整性測試。所述分派器部分可將所述主機命令分配到前端DMA 316及若干個適當后端通道 (例如,圖3中的350-1、…、350-N),且向應(yīng)用層320指示所述命令的完成狀態(tài)(例如,其是否已被接受及處理),可將所述完成狀態(tài)傳達到主機以指示可發(fā)送下一主機命令。在硬件中實施命令分派器的功能性可減少主機命令處理時間,例如,在從主機接收到主機命令之后用以處理所述命令且傳達(例如,傳輸或發(fā)送)命令完成狀態(tài)的指示符的時間。可通過減少在主機與存儲器系統(tǒng)之間傳達的主機命令之間的處理時間來增加存儲器系統(tǒng)吞吐量。圖5是根據(jù)本發(fā)明的一個或一個以上實施例的前端DMA的命令隊列的框圖。命令隊列586具有保持數(shù)量C個命令的容量,例如,所述命令隊列可具有若干個命令時隙,每一命令時隙能夠保持一命令。如圖5中所示,命令隊列586包含若干個命令時隙,例如,命令時隙1 (587-1)、命令時隙2(587- 、…、命令時隙C(587-C)。舉例來說,在一個或一個以上實施例中,前端DMA(例如,圖3中的316)可包含具有存儲32個命令的容量的若干個命令隊列386 ;然而,本發(fā)明的實施例并不限于特定命令時隙數(shù)目、命令隊列容量或可由命令分派器同時處理的命令數(shù)目。在一個或一個以上實施例中,前端DMA(例如,圖3中的316)可以初始次序從主機接收主機命令。若干個命令隊列386可以所述初始次序保持所述若干個主機命令,例如,以從主機接收所述主機命令的次序。命令隊列386可一次保持有限數(shù)目個命令;因此,命令分派器經(jīng)配置以用信號通知主機命令隊列386何時已達到其容量且暫時不能夠從主機接收其它主機命令。在一個或一個以上實施例中,命令分派器(例如,圖3中的318)可處理保持于任務(wù)文件315中的主機命令且可將其分配到前端DMA 316中的命令隊列386。接著,命令分派器318可將來自命令隊列386的主機命令以其被接收及排隊于命令隊列386中的次序(例如,以將執(zhí)行主機命令的次序、以可分配主機命令的次序、以前述次序的組合)或根據(jù)某個其它適當排序方案分配到后端通道。在一個或一個以上實施例中,所述命令分派器的命令處理器部分經(jīng)配置以確定是否可修改保持于命令隊列386中的命令,(例如)以優(yōu)化若干個命令在多個后端通道當中的分配且個別地或作為一群組修改主機命令。修改命令以使分配經(jīng)濟化可包含(舉例來說) 將命令組合到鄰近存儲器位置及/或刪除在未從鄰近存儲器位置讀取的情況下隨后被蓋寫的命令,以便發(fā)送較少的命令來實現(xiàn)對用于寫入操作的存儲器的相同凈改變或?qū)崿F(xiàn)從用于讀取操作的存儲器的相同凈讀取,借此節(jié)省時間、處理資源及/或通信帶寬以及其它目的。如本文中所用,命令可包含主機命令、已修改的主機命令及其它類型的命令。命令處理器部分可分析并修改命令隊列386中的命令以更高效地將命令分配到相應(yīng)通道、使個別命令更高效、改進存儲器系統(tǒng)的可靠性、改進存儲器系統(tǒng)的性能、減少存儲器系統(tǒng)的耗損或改進命令在相應(yīng)后端通道當中的質(zhì)量、效率或流動。舉例來說,命令處理器部分可重新排序命令群組內(nèi)的命令、通過將多個命令聚集成一個或一個以上命令來組合(例如,合并)命令或確定將不執(zhí)行特定命令(例如,當可確定后續(xù)命令將修改特定存儲器位置處的數(shù)據(jù)時)以及其它命令優(yōu)化技術(shù)。在一個或一個以上實施例中,前端處理器(FEP)3^也可執(zhí)行這些任務(wù)且做出這些確定。圖6A及圖6B圖解說明根據(jù)本發(fā)明的一個或一個以上實施例的前端DMA的命令隊列的操作。根據(jù)一個或一個以上實施例,命令分派器(例如,圖3中的318)及/或FEP(例如,圖3中的328)可確定是否可修改保持于前端DMA(例如,圖3中的386)的命令隊列中的命令,且所述命令分派器可經(jīng)配置以按既定促進控制器的前端(例如,圖3中的344)的命令吞吐量的方式修改所述命令。為了增加命令吞吐量,在一個或一個以上實施例中,命令分派器318或FEP 3 處理主機命令以僅在后端通道為繁忙時(例如,當相關(guān)聯(lián)通道緩沖器為滿時)增加吞吐量。當所述后端通道為繁忙時(例如,當相關(guān)聯(lián)通道緩沖器(例如,分別為358-1、…、358-N)為滿時),可防止控制器的前端部分將命令分配到所述后端通道。在所述后端通道中的若干個后端通道能夠且愿意接受額外命令的條件下,不應(yīng)由所述命令分派器延遲命令以實現(xiàn)進一步優(yōu)化處理,因為騰空命令隊列686A/B的延遲會延遲命令隊列686A/B中的主機命令的完成,此又延遲額外命令從主機的傳送,且命令的進一步優(yōu)化可在不導(dǎo)致將命令分配到其它后端通道的延遲的情況下發(fā)生于相應(yīng)通道命令隊列中(或許以甚至更大的效率)??稍跇祟}為“修改命令(Modifying Commands)”的具有至少一個共同發(fā)明人且具有代理人檔案號 1002. 0430001的第12/351,206號共同轉(zhuǎn)讓美國專利申請案中找到關(guān)于后端通道的操作的額外細節(jié)。在一個或一個以上實施例中,命令隊列686A可類似于關(guān)于圖3所論述的命令隊列386。命令隊列686A包含若干個(例如,C個)命令時隙,例如,687_1Α、687-2Α、687_3Α、 687-4Α、687-5Α、687-6Α、687-7Α、687-8Α、…、687-CA。C個命令時隙中的每一者可經(jīng)配置以暫時存儲一命令(例如,主機命令)。舉例來說,命令時隙687-1Α可存儲第一命令,命令時隙687-2Α可存儲第二命令,等等。在下文關(guān)于前端命令分派器處理命令隊列686Α中的命令所論述且在圖6Α中所圖解說明的實例中,命令時隙1(例如,687-1Α)中的命令可為將數(shù)據(jù)編程(例如,寫入)到存儲器裝置中涉及開始于LBA 1000處的16個邏輯扇區(qū)的存儲器單元的命令。命令時隙2(例如,687-2Α)中的命令可為從所述存儲器裝置中涉及開始于LBA 2000處的4個邏輯扇區(qū)的存儲器單元讀取數(shù)據(jù)的命令。命令時隙3(例如,687-3Α)中的命令可為將數(shù)據(jù)編程到所述存儲器裝置中涉及開始于LBA 1000處的48個邏輯數(shù)據(jù)扇區(qū)的存儲器單元中的命令。命令時隙4(例如,687-4Α)中的命令可為讀取存儲器裝置中涉及開始于LBA 2002處的10個邏輯數(shù)據(jù)扇區(qū)的存儲器單元中的數(shù)據(jù)的命令。命令時隙5(例如,687-5Α)中的命令可為讀取所述存儲器裝置中涉及開始于LBA 2000處的16個邏輯數(shù)據(jù)扇區(qū)的存儲器單元的命令。命令時隙6(例如,687-6A)中的命令可為編程所述存儲器裝置中涉及開始于LBA 1040處的 16個邏輯數(shù)據(jù)扇區(qū)的存儲器單元的命令。命令時隙7(例如,687-7A)中的命令可為編程所述存儲器裝置中涉及開始于LBA 3000處的2個邏輯數(shù)據(jù)扇區(qū)的存儲器單元的命令。命令時隙8(例如,687-8A)中的命令可為編程所述存儲器裝置中涉及開始于LBA 3002處的2個邏輯數(shù)據(jù)扇區(qū)的存儲器單元的命令。在任一特定時間保持于命令隊列686A中的命令可與一個存儲器裝置相關(guān)聯(lián)(例如,全部對應(yīng)于同一通道)或可與若干個不同存儲器裝置相關(guān)聯(lián)(例如,對應(yīng)于多個通道)。 根據(jù)物理存儲器關(guān)于每一通道的量及劃分(如由邏輯到物理地址映射(例如,圖4中的地址映射461)所映射),可從LBA確定命令與其相關(guān)聯(lián)的特定通道。舉例來說,物理塊地址可包含通道識別信息??筛鶕?jù)本發(fā)明的一個或一個以上實施例修改保持于命令隊列686A中的命令。舉例來說,可將命令時隙687-1、687-3及687-6中的命令組合成編程涉及開始于LBA 1000處的56個邏輯扇區(qū)的存儲器單元的單個命令。因此,命令分派器可經(jīng)配置以確定至少兩個命令是針對同一操作(例如,寫入操作)但涉及邏輯上鄰近的存儲器位置。所述命令分派器可通過將所述至少兩個命令組合成涉及所述邏輯上鄰近的存儲器位置的組合的單個命令來優(yōu)化命令到后端通道的分配。在所述邏輯上鄰近的存儲器位置與單個通道相關(guān)聯(lián)的情況下,經(jīng)組合的命令最高效。圖6B圖解說明在已根據(jù)本發(fā)明的一個或一個以上實施例修改圖6A中所示的命令之后的通道命令隊列686B的框圖。如圖6B中所示,保持于通道命令時隙687-1B中的命令 1是編程陣列中對應(yīng)于主機的開始于LBA 1000處的56個邏輯扇區(qū)的存儲器單元的命令。 保持于通道命令時隙687-2B中的命令2是讀取所述陣列中對應(yīng)于所述主機的開始于LBA 2000處的16個邏輯扇區(qū)的存儲器單元的命令,且保持于通道命令時隙687- 中的命令3 是編程所述陣列中對應(yīng)于所述主機的開始于LBA 3000處的4個邏輯扇區(qū)的存儲器單元的命令。所述命令分派器還可經(jīng)配置以確定至少兩個命令是針對同一操作(例如,寫入操作)但涉及邏輯上重疊的存儲器位置,例如,涉及一個命令的存儲器位置包含涉及同一類型的另一命令的存儲器位置的至少一部分。所述命令分派器可通過將所述至少兩個命令組合成涉及所述邏輯上重疊的存儲器位置的組合的單個命令來優(yōu)化命令到后端通道的分配。其它命令修改可為可能的。舉例來說,在命令處理器部分可確定命令隊列686A中涉及特定存儲器位置(例如,LBA)的第一命令可在將蓋寫所述特定存儲器位置的第二命令之前執(zhí)行的情況下,所述命令處理器部分可不將所述第一命令分配(例如,刪除、忽略、不執(zhí)行)到其目的地通道,因為其結(jié)果將僅是暫時的,例如,直到執(zhí)行所述第二命令。可關(guān)于圖6進一步理解上文所提及的實例。假定將在較接近命令隊列686A的底部(例如,命令時隙687-C)的命令之前執(zhí)行較接近命令隊列686A的頂部(例如,命令時隙 687-1)的命令。命令時隙1(例如,687-1A)及命令時隙3 (例如,687-3A)中的命令的LBA 兩者是1000。命令1及命令3兩者是編程操作。由于命令3將編程開始于LBA 1000處的 48個扇區(qū),因此命令3將完全蓋寫作為命令1的結(jié)果而編程于以LBA1000開始的16個扇區(qū)中的無論什么內(nèi)容。存在介入讀取操作(例如,命令幻;然而,命令2不涉及以LBA 1000開始的16個扇區(qū)。因此,不需要分配(例如,刪除、忽略、不執(zhí)行)命令1,借此因不必將命令1傳送到通道而節(jié)省時間且優(yōu)化來自命令隊列686A的命令在多個后端通道當中的分配以及命令隊列686A可接受額外主機命令的速度。其它命令重新排序、組合及刪除可有可能優(yōu)化(例如,經(jīng)濟化)命令隊列686A中所示的命令到若干個后端通道的分配。因此,所述命令分派器可經(jīng)配置以確定待由命令隊列686A中的若干個命令實現(xiàn)的對存儲器的凈改變,且基于所述確定而修改保持于命令隊列686A中的所述若干個命令, 借此優(yōu)化所述若干個命令在多個后端通道當中的分配。所述命令分派器可經(jīng)配置以不分配 (例如,刪除、忽略、不執(zhí)行)來自命令隊列686A的若干個命令中的一者,此發(fā)生于所述命令分派器可依據(jù)在任何給定時間保持于命令隊列686A中的命令確定這樣做將不改變所述若干個命令對存儲器的所確定的凈改變時。舉例來說,所述命令分派器可經(jīng)配置以修改與命令隊列686A中的第一命令相關(guān)聯(lián)的存儲器范圍以包含命令隊列686A中的第二命令的存儲器范圍的一部分,且此后從命令隊列686A刪除所述第二命令而不改變待由所述若干個命令實現(xiàn)的對存儲器的所確定的凈改變。如上所述,命令分派器的分派器部分可將命令(例如,主機命令)分配到若干個適當通道。舉例來說,在與特定命令相關(guān)聯(lián)的有效負載涉及單個通道時,所述分派器部分可將所述特定命令分配到適當通道。對于涉及多個通道的有效負載,所述分派器部分可通過將特定命令分配到多個通道來管理相關(guān)聯(lián)命令的分配,包含其用于操作對應(yīng)于與命令相關(guān)聯(lián)的特定邏輯塊地址及扇區(qū)計數(shù)的相應(yīng)存儲器裝置的通道特有參數(shù)。接著,可剖析與所述命令相關(guān)聯(lián)的有效負載,其若干部分(例如,以循環(huán)方式)在多個通道當中分配。類似地,對于讀取操作,可在多個后端通道當中分配與讀取命令相關(guān)聯(lián)的有效負載,且可將對應(yīng)讀取命令分配到相關(guān)聯(lián)后端通道以從多個通道當中匯編數(shù)據(jù)。舉例來說,每一后端通道可處理R個連續(xù)邏輯塊地址(LBA),但主機命令(S卩,從主機接收的命令)可涉及相對大數(shù)目的扇區(qū)。命令分派器可在若干個后端通道當中以循環(huán)方式分配后端命令,其中每一后端命令模擬主機命令,每一后端命令涉及R個連續(xù)LBA除外。 循環(huán)過程繼續(xù)直到主機命令的所有扇區(qū)以R大小的“大塊”分配于所述后端通道當中為止。為進一步圖解說明,考慮以下數(shù)值實例,其中主機命令為寫入1 個數(shù)據(jù)扇區(qū),其中存在4個后端通道且其中每一后端通道可處理8個連續(xù)LBA。為簡單起見,此實例中將忽略存儲器位置偏移。在接收到涉及1 個扇區(qū)的主機寫入命令之后,即刻響應(yīng)于單個主機寫入命令而產(chǎn)生多個后端寫入命令。第一后端寫入命令可涉及去往后端通道1的前8個 LBA,接著,第二后端寫入命令可涉及去往后端通道2的下8個LBA,第三后端寫入命令可涉及去往后端通道3的下8個LBA,第四后端寫入命令可涉及去往后端通道4的下8個LBA。 此循環(huán)處理以所述第一后端寫入命令還涉及去往后端通道1的下8個LBA而繼續(xù),直到所有1 個扇區(qū)分配于4個通道當中為止。因此,每一通道將已接收對應(yīng)于主機寫入命令但匯編為串在一起的8個LBA部分的集合的32個有效負載扇區(qū)。此后,將相應(yīng)寫入命令分配到相應(yīng)后端通道以寫入32個數(shù)據(jù)扇區(qū)。因此,單個主機命令可產(chǎn)生N個后端命令(其中存在N個后端通道),其各自模擬主機命令動作但涉及與所述主機命令相關(guān)聯(lián)的有效負載的大約1/N。每通道僅分配一個命令連同與所述主機命令相關(guān)聯(lián)的有效負載的相應(yīng)部分。本發(fā)明的實施例并不限于此處所述的數(shù)值實例數(shù)量且并不限于寫入命令。所屬領(lǐng)域的技術(shù)人員將理解,其它命令(例如,讀取命令)可因單個主機命令而類似地并行分配于多個通道當中(例如,從若干個后端通道當中讀取數(shù)據(jù))。在一個或一個以上實施例中,可通過將若干個命令組合成單個命令來修改命令隊列686A中的命令以便消除或減少部分頁編程操作,例如,將部分頁一起組合到單個操作中。除通過減少與部分頁編程相關(guān)聯(lián)的耗損來改進存儲器系統(tǒng)的性能及可靠性以外,組合前端命令隊列686A中的命令優(yōu)化若干個命令在多個后端通道當中的分配,因為多個編程命令可減少到較少數(shù)目個命令(例如,單個命令)。通過以下操作來執(zhí)行部分頁編程操作找到自由的新存儲器單元塊、將來自舊塊的頁讀取到數(shù)據(jù)緩沖器中、將新數(shù)據(jù)歸并到所述數(shù)據(jù)緩沖器中、將整個頁(包含經(jīng)歸并的數(shù)據(jù))寫入到新塊中的新存儲器頁、將所述舊塊的所有其它頁移動到新塊且對所述舊塊進行標記以指示其將被擦除。雖然已給出數(shù)個實例以圖解說明用于組合命令(此優(yōu)化若干個命令在多個后端通道當中的分配)的算法,但本發(fā)明的實施例并不限于所提供的實例,且本發(fā)明涵蓋其它優(yōu)化技術(shù),例如涉及在前端處刪除或重新排序命令以減少在多個后端通道當中分配的命令的數(shù)量的那些技術(shù)。在一個或一個以上實施例中,存儲器控制器包含多個后端通道及通信地耦合到所述多個后端通道的命令隊列(例如,圖3中的386)。所述命令隊列(例如,圖3中的386) 可經(jīng)配置以保持從主機接收的主機命令。電路經(jīng)配置以至少響應(yīng)于所述命令隊列(例如, 圖3中的386)中的主機命令中的若干個主機命令而產(chǎn)生若干個后端命令,且將所述若干個后端命令分配到所述多個后端通道中的若干個后端通道。所述若干個后端命令可少于或多于主機命令中的若干個主機命令。舉例來說,在一個或一個以上實施例中,所述電路可經(jīng)配置以響應(yīng)于單個主機命令而產(chǎn)生對應(yīng)于所述多個后端通道中的每一者的后端命令。所述電路可進一步經(jīng)配置以將對應(yīng)后端命令分配到其相應(yīng)后端通道以使得大致并行地處理所述后端命令。在一個或一個以上實施例中,所述電路可經(jīng)配置以在不同的多個后端通道當中分配多個主機命令以便大致同時執(zhí)行所述多個主機命令。產(chǎn)生所述若干個后端命令可包含修改所述若干個主機命令中的至少一者與刪除所述若干個主機命令中的至少另一者的組合。直接存儲器存取模塊(DMA)可經(jīng)配置以分配與對應(yīng)于所產(chǎn)生的若干個后端命令的主機命令相關(guān)聯(lián)的數(shù)據(jù)。在完成相應(yīng)后端命令之后,所述電路可即刻經(jīng)配置以在完成多個后端命令中的特定一者之后即刻將來自執(zhí)行所述多個后端命令中的所述特定一者的結(jié)果傳達到主機,而不顧及所述多個后端命令中的任一其它者的執(zhí)行的完成。圖7是根據(jù)本發(fā)明的一個或一個以上實施例用于在若干個后端通道當中分配命令的流程圖。所述命令分配開始于766處。在767處,可將所分配命令的開始LBA設(shè)定為命令LBA與LBA偏移的和??纱_定(例如,計算)開始通道連同開始通道扇區(qū)計數(shù)、結(jié)束通道、結(jié)束通道扇區(qū)計數(shù)、剩余扇區(qū)計數(shù)及通道開始LBA。在768處,可將命令最初分配到的通道編號設(shè)定為開始通道。接著,在769處,可針對當前通道確定(例如,計算)開始LBA及扇區(qū)計數(shù),且可針對特定當前通道編號斷定所涉及通道狀態(tài)位(例如,irwolvecLch)以指示特定通道涉及特定命令。接下來,在770處,將當前通道的開始LBA及扇區(qū)計數(shù)加載到當前通道的收件箱(下文進一步論述通道收件箱)??稍?71處確定當前通道是否是結(jié)束通道(參見767)。 如果當前通道并非是結(jié)束通道,那么在773處分配過程移動到下一通道(例如,可使當前通道編號遞增)且所述過程在769處繼續(xù)(將當前通道的開始LBA及扇區(qū)計數(shù)加載到當前通道的收件箱)。如果當前通道是結(jié)束通道,那么可在772處將開始通道、通道扇區(qū)計數(shù)及所涉及的通道加載到DMA描述符塊(DDB ;下文進一步論述),且所述過程向后返回到766處以開始下一命令分配。圖8是圖解說明根據(jù)本發(fā)明的一個或一個以上實施例在前端與若干個通道之間的接口的一個實施例的功能性框圖。圖8展示位于存儲器控制器的后端部分846中的若干個通道(例如,850-1、…、850-N),所述通道可類似于圖3中所示的通道350-1、…、350-N; 然而,為清晰起見,在圖8中省略圖3上所示的一些通道細節(jié)以便可更詳細地展示額外結(jié)構(gòu)。圖8還展示位于所述存儲器控制器的前端部分844中的前端DMA 816及前端處理器 828 (FEP)。前端DMA 816可類似于圖3中的前端DMA 316,且FEP擬8可類似于圖3中的 FEP 328。在圖8中,前端DMA 816及FEP擬8分別展示為以下文進一步詳細描述的方式通信地耦合到若干個通道(例如,850-1、…、850-N)中的每一者。每一通道包含通道處理器(例如,856-1、…、856-N)、通道收件箱(例如, 874-1、…、874-N)、通道輸入寄存器(例如,876-1、…、876-N)及通道輸出寄存器(例如, 878-1、…、878-N)。所述通道輸出寄存器及收件箱中的每一者經(jīng)通信地耦合以向FEP 828 提供信息。所述通道收件箱及輸入寄存器中的每一者經(jīng)通信地耦合以從前端DMA 816接收
fn息ο前端肓接存儲器存取(DMA)圖9A是根據(jù)本發(fā)明的一個或一個以上實施例實施的直接存儲器存取模塊(DMA) 描述符塊的功能性框圖。DDB控制主機與后端通道之間的數(shù)據(jù)流動,且發(fā)揮作用以(例如) 相對于保持于命令隊列(例如,圖3中的386)中的命令使用智能決策制定來優(yōu)化系統(tǒng)吞吐量以增加將來自命令隊列(例如,圖3中的386)的命令分配到各種后端通道的效率且借此增加整個命令隊列(例如,圖3中的386)中的命令的速度。對于具有經(jīng)由對應(yīng)通道存取的若干個存儲器裝置(例如,固態(tài)驅(qū)動器)的存儲器系統(tǒng),可將與寫入命令相關(guān)聯(lián)的有效負載編程到若干個通道且可從若干個通道匯編與讀取命令相關(guān)聯(lián)的有效負載。在管理與涉及多個通道的特定命令相關(guān)聯(lián)的有效負載時,DMA在適當通道當中分配數(shù)據(jù)。舉例來說,所述DMA管理將與寫入命令相關(guān)聯(lián)的有效負載分配到若干個通道及從若干個通道匯編與讀取命令相關(guān)聯(lián)的有效負載。所述DMA還通過管理與主機和后端通道之間的多個命令相關(guān)聯(lián)的有效負載來促進多個(包含并行)命令執(zhí)行。當發(fā)出命令時,DDB(例如,圖3中的340)協(xié)調(diào)有效負載到及從N個通道的分配。 舉例來說,在寫入或讀取操作期間,可使用N個通道中的若干個通道??墒紫扔擅罘峙善?(例如,圖3中的318)或前端處理器(FEP)(例如,圖3中的328)更新(例如,加載)所述 DDB,其中DDB標簽可為用于每一主機命令的地址??捎蒄EP或命令分派器設(shè)置所述DDB。 在“無錯誤”條件期間,可沒有必要由I/O處理器的FEP進行進一步管理。圖9A展示具有若干個標簽地址條目(例如,DDB 1、…、DDB 32)的DDB 988的內(nèi)容。每一標簽地址條目含有與設(shè)置990、狀態(tài)992及與數(shù)據(jù)傳送相關(guān)聯(lián)的命令信息994相關(guān)聯(lián)的參數(shù)。根據(jù)本發(fā)明的一個或一個以上實施例,可根據(jù)串行高級技術(shù)附件(SATA)標準實施標簽尋址。因此,DDB條目可確定存取哪個通道、針對特定通道將傳送多少個扇區(qū)及相關(guān)聯(lián)的狀態(tài)以及其它信息。DDB可通過針對不支持多個命令隊列的遺留命令僅使用DDB 1 (例如,經(jīng)由所述DDB —次僅處理一個遺留命令而非在所述DDB中同時管理多個命令)而是向后兼容的。DDB 988中的每一條目具有一標簽,所述標簽可被指派或被暗示。在一個或一個以上實施例中,所述標簽可與條目編號(例如,所述條目在DDB中的物理位置)相同,因此,所述條目在所述DDB中的物理位置暗示所述標簽以使得不需要與每一條目一起存儲實際標簽編號字段。在控制器接收主機命令且其向DDB添加對應(yīng)于所述主機命令的新條目時,每一條目與一標簽相關(guān)聯(lián)且輸出與所述新條目相關(guān)聯(lián)的標簽。如先前所述,所述控制器維持命令隊列(例如,圖3中的386)、接收與所述新條目相關(guān)聯(lián)的標簽、添加對應(yīng)于所述標簽的新命令隊列條目,且輸出范圍操作請求。圖9B圖解說明根據(jù)本發(fā)明的一個或一個以上實施例實施的圖解說明于圖9A中的 DMA描述符塊(DDB)中的條目。圖9B通過類型(例如,設(shè)置、狀態(tài)、信息)、描述、大小(例如,位的數(shù)目)及在條目內(nèi)的位置(例如,位位置)來指示DDB條目的數(shù)據(jù)字段。每一 DDB條目的下一計數(shù)數(shù)據(jù)字段990A (例如,位位置93到96處的“next_Cnt”) 表示針對一個給定通道待傳送的數(shù)據(jù)扇區(qū)的數(shù)目。下一計數(shù)可由命令分派器或FEP初始化以規(guī)定開始通道的第一傳送計數(shù)。下一計數(shù)可由硬件更新以規(guī)定前一通道的傳送計數(shù)。所述更新在當前通道完成其傳送之后但在全部傳送完成之前發(fā)生。如果待傳送的全部扇區(qū)的剩余數(shù)目大于通道可傳送的扇區(qū)的最大量(例如,所述計數(shù)大于每頁的扇區(qū)計數(shù)乘以平面的數(shù)目),那么可用扇區(qū)的所述最大量加載下一計數(shù)。否則,可用待傳送的全部扇區(qū)的剩余數(shù)目加載下一計數(shù)。計數(shù)數(shù)據(jù)字段990B(例如,位位置80到95處的“cnt”)可為針對特定命令的全部傳送計數(shù)。所述計數(shù)可由命令分派器或FEP以總傳送計數(shù)初始化且可由硬件更新以指示待傳送的扇區(qū)的剩余數(shù)目。根據(jù)一個或一個以上實施例,不使用位位置79,例如,將其保留以供將來使用。傳送完成數(shù)據(jù)字段990D (例如,位置78處的“)(C”位)指示所述DMA傳送完成。也就是說,可完成數(shù)據(jù)階段,但可能尚未發(fā)送命令完成狀態(tài)的指示符。一旦通道狀態(tài)(“ch_ status")等于特定值,即可由硬件設(shè)定此位以指示主機命令完成。接著,硬件對命令完成狀態(tài)的指示符的發(fā)送進行調(diào)度。當將所述指示符成功地發(fā)送到主機時,所述硬件操作以在可接收另一主機命令之前清除有效數(shù)據(jù)字段(例如,“V”旗標),如稍后所述。主機錯誤數(shù)據(jù)字段992A(例如,位置77處的“HE”位)可用以指示發(fā)生了錯誤。如果所述錯誤在主機傳送期間發(fā)生,那么可由I/O處理器或主機接口(例如,圖3中的314) 設(shè)定此位??扉W錯誤數(shù)據(jù)字段992B (例如,位置76處的位“FE”)可用以指示發(fā)生了存儲器裝置(例如,NAND快閃)錯誤。有效數(shù)據(jù)字段992C(例如,位置75處的“V”位)可用以指示有效條目??捎擅罘峙善骰騀EP設(shè)定此位(例如,V=I)以指示硬件可存取DDB條目,且所述命令分派器或 FEP可不蓋寫所述條目??稍谕瓿芍鳈C命令且已將指示符成功地發(fā)送到主機之后由硬件將此位清除,或當在處理命令時存在錯誤時可由FEP將其清除(例如,V = O)以指示DDB中的條目可用于從主機接收新命令。
下一通道數(shù)據(jù)字段992D (例如,位位置72到74處的“nxt_Ch” )是指將發(fā)生傳送的通道。此字段可由命令分派器或FEP初始化以規(guī)定用于傳送的開始通道且可由硬件更新以規(guī)定用于傳送的下一通道。當先前通道完成傳送所述通道可處理的所有連續(xù)LBA時發(fā)生更新。針對特定命令的扇區(qū)計數(shù)可能尚未達到零,因為可存在待針對所述特定命令傳送的剩余扇區(qū),包含作為循環(huán)分配的一部分的針對所述通道的額外回合,如上所述。對于一個通道,當不存在待針對所述特定命令傳送的剩余扇區(qū)(例如,循環(huán)序列中向其分配有效負載的最后一個通道)時,針對所述特定命令的扇區(qū)計數(shù)將到達零。現(xiàn)用通道數(shù)據(jù)字段992E (例如,位位置64到71處的“active_ch”)可為N位信號 (例如,對應(yīng)于8個通道的8個位),其中每一位表示其相應(yīng)通道的完成狀態(tài)。在傳送發(fā)生之前,可設(shè)定對應(yīng)于每一所涉及通道的位。接著,一旦命令針對所述通道完成,即可對每一位進行復(fù)位。命令信息數(shù)據(jù)字段994 (例如,位位置0到63處的“CMD_info” )可包括來自幀信息結(jié)構(gòu)(FIS)寄存器的四個字,包含命令、優(yōu)先級位、FUA位、LBA及扇區(qū)計數(shù)。雖然以上實例中描述了特定數(shù)據(jù)字段大小(例如,一個位)及數(shù)據(jù)字段位置,但本發(fā)明的實施例并不限于包含每一如此描述字段的那些字段或特定數(shù)據(jù)字段大小或位置且可包含額外或替代字段。當命令分派器正更新DDB時,輸入信號(例如,“xfer_TAG”)變成所述DDB的地址指針且更新信號(例如,“update_ddb_en”)變成寫入啟用。仲裁器(例如,圖3中的34 可為確定在特定時間可存取哪個通道的循環(huán)仲裁器。所述仲裁器搜索下一可用通道。所述仲裁器步進經(jīng)過所述通道,從而嘗試使選定的可用通道編號與特定DDB條目中的下一通道匹配。如果所述可用通道不匹配DDB條目,那么仲裁器繼續(xù)以循環(huán)方式重復(fù)(如果必要的話)直到可找到選定的可用通道編號與特定DDB 條目中的下一通道之間的匹配為止。一旦找到匹配,所述仲裁器即起始通信協(xié)議以開始傳送。在傳送完成時,可用信號通知完成協(xié)議,更新DDB條目中的通道信息且所述仲裁器搜索下一可用通道。特定標簽條目的現(xiàn)用通道字段992E (例如,寄存器)的N個位中的每一者對應(yīng)于N 個通道中的相應(yīng)一者。一旦通道可被視為可用于特定主機命令,即可設(shè)定與所述通道相關(guān)聯(lián)的位。當通道完成針對給定主機命令向所述特定通道的傳送時,可設(shè)定所述通道的命令完成狀態(tài),此又可對DDB條目的現(xiàn)用通道字段中的相應(yīng)位進行復(fù)位。一旦對所述現(xiàn)用通道的所有位進行復(fù)位,即可向應(yīng)用層發(fā)出主機命令的“完成”狀態(tài)的指示符。接著,所述應(yīng)用層可將主機命令的“完成”狀態(tài)的指示符發(fā)送到主機??稍谕瓿伤鲋鳈C命令且已將所述 “完成”狀態(tài)的指示符成功地發(fā)送到所述主機之后由硬件將條目的有效位清除(例如,V = 0),或可(舉例來說)當在處理所述命令時存在錯誤時由FEP將其清除以指示DDB中的條目可用于從主機接收新命令。命令完成是基于后端通道指示所請求傳送完成。根據(jù)本發(fā)明的一個或一個以上實施例,在跨越多個通道同時執(zhí)行與多個命令相關(guān)聯(lián)的讀取操作期間,數(shù)據(jù)一準備就緒,DMA 即將所述數(shù)據(jù)從所述通道中的任一者傳輸?shù)街鳈C,而不管從所述主機接收所述命令的次序如何??赏ㄟ^以由每一后端通道已至少部分地完成命令的次序而非以接收或起始所述命令的次序執(zhí)行所述命令(例如,將從存儲器裝置讀取的數(shù)據(jù)傳送回到主機)來實質(zhì)上增加存儲器系統(tǒng)數(shù)據(jù)吞吐量。
舉例來說,可由存儲器系統(tǒng)從主機接收第一讀取命令且可起始由所述存儲器系統(tǒng)進行的執(zhí)行,之后由所述存儲器系統(tǒng)從所述主機接收第二讀取命令且起始由所述存儲器系統(tǒng)進行的所述第二讀取命令的執(zhí)行。然而,可首先完成所述第二讀取命令。根據(jù)一個或一個以上實施例,可在可將由所述第一讀取命令產(chǎn)生的數(shù)據(jù)返回到主機之前將由所述第二讀取命令產(chǎn)生的數(shù)據(jù)返回到主機,而非等待所述第一讀取命令的完成以便可首先將其數(shù)據(jù)返回到所述主機。舉另一實例來說,可由存儲器系統(tǒng)從主機接收第一讀取命令,之后由所述存儲器系統(tǒng)從所述主機接收第二讀取命令。然而,為提高效率,存儲器系統(tǒng)可重新排序所述命令 (例如,以先前所述的方式)且在執(zhí)行第一讀取命令之前執(zhí)行第二讀取命令,此導(dǎo)致所述第二讀取命令在所述第一讀取命令之前完成。根據(jù)一個或一個以上實施例,可在完成所述第二讀取命令時將由所述第二讀取命令產(chǎn)生的數(shù)據(jù)返回到主機(其可在可將由第一讀取命令產(chǎn)生的數(shù)據(jù)返回到所述主機之前),而非等待第一讀取命令的完成。在操作多個存儲器裝置時,可跨越不同通道分配與單個命令相關(guān)聯(lián)的有效負載 (其若干部分具有使其彼此相關(guān)的某一順序次序),例如,可將所述有效負載的第一部分存儲于第一存儲器裝置中且可將所述有效負載的第二部分存儲于第二存儲器裝置中等。因此,數(shù)據(jù)(例如,由讀取命令產(chǎn)生的數(shù)據(jù))的若干部分可不按順序次序從不同存儲器裝置 (及相關(guān)聯(lián)通道)返回到控制器的前端,例如,可在可從所述第一存儲器裝置檢索所述第一部分之前從所述第二存儲器裝置檢索所述第二部分。根據(jù)一個或一個以上實施例,當可支持DMA緩沖器偏移時,可不按順序次序(以由相應(yīng)后端通道完成命令的次序而非以所述部分相關(guān)的順序次序)將所述部分傳送回到主機。換句話說,將與單個命令相關(guān)聯(lián)的有效負載的若干個部分存儲(例如,駐存)于固態(tài)驅(qū)動器的數(shù)個存儲器裝置當中。所述有效負載的所述部分在形成所述有效負載時以特定次序彼此相關(guān)。單個讀取命令可用以從數(shù)個存儲器裝置當中匯編所述有效負載,所述讀取命令是相對于特定存儲器位置適當定制的且分配到對應(yīng)于數(shù)個存儲器裝置的數(shù)個通道中的每一者以從數(shù)個存儲器裝置中的每一者接收所述有效負載的相應(yīng)部分。根據(jù)一個或一個以上實施例,所述部分由存儲器系統(tǒng)控制器接收且當其被接收到時以可不同于所述有效負載的所述部分在形成所述有效負載時彼此相關(guān)的特定次序的次序發(fā)送到主機。換句話說, 所述有效負載的所述部分在發(fā)送到所述主機之前不重新匯編成所述有效負載,而是在所述有效負載的若干部分從數(shù)個存儲器裝置當中被接收到所述控制器時發(fā)送所述部分。根據(jù)本發(fā)明的一個或一個以上實施例,在跨越多個通道(例如,到對應(yīng)的多個存儲器裝置)同時執(zhí)行多個命令(例如,寫入命令)的操作期間,DMA可在完成特定命令之后即刻將針對所述命令的命令完成狀態(tài)的指示符發(fā)送到主機,此允許所述主機發(fā)送下一未決命令。在一個或一個以上實施例中,所述多個通道是異步通道,且命令(例如,主機命令) 執(zhí)行可不以與從所述主機接收所述命令(相對于從所述主機接收的其它命令)相同的次序發(fā)生。舉例來說,可由存儲器系統(tǒng)從主機接收第一命令且由所述存儲器系統(tǒng)起始其執(zhí)行,之后由所述存儲器系統(tǒng)從所述主機接收第二命令且由所述存儲器系統(tǒng)起始其執(zhí)行。然而,可由多個后端通道中的若干個后端通道首先完成第二讀取命令。根據(jù)一個或一個以上實施例,可在將所述第一命令的完成狀態(tài)的指示符發(fā)送到主機之前將所述第二命令的完成狀態(tài)的指示符發(fā)送到主機,而非等待所述第一命令的完成以便可在可將所述第二命令的完成狀態(tài)的指示符發(fā)送到所述主機之前將所述第一命令的完成狀態(tài)的指示符發(fā)送到所述主機。舉另一實例來說,(例如)存儲器系統(tǒng)的存儲器控制器從主機接收第一命令,之后由所述存儲器控制器從所述主機接收第二命令。然而,所述存儲器系統(tǒng)重新排序所述命令 (例如,以先前所述的方式)且在執(zhí)行第一命令之前執(zhí)行第二命令,此導(dǎo)致所述第二命令在所述第一命令之前完成。根據(jù)一個或一個以上實施例,可在將所述第一命令的完成狀態(tài)的指示符發(fā)送到所述主機之前將所述第二命令的完成狀態(tài)的指示符發(fā)送到所述主機,而非等待所述第一命令的完成以便可在可將所述第二命令的完成狀態(tài)的指示符發(fā)送到所述主機之前將所述第一命令的完成狀態(tài)的指示符發(fā)送到所述主機。Mrk本發(fā)明包含存儲器控制器、存儲器系統(tǒng)、固態(tài)驅(qū)動器及用于處理若干個命令的方法。在一個或一個以上實施例中,存儲器控制器包含多個后端通道及通信地耦合到所述多個后端通道的命令隊列(例如,圖3中的386)。命令隊列386可經(jīng)配置以保持從主機接收的主機命令。電路經(jīng)配置以至少響應(yīng)于命令隊列386中的主機命令中的若干個主機命令而產(chǎn)生若干個后端命令,且將所述若干個后端命令分配到所述多個后端通道中的若干個后端通道。本發(fā)明還包含用于存儲器控制器的方法及裝置。在一個或一個以上實施例中,存儲器控制器包含多個后端通道及通信地耦合到所述多個后端通道的前端命令分派器。所述命令分派器通信地耦合到經(jīng)配置以緩沖若干個命令的命令隊列(例如,圖3中的386)。所述命令分派器可經(jīng)配置以確定待由所述若干個命令實現(xiàn)的對存儲器的凈改變且基于所述確定而修改所述若干個命令中的至少一者以優(yōu)化所述若干個命令在所述多個后端通道當中的分配。在本發(fā)明的詳細說明中,參考形成本發(fā)明的一部分的隨附圖式,且在隨附圖式中以圖解說明方式展示可如何實踐本發(fā)明的一個或一個以上實施例。足夠詳細地描述這些實施例旨在使所屬領(lǐng)域的技術(shù)人員能夠?qū)嵺`本發(fā)明的實施例,且應(yīng)理解,可利用其它實施例且可在不背離本發(fā)明的范圍的情況下做出過程、電或結(jié)構(gòu)改變。如本文中所用,標示符“N”、“M”及“C”(尤其關(guān)于圖式中的參考編號)指示若干個在本發(fā)明的一個或一個以上實施例的情況下可包含如此標示的特定特征。如將了解,可添加、交換及/或消除本文中的各種實施例中所示的元件以便提供本發(fā)明的若干個額外實施例。另外,如將了解,圖中所提供的元件的比例及相對比例尺打算圖解說明本發(fā)明的實施例且不應(yīng)視為限定意義。將理解,當將第一元件稱為“連接到”另一元件或“與另一元件耦合”時,打算所述元件是物理上附接到所述兩個元件中的另一者。相比之下,當將元件稱為“通信地耦合”時, 所述元件(包含但不限于)通過硬連線或無線信號路徑彼此通信。將理解,當將一元件稱為“在另一元件上”、“連接到另一元件”或“與另一元件耦合”時,所述元件可為直接在另一元件或?qū)由稀⑦B接到另一元件或?qū)踊蚺c另一元件或?qū)玉詈?,或者可存在介入元件或?qū)印O啾戎?,當將一元件稱為“直接在另一元件或?qū)由稀?、“直接連接到另一元件或?qū)印被颉爸苯优c另一元件或?qū)玉詈稀睍r,不存在介入元件或?qū)?。如本文中所用,術(shù)語“及/或”包含所列舉相關(guān)聯(lián)物項中的若干個物項的任何組合及所有組合。將理解,雖然術(shù)語第一、第二等在本文中可用以描述各種元件、組件、區(qū)域、層及/ 或區(qū)段,但這些元件、組件、區(qū)域、布線、層及區(qū)段不應(yīng)受限于這些術(shù)語。這些術(shù)語僅用以區(qū)分一個元件、組件、區(qū)域、布線、層或區(qū)段與另一區(qū)域、層或區(qū)段。因此,在不背離本發(fā)明的教示內(nèi)容的情況下,可將下文所論述的第一元件、組件、區(qū)域、布線、層或區(qū)段稱作第二元件、 組件、區(qū)域、布線、層或區(qū)段。為便于說明,本文中可使用例如“在…下方”、“在…下面”、“下部”、“在…上面”、“上部”等空間相對術(shù)語來描述如圖中所圖解說明的一個元件或特征與另一(些)元件或特征的關(guān)系而非在空間上的絕對定向。將理解,所述空間相對術(shù)語打算囊括除圖中所描繪的定向外的裝置在使用或操作中的不同定向。舉例來說,如果將圖中的裝置翻轉(zhuǎn),那么描述為 “在其它元件或特征下面”或“在其它元件或特征下方”的元件將定向為“在其它元件或特征上面”。因此,實例性術(shù)語“在…下面”可囊括在…上面的定向及在…下面的定向兩者。裝置可按其它方式定向(旋轉(zhuǎn)90度或以其它定向)且可相應(yīng)地解釋本文中所用的空間相對描述語。本文中所用的術(shù)語僅是出于描述特定實施例的目的且并非打算限定本發(fā)明。如本文中所用,單數(shù)形式“一(a)”、“一(an)”及“所述(the) ”打算也包含復(fù)數(shù)形式,除非上下文另有明確指示。將進一步理解,當本說明書中使用術(shù)語“包括(comprises)”及“包括 (comprising)”時,其規(guī)定存在所陳述特征、整數(shù)、步驟、操作、元件或組件,但不排除存在或添加若干個其它特征、整數(shù)、步驟、操作、元件、組件或其群組。除非按其它方式定義,否則本文中所用的所有術(shù)語(包含技術(shù)及科學(xué)術(shù)語)具有與本發(fā)明所屬領(lǐng)域的技術(shù)人員通常理解的意義相同的意義。將進一步理解,應(yīng)將例如在常用的字典中所定義的那些術(shù)語等術(shù)語理解為具有與其在相關(guān)技術(shù)及本發(fā)明的上下文中的意義相一致的意義,且不應(yīng)以理想化或過分形式化的意義來解釋,除非本文中明確如此定義。本文中參考功能性框解說明來描述本發(fā)明的實施例,所述功能性框解說明是本發(fā)明的理想化實施例的示意性說明。因此,預(yù)期所述圖解說明的形狀會因(舉例來說)制造技術(shù)及公差而發(fā)生變化。因此,本發(fā)明的實施例不應(yīng)被解釋為限于本文中所圖解說明的區(qū)域的特定形狀,而是將包含由(舉例來說)制造所產(chǎn)生的形狀偏差。舉例來說,圖解說明或描述為平坦的區(qū)域通??删哂写植诨蚍蔷€性特征。此外,可將所圖解說明的銳角修圓。因此,所述圖中所圖解說明的區(qū)域在本質(zhì)上是示意性的,且其形狀及相對大小、厚度等并非打算圖解說明區(qū)域的精確形狀/大小/厚度且并非打算限定本發(fā)明的范圍。雖然本文中已圖解說明及描述了特定實施例,但所屬領(lǐng)域的技術(shù)人員將了解,旨在實現(xiàn)相同結(jié)果的布置可替代所示的特定實施例。本發(fā)明打算涵蓋本發(fā)明的一個或一個以上實施例的更改或變化形式。應(yīng)理解,已以說明性方式而非限制性方式做出以上說明。在審閱以上說明之后,所屬領(lǐng)域的技術(shù)人員將明了以上實施例的組合及本文中未具體描述的其它實施例。本發(fā)明的一個或一個以上實施例的范圍包含其中使用以上結(jié)構(gòu)及方法的其它應(yīng)用。因此,應(yīng)參考所附權(quán)利要求書連同授權(quán)此權(quán)利要求書的等效內(nèi)容的全部范圍來確定本發(fā)明的一個或一個以上實施例的范圍。在前述實施方式中,出于簡化本發(fā)明的目的將一些特征一起聚集于單個實施例中。本發(fā)明的此方法不應(yīng)理解為反映本發(fā)明的所揭示實施例必須使用比每一權(quán)利要求中所明確陳述的特征更多的特征的意圖。而是,如以上權(quán)利要求書反映發(fā)明性標的物在于少于單個所揭示實施例的所有特征。因此,特此將以上權(quán)利要求書并入到實施方式中,其中每一權(quán)利要求獨立地作為單獨實施例。
權(quán)利要求
1.一種存儲器控制器,其包括多個后端通道;命令隊列,其通信地耦合到所述多個后端通道,所述命令隊列經(jīng)配置以保持由主機傳達的主機命令;及電路,其經(jīng)配置以至少響應(yīng)于所述命令隊列中的所述主機命令中的若干個主機命令而產(chǎn)生若干個后端命令,及將所述若干個后端命令分配到所述多個后端通道中的若干個后端通道。
2.根據(jù)權(quán)利要求1所述的存儲器控制器,其中所述若干個后端命令少于所述主機命令中的所述若干個主機命令。
3.根據(jù)權(quán)利要求1所述的存儲器控制器,其中所述若干個后端命令多于所述主機命令中的所述若干個主機命令。
4.根據(jù)權(quán)利要求3所述的存儲器控制器,其中所述電路經(jīng)配置以響應(yīng)于單個主機命令而產(chǎn)生對應(yīng)于所述多個后端通道中的每一者的相應(yīng)后端命令,及將所述相應(yīng)后端命令分配到其對應(yīng)后端通道,以便大致并行地處理所述后端命令。
5.根據(jù)權(quán)利要求4所述的存儲器控制器,其中所述電路經(jīng)配置以在完成所述多個后端命令中的特定一者之后即刻將來自執(zhí)行所述多個后端命令中的所述特定一者的結(jié)果傳達到所述主機,而不顧及所述多個后端命令中的任一其它者的執(zhí)行的完成。
6.根據(jù)權(quán)利要求1到5中任一權(quán)利要求所述的存儲器控制器,其中所述電路經(jīng)配置以在不同的多個后端通道當中分配多個主機命令以便大致同時執(zhí)行所述多個主機命令。
7.根據(jù)權(quán)利要求1到5中任一權(quán)利要求所述的存儲器控制器,其中產(chǎn)生所述若干個后端命令包含修改所述若干個主機命令中的至少一者與刪除所述若干個主機命令中的至少另一者的組合。
8.根據(jù)權(quán)利要求1到5中任一權(quán)利要求所述的存儲器控制器,其中直接存儲器存取模塊DMA經(jīng)配置以分配與對應(yīng)于所產(chǎn)生的所述若干個后端命令的主機命令相關(guān)聯(lián)的數(shù)據(jù)。
9.根據(jù)權(quán)利要求1到5中任一權(quán)利要求所述的存儲器控制器,其中所述電路為命令分派器,所述命令分派器具有經(jīng)配置以修改主機命令以便優(yōu)化所述命令在所述多個后端通道當中的分配的命令處理器部分,及經(jīng)配置以在所述多個后端通道當中分配所述經(jīng)修改命令的分派器部分。
10.根據(jù)權(quán)利要求1到5中任一權(quán)利要求所述的存儲器控制器,其中所述電路為通信地耦合到所述多個后端通道的前端處理器FEP,所述FEP經(jīng)配置以修改主機命令以便優(yōu)化所述命令在所述多個后端通道當中的分配。
11.一種存儲器控制器,其包括多個后端通道;及前端命令分派器,其通信地耦合到所述多個后端通道及經(jīng)配置以保持若干個讀取命令的命令隊列,其中所述命令分派器經(jīng)配置以確定待由所述若干個讀取命令實現(xiàn)的從存儲器的凈讀取,且修改所述若干個讀取命令中的一者或一者以上以優(yōu)化所述若干個讀取命令在所述多個后端通道當中的分配。
12.根據(jù)權(quán)利要求11所述的存儲器控制器,其中所述前端命令分派器包含經(jīng)配置以修改一個或一個以上命令以便優(yōu)化所述命令在所述多個后端通道當中的分配的命令處理器部分,及經(jīng)配置以在所述多個后端通道當中分配命令的分派器部分。
13.根據(jù)權(quán)利要求11所述的存儲器控制器,其中所述前端命令分派器經(jīng)配置以在硬件中執(zhí)行主機命令完整性檢查。
14.根據(jù)權(quán)利要求11到13中任一權(quán)利要求所述的存儲器控制器,其包含通信地耦合到所述多個后端通道的前端處理器FEP,其中所述FEP經(jīng)配置以確定待由所述若干個讀取命令實現(xiàn)的從存儲器的凈讀取,且修改所述若干個讀取命令中的一者或一者以上以優(yōu)化所述若干個讀取命令在所述多個后端通道當中的分配。
15.一種存儲器控制器,其包括多個后端通道;及前端命令分派器,其通信地耦合到所述多個后端通道及經(jīng)配置以保持若干個寫入命令的命令隊列,其中所述命令分派器經(jīng)配置以確定待由所述若干個寫入命令實現(xiàn)的對存儲器的凈改變,且修改所述若干個寫入命令中的一者或一者以上以優(yōu)化所述若干個寫入命令在所述多個后端通道當中的分配。
16.根據(jù)權(quán)利要求15所述的存儲器控制器,其中所述命令分派器經(jīng)配置以修改所述若干個寫入命令中的所述一者或一者以上以僅在所述多個后端通道為繁忙時優(yōu)化分配。
17.根據(jù)權(quán)利要求15所述的存儲器控制器,其中所述命令分派器經(jīng)配置以不分配來自所述命令隊列的所述若干個寫入命令中的不改變由所述若干個寫入命令對存儲器的所述所確定的凈改變的一個寫入命令。
18.根據(jù)權(quán)利要求17所述的存儲器控制器,其中所述命令分派器經(jīng)配置以將與所述命令隊列中的第一寫入命令相關(guān)聯(lián)的存儲器范圍修改為包含所述命令隊列中的第二寫入命令的所述存儲器范圍的一部分,且此后不分配來自所述命令隊列的不改變由所述若干個寫入命令對存儲器的所述所確定的凈改變的所述第二寫入命令。
19.根據(jù)權(quán)利要求15到18中任一權(quán)利要求所述的存儲器控制器,其中所述若干個寫入命令是按初始次序在所述命令隊列中接收的,且所述命令分派器經(jīng)配置以將所述命令隊列中的所述若干個寫入命令的次序從所述初始次序改變?yōu)榻?jīng)改變次序。
20.根據(jù)權(quán)利要求19所述的存儲器控制器,其中所述命令分派器經(jīng)配置以根據(jù)所述命令隊列中的所述若干個寫入命令的所述經(jīng)改變次序而非根據(jù)所述初始次序來分配命令。
21.根據(jù)權(quán)利要求15到18中任一權(quán)利要求所述的存儲器控制器,其中所述命令分派器經(jīng)配置以通過將命令組合到重疊的存儲器位置來修改所述命令隊列中的所述若干個寫入命令中的至少一者。
22.根據(jù)權(quán)利要求21所述的存儲器控制器,其中所述命令分派器經(jīng)配置以響應(yīng)于所述若干個寫入命令中的至少一者被修改而將所述命令隊列中的所述若干個寫入命令的次序改變?yōu)榻?jīng)改變次序。
23.根據(jù)權(quán)利要求21所述的存儲器控制器,其中所述命令分派器經(jīng)配置以不分配經(jīng)確定為涉及將由所述命令隊列中隨后將執(zhí)行的寫入命令蓋寫的若干個存儲器位置的寫入命令。
24.根據(jù)權(quán)利要求21所述的存儲器控制器,其中所述命令分派器經(jīng)配置以不執(zhí)行經(jīng)確定為在無涉及將由隨后執(zhí)行的寫入命令蓋寫的所述若干個存儲器位置的介入讀取操作的情況下涉及所述若干個存儲器位置的寫入命令。
25.根據(jù)權(quán)利要求21所述的存儲器控制器,其中所述命令分派器經(jīng)配置以將多個寫入命令聚集成單個寫入命令。
26.根據(jù)權(quán)利要求25所述的存儲器控制器,其中所述命令分派器經(jīng)配置以確定至少兩個寫入命令為涉及邏輯上鄰近的存儲器位置的同一操作,且將所述至少兩個寫入命令組合成涉及所述邏輯上鄰近的存儲器位置的單個寫入命令。
27.根據(jù)權(quán)利要求25所述的存儲器控制器,其中所述命令分派器經(jīng)配置以確定至少兩個寫入命令為涉及邏輯上重疊的存儲器位置的同一操作,且將所述至少兩個寫入命令組合成涉及所述邏輯上重疊的存儲器位置的單個寫入命令。
28.根據(jù)權(quán)利要求15到18中任一權(quán)利要求所述的存儲器控制器,其中與特定寫入命令相關(guān)聯(lián)的有效負載是在所述多個后端通道中的一者以上當中分配的,且所述命令分派器經(jīng)配置以將所述特定寫入命令分配到所述多個后端通道中的所述一者以上中的每一者。
29.根據(jù)權(quán)利要求觀所述的存儲器控制器,其中所述命令分派器經(jīng)配置以確定所述有效負載的與所述多個后端通道中的所述一者以上中的每一者相關(guān)聯(lián)的一部分的相關(guān)聯(lián)的邏輯塊地址及扇區(qū)計數(shù),且修改分配到具有所述有效負載的所述相關(guān)聯(lián)的部分的所述邏輯塊地址及扇區(qū)計數(shù)的相應(yīng)后端通道的所述特定寫入命令。
30.根據(jù)權(quán)利要求15到18中任一權(quán)利要求所述的存儲器控制器,其中所述命令分派器經(jīng)配置以在防止所述命令分派器將命令分配到所述多個后端通道時的時間期間修改所述命令隊列中的寫入命令。
31.一種存儲器系統(tǒng),其包括若干個存儲器裝置;及控制器,其具有前端直接存儲器存取模塊DMA及通信地耦合于所述若干個存儲器裝置中的相應(yīng)一者與所述前端DMA之間的若干個后端通道;所述前端DMA經(jīng)配置以處理與由主機傳達的單個主機命令相關(guān)聯(lián)的有效負載,其中所述有效負載的相應(yīng)部分與正跨越所述若干個后端通道大致同時執(zhí)行的對應(yīng)的多個后端命令相關(guān)聯(lián)。
32.根據(jù)權(quán)利要求31所述的存儲器系統(tǒng),其中所述單個主機命令為寫入命令,且所述前端DMA經(jīng)配置以在所述若干個后端通道中的對應(yīng)于所述多個后端命令的一個以上后端通道當中分配與所述單個主機命令相關(guān)聯(lián)的所述有效負載。
33.根據(jù)權(quán)利要求31所述的存儲器系統(tǒng),其中所述單個主機命令為讀取命令,且所述前端DMA經(jīng)配置以從所述若干個后端通道中的對應(yīng)于所述多個后端命令的一個以上后端通道當中匯編與所述單個主機命令相關(guān)聯(lián)的有效負載。
34.根據(jù)權(quán)利要求31所述的存儲器系統(tǒng),其中所述前端DMA經(jīng)配置以確定所述有效負載的與所述多個后端命令中的每一者相關(guān)聯(lián)的每一相應(yīng)部分的邏輯塊地址及扇區(qū)計數(shù),其中所述多個后端命令中的每一者模擬所述主機命令但具有對應(yīng)于所述若干個后端通道中的相應(yīng)一者的經(jīng)修改的相應(yīng)邏輯塊地址及扇區(qū)計數(shù)。
35.根據(jù)權(quán)利要求31到34中任一權(quán)利要求所述的存儲器系統(tǒng),其中所述前端DMA經(jīng)配置以按一次序?qū)⑺鲇行ж撦d的與所述多個后端命令相關(guān)聯(lián)的部分傳達到主機,所述次序不同于在所述主機命令已由單個后端通道執(zhí)行的情況下所述主機命令原本會產(chǎn)生所述有效負載的次序。
36.根據(jù)權(quán)利要求35所述的存儲器系統(tǒng),其中所述前端DMA經(jīng)配置以按從所述多個后端通道接收所述有效負載的與所述多個后端命令相關(guān)聯(lián)的部分的次序來傳達所述部分。
37.根據(jù)權(quán)利要求31到34中任一權(quán)利要求所述的存儲器系統(tǒng),其中所述前端DMA經(jīng)配置以按不同于由所述主機傳達主機命令的次序的次序?qū)⒚钔瓿蔂顟B(tài)的指示符傳達到所述主機。
38.根據(jù)權(quán)利要求37所述的存儲器系統(tǒng),其中所述前端DMA經(jīng)配置以按由所述若干個后端通道完成后端命令的次序?qū)⒚钔瓿蔂顟B(tài)的指示符傳達到所述主機。
39.根據(jù)權(quán)利要求31到34中任一權(quán)利要求所述的存儲器系統(tǒng),其中所述部分中的每一者對應(yīng)于特定后端通道,且其中所述前端DMA經(jīng)配置以將所述部分中的每一者與其它部分分開地個別地傳達到所述主機。
40.根據(jù)權(quán)利要求39所述的存儲器系統(tǒng),其中所述前端DMA經(jīng)配置以在從所述若干個后端通道中的一者接收到所述部分中的一者之后且在不將所述部分匯編成與所述單個主機命令相關(guān)聯(lián)的完整有效負載的情況下即刻將所述相應(yīng)部分傳達到所述主機。
41.根據(jù)權(quán)利要求40所述的存儲器系統(tǒng),其中所述單個主機命令為讀取命令且所述部分中的每一者與不同的后端通道相關(guān)聯(lián)。
42.根據(jù)權(quán)利要求40所述的存儲器系統(tǒng),其中所述前端DMA經(jīng)配置以在所述若干個后端通道中的一者完成處理與其相關(guān)聯(lián)的所述部分時將所述部分中的每一者傳達到所述主機。
43.根據(jù)權(quán)利要求31到34中任一權(quán)利要求所述的存儲器系統(tǒng),其中所述單個主機命令是作為第一次序的主機命令的一部分在所述前端DMA處接收的寫入命令,所述主機命令是按第二次序完成的,且所述前端DMA經(jīng)配置以根據(jù)所述第二次序?qū)⑺鰡蝹€主機命令的命令完成狀態(tài)的指示符傳達到所述主機。
44.一種固態(tài)驅(qū)動器,其包括 多個快閃存儲器裝置;存儲器控制器,其包括多個后端通道,每一后端通道通信地耦合到所述多個存儲器裝置中的若干個存儲器裝置;前端直接存儲器存取DMA,其通信地耦合到所述多個后端通道;前端命令分派器,其通信地耦合到具有經(jīng)配置以保持若干個命令的命令隊列的所述DMA ;其中所述命令分派器經(jīng)配置以基于當時保持于所述命令隊列中的所述若干個命令而處理命令以優(yōu)化其在所述多個后端通道當中的分配,且所述前端DMA經(jīng)配置以處理與涉及所述多個后端通道中的一者以上的至少一個命令相關(guān)聯(lián)的相應(yīng)有效負載。
45.根據(jù)權(quán)利要求44所述的固態(tài)驅(qū)動器,其包含通信地耦合到所述存儲器控制器的串行高級技術(shù)附件SATA接口,所述SATA接口經(jīng)配置以與主機通信。
46.根據(jù)權(quán)利要求44所述的固態(tài)驅(qū)動器,其中所述多個后端通道中的每一者通信地耦合到所述多個存儲器裝置中的相應(yīng)一者。
47.根據(jù)權(quán)利要求46所述的固態(tài)驅(qū)動器,其中所述多個快閃存儲器裝置包括八個NAND 快閃存儲器裝置,且其中所述多個后端通道包括八個后端通道。
48.根據(jù)權(quán)利要求44到47中任一權(quán)利要求所述的固態(tài)驅(qū)動器,其中所述命令分派器經(jīng)配置以通過選擇性地重新排序命令、選擇性地組合命令及/或選擇性地刪除命令而在所述控制器的前端上處理命令以優(yōu)化其到所述控制器的后端的分配。
49.根據(jù)權(quán)利要求48所述的固態(tài)驅(qū)動器,其中所述多個后端通道中的每一者經(jīng)配置以通過選擇性地重新排序所接收的命令、選擇性地組合所接收的命令及/或選擇性地刪除命令而進一步處理分別接收的命令以加快所述分別接收的命令的執(zhí)行。
50.一種在于多個后端通道當中分配若干個命令之前處理所述若干個命令的方法,其包括按一次序從主機接收若干個命令;處理所述若干個命令以改進前端吞吐量,所述處理包括重新排序所述命令;將多個命令組合成單個命令;及/或刪除涉及一存儲器位置的命令,所述存儲器位置經(jīng)確定為在無涉及所述存儲器位置的介入操作的情況下由隨后執(zhí)行的命令蓋寫,其中將所述若干個命令中的至少一者分配到一個以上后端通道。
51.根據(jù)權(quán)利要求50所述的方法,其中所述處理僅在所述后端通道為繁忙時發(fā)生。
52.根據(jù)權(quán)利要求50所述的方法,其中所述重新排序是至少部分地響應(yīng)于組合命令或刪除命令。
53.根據(jù)權(quán)利要求50到52中任一權(quán)利要求所述的方法,其中組合多個命令包含將涉及鄰近存儲器位置的命令聚集成單個命令。
54.根據(jù)權(quán)利要求50到52中任一權(quán)利要求所述的方法,其中組合多個命令包含將涉及若干個相同存儲器位置的命令聚集成單個命令。
55.根據(jù)權(quán)利要求50到52中任一權(quán)利要求所述的方法,其中組合命令包含將涉及特定存儲器裝置上的連續(xù)存儲器位置的命令合并成單個命令。
56.根據(jù)權(quán)利要求50到52中任一權(quán)利要求所述的方法,其中組合命令包含將涉及特定存儲器裝置上的重疊的存儲器位置的命令合并成單個命令。
57.根據(jù)權(quán)利要求50到52中任一權(quán)利要求所述的方法,其中所述處理包含針對所述若干個命令中的所述至少一者確定與所述若干個命令中的所述至少一者相關(guān)聯(lián)的有效負載的每一部分的相應(yīng)邏輯塊地址及扇區(qū)計數(shù),并修改所述若干個命令中的分配到具有所述相應(yīng)邏輯塊地址及扇區(qū)計數(shù)的特定后端通道的所述至少一個命令。
58.一種處理若干個命令的方法,其包括按一次序從主機接收若干個命令;處理與涉及多個后端通道中的一者以上的有效負載相關(guān)聯(lián)的至少一個命令。
59.根據(jù)權(quán)利要求58所述的方法,其包含在所述多個后端通道中的一者以上當中分配與所述至少一個命令相關(guān)聯(lián)的所述有效負載,其中所述至少一個命令為寫入命令。
60.根據(jù)權(quán)利要求58所述的方法,其包含從所述多個后端通道中的一者以上匯編與所述至少一個命令相關(guān)聯(lián)的所述有效負載,其中所述至少一個命令為讀取命令。
61.根據(jù)權(quán)利要求58所述的方法,其包含確定涉及所述多個后端通道中的與所述至少一個命令相關(guān)聯(lián)的相應(yīng)一者的所述有效負載的每一部分的相關(guān)聯(lián)的邏輯塊地址及扇區(qū)計數(shù);及修改分配到具有所述相應(yīng)后端通道特有的所述所確定的邏輯塊地址及扇區(qū)計數(shù)的所述相應(yīng)后端通道的所述至少一個命令。
62.根據(jù)權(quán)利要求58所述的方法,其包含從所述后端通道接收與所述若干個命令中的一者相關(guān)聯(lián)的有效負載;及根據(jù)不同于曾由所述主機傳達所述若干個命令的所述次序的次序?qū)⑺鏊邮盏挠行ж撦d傳達到所述主機。
63.根據(jù)權(quán)利要求58到62中任一權(quán)利要求所述的方法,其包含將從所述后端通道中的一者接收的所述有效負載的一部分傳達到所述主機,而不等待從所述后端通道中的另一者接收所述有效負載的另一部分。
64.根據(jù)權(quán)利要求63所述的方法,其包含在不重新匯編所述有效負載的情況下將從所述后端通道中的所述一者接收的所述有效負載的所述部分傳達到所述主機。
65.根據(jù)權(quán)利要求58到62中任一權(quán)利要求所述的方法,其包含在完成所述若干個命令中的特定命令時且與曾由所述主機傳達所述命令的所述次序無關(guān)地將所述特定命令的完成狀態(tài)的指示符傳達到所述主機。
66.根據(jù)權(quán)利要求65所述的方法,其包含在接收所述特定命令之前接收第一命令;將所述第一命令分配到第一后端通道;將所述特定命令分配到第二后端通道;及在完成所述特定命令之后且不管所述第一命令的完成如何,即刻將所述特定命令的所述完成狀態(tài)的所述指示符傳達到所述主機。
67.根據(jù)權(quán)利要求58到62中任一權(quán)利要求所述的方法,其包含在于所述多個后端通道當中分配所述若干個命令之前處理所述若干個命令以改進前端吞吐量,所述命令處理包含以下各項中的一者或一者以上重新排序所述命令;組合多個命令;及/或刪除命令。
68.根據(jù)權(quán)利要求67所述的方法,其包含在所述多個后端通道中的一者以上當中分配與至少一個經(jīng)組合命令相關(guān)聯(lián)的所述有效負載,其中正被組合的命令使其有效負載的至少一部分涉及所述多個后端通道中的特定一者。
全文摘要
本發(fā)明包含用于存儲器控制器的方法及裝置。在一個或一個以上實施例中,一種存儲器控制器包含多個后端通道及通信地耦合到所述多個后端通道的命令隊列。所述命令隊列經(jīng)配置以保持從主機接收的主機命令。電路經(jīng)配置以至少響應(yīng)于所述命令隊列中的所述主機命令中的若干個主機命令而產(chǎn)生若干個后端命令,且將所述若干個后端命令分配到所述多個后端通道中的若干個后端通道。
文檔編號G06F3/06GK102439576SQ201080022747
公開日2012年5月2日 申請日期2010年3月11日 優(yōu)先權(quán)日2009年4月9日
發(fā)明者廖玉松, 楊芮堯, 西亞麥克·內(nèi)馬齊, 邁赫迪·阿斯納阿沙里 申請人:美光科技公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
桂东县| 枣庄市| 疏附县| 峡江县| 简阳市| 安福县| 高淳县| 读书| 石门县| 晴隆县| 宝鸡市| 揭阳市| 乡宁县| 长岭县| 盐亭县| 大洼县| 安西县| 兴义市| 北宁市| 吴忠市| 景泰县| 平远县| 德庆县| 泗阳县| 平舆县| 临泽县| 永丰县| 时尚| 赣榆县| 锡林浩特市| 定远县| 建瓯市| 分宜县| 克拉玛依市| 建瓯市| 阳城县| 崇左市| 双鸭山市| 县级市| 永城市| 报价|