專利名稱:修改命令的制作方法
技術領域:
本發明一般來說涉及半導體存儲器裝置、方法及系統,且更特定來說涉及修改命令。
背景技術:
通常提供存儲器裝置作為計算機或其它電子裝置中的內部半導體集成電路。存在許多不同類型的存儲器,包括易失性及非易失性存儲器。易失性存儲器可需要電力來維持其數據,且可包括隨機存取存儲器(RAM)、動態隨機存取存儲器(DRAM)及同步動態隨機存取存儲器(SDRAM)以及其它存儲器。非易失性存儲器可通過在不被供電時保留所存儲的信息來提供永久性數據,且可包括NAND快閃存儲器、NOR快閃存儲器、只讀存儲器(ROM)、電可擦除可編程ROM (EEPROM)、可擦除可編程ROM(EPROM)及相變隨機存取存儲器(PCRAM)以及其它存儲器。可將存儲器裝置組合在一起以形成固態驅動器(SSD)。SSD可包括非易失性存儲器(例如,NAND快閃存儲器及NOR快閃存儲器)及/或可包括易失性存儲器(例如,DRAM 及SRAM)以及各種其它類型的非易失性及易失性存儲器。SSD可用于取代硬盤驅動器作為計算機的主存儲裝置,因為SSD可在(舉例來說) 性能、大小、重量、耐用性、操作溫度范圍及功率消耗方面具有勝于硬驅動器的優點。舉例來說,SSD在與磁盤驅動器比較時因其缺少移動部件而可具有優越的性能,缺少移動部件可改善與磁盤驅動器相關聯的搜尋時間、等待時間及其它機電延遲。SSD制造商可使用非易失性快閃存儲器來形成快閃SSD,所述快閃SSD可不使用內部電池電源,因此允許所述驅動器更通用且更小型。SSD可包括若干個存儲器裝置,例如若干個存儲器芯片(本文所用“若干個”某物可指代一個或一個以上此物,例如,若干個存儲器裝置可指代一個或一個以上存儲器裝置)。所屬領域的技術人員將了解,存儲器芯片可包括若干個裸片。每一裸片可包括若干個存儲器陣列及其上的外圍電路。存儲器陣列可包括若干個平面,其中每一平面包括若干個存儲器單元物理塊。每一物理塊可包括可存儲若干個數據扇區的若干個存儲器單元頁。在SSD的操作期間,可使用例如編程命令、讀取命令及擦除命令等命令以及其它命令。舉例來說,可使用編程(例如,寫入)命令將數據編程于固態驅動器上,可使用讀取命令讀取固態驅動器上的數據,且可使用擦除命令擦除固態驅動器上的數據。
圖1圖解說明根據本發明的一個或一個以上實施例的存儲器系統的框圖。圖2圖解說明可根據本發明的一個或一個以上實施例操作的存儲器控制器的功能框圖。圖3圖解說明根據本發明的一個或一個以上實施例的通道命令隊列的框圖。圖4A及4B圖解說明根據本發明的一個或一個以上實施例的通道命令隊列的框圖。
具體實施例方式本發明包括用于修改命令的方法、裝置、模塊及系統。一個裝置實施例包括存儲器控制器,所述存儲器控制器包括通道,其中所述通道包括經配置以保持命令的命令隊列及經配置以修改所述隊列中的至少若干個命令且執行所述經修改命令的電路。在本發明的以下詳細說明中,參照形成本發明的一部分且其中以圖解說明方式顯示可如何實踐本發明的一個或一個以上實施例的附圖。充分詳細地描述這些實施例以使得所屬領域的技術人員能夠實踐本發明的實施例,且應理解,可利用其它實施例且可作出過程、電及/或結構改變,而不背離本發明的范圍。如本文中所使用,標示符“N”及“M”(特定來說關于圖式中的參照編號)指示本發明的一個或一個以上實施例可包括如此標示的特定特征的數目。所述標示符可表示相同數目個或不同數目個特定特征。本文中的圖遵循以下編號慣例其中第一個數字或前幾個數字對應于圖式圖編號,且其余數字識別圖式中的元件或組件。不同圖之間的類似元件或組件可通過使用類似數字來識別。舉例來說,101可指代圖1中的元件“10”,且類似元件在圖2中可標號為201。 如將了解,可添加、交換及/或消除本文中各種實施例中所示的元件以便提供本發明的若干個額外實施例。另外,如將了解,所述圖中所提供的所述元件的比例及相對比例尺打算圖解說明本發明的實施例而不應被視為具有限制意義。圖1圖解說明根據本發明的一個或一個以上實施例的存儲器系統120的框圖。在一個或一個以上實施例中,存儲器系統120可為固態驅動器。圖1的實施例圖解說明存儲器系統120的一個實施例的組件及架構。在圖1中所圖解說明的實施例中,存儲器系統120 包括控制器101、接口連接器103及存儲器陣列130-1、…、130-N。在一個或一個以上實施例中,存儲器系統120可包括用以裝納存儲器系統120的外殼,但此外殼并非是基本的。可使用接口連接器103在存儲器系統120與另一裝置(例如,計算裝置)之間傳遞信息。舉例來說,當存儲器系統120用于計算裝置中的數據存儲時,接口 103可為串行高級技術附件(SATA)以及其它。控制器101可與存儲器陣列130-1、…、130-N通信以在存儲器陣列130-1、…、 130-N上執行讀取、編程(例如,寫入)及擦除操作及其它操作。控制器101可用于管理存儲器系統120中的操作。控制器101可具有可為若干個集成電路的電路。控制器101也可具有可為若干個離散組件的電路。對于一個或一個以上實施例,控制器101中的電路可包括用于控制跨越若干個存儲器陣列的存取的控制電路。控制器101中的電路也可包括用于提供外部主機與存儲器系統120之間的翻譯層的控制電路。因此,存儲器控制器可選擇性地耦合存儲器陣列的I/O連接(未在圖1中顯示)以在適當時間在適當I/O連接處接收適當信號。類似地,主機與存儲器系統120之間的通信協議可不同于存取存儲器陣列(例如, 存儲器陣列130-1、…、130-N)所需的協議。然后,存儲器控制器101可將從主機接收的命令翻譯成適當命令以實現對存儲器陣列的所要存取。存儲器陣列130-1、…、130-N可為各種類型的易失性及非易失性存儲器陣列(例如,快閃及DRAM陣列以及其它陣列)。在一個或一個以上實施例中,存儲器陣列130-1、···、 130-N可為固態存儲器陣列。存儲器陣列130-1、…、130-N可包括可按單位分組的若干個存儲器單元。如本文所用,單位可包括若干個存儲器單元,例如頁、物理塊、平面、整個陣列或其它存儲器單元群組。舉例來說,存儲器陣列可包括若干個平面,其中每一平面包括若干個物理塊。每一物理塊中的存儲器單元可作為單位一起擦除,例如,可以大致同時的方式擦除每一物理塊中的單元。舉例來說,可在單個操作中一起擦除每一物理塊中的單元。物理塊可包括若干個頁。每一頁中的存儲器單元可作為單位一起編程,例如,可以大致同時的方式編程每一頁中的單元。每一頁中的存儲器單元也可作為單位一起讀取。作為實例,U8GB 存儲器裝置可包括每頁4314個數據字節,每物理塊1 個頁,每平面2048個物理塊,且每裝置16個平面。然而,實施例并不限于此實例。存儲器系統的物理扇區可對應于邏輯扇區且可包括開銷信息(例如,錯誤校正碼 (ECC)信息)及邏輯塊地址(LBA)信息以及用戶數據。所屬領域的技術人員將了解,邏輯塊尋址是主機識別信息邏輯扇區通常使用的方案。作為實例,每一物理扇區可存儲表示若干個數據字節的信息,例如,256個字節、512個字節或1,OM個字節以及其它數目個字節。然而,本發明的實施例并不限于存儲于物理扇區中或與邏輯扇區相關聯的特定數目個數據字節。圖2圖解說明可根據本發明的一個或一個以上實施例操作的存儲器控制器201的功能框圖。在一個或一個以上實施例中,存儲器控制器201可為固態驅動器控制器。在一個或一個以上實施例中,存儲器控制器201可類似于圖1中所示的控制器101。如在圖2中所示,存儲器控制器201包括前端部分及后端部分。所述前端部分可對應于前端通道,且所述后端部分可對應于若干個后端通道,例如后端通道1 210-1、···、后端通道N 210-N。存儲器控制器201可使用前端通道及后端通道來與存儲器陣列230-1、…、 230-N通信以在存儲器陣列230-1、…、230-N上執行讀取、編程(例如,寫入)及擦除操作以及其它操作。在一個或一個以上實施例中,存儲器陣列230-1、…、230-N可為固態存儲器陣列。在一個或一個以上實施例中,存儲器陣列230-1、…、230-N可類似于圖1中所示的存儲器陣列130-1、…、130-N。如在圖2中所示,控制器201的前端部分(例如,前端通道)包括主機接口 202、命令處理器204、前端直接存儲器存取(DMA) 206及命令調度程序208。后端通道210-1、…、 210-N可包括后端通道處理器211-1、…、211-N、后端通道DMA 213-1、…、213-N、后端通道命令隊列215-1、…、215-N、數據緩沖器217-1、…、217-N及ECC引擎/陣列接口 219-1、···、 219-N。盡管圖2中所示的實施例將每一后端通道210-1、…、210-N圖解說明為包括后端通道處理器,但本發明的實施例并不如此受限制。舉例來說,所述后端部分可包括可對每一后端通道210-1、…、210-N進行操作的電路,例如,單個后端處理器或硬件邏輯,例如專用集成電路(ASIC)。在圖2中所圖解說明的實施例中,所述前端通道可經由前端DMA 206及命令調度程序208耦合到后端通道,例如后端通道210-1、…、210-N。舉例來說,前端DMA 206可耦合到后端通道處理器211-1、…、211-N及后端通道DMA 213-1、…、213-N。命令調度程序 208可耦合到后端通道命令隊列215-1、…、215-N。可使用主機接口 202在控制器201與主機裝置(未顯示,例如計算裝置)之間傳遞信息。在一個或一個以上實施例中,可使用主機接口 202經由接口連接器(例如,圖1中所示的接口連接器10 在控制器201與所述主機裝置之間傳遞信息。
在一個或一個以上實施例中,在主機裝置與控制器201之間傳遞的信息可包括若干個命令,例如編程命令、讀取命令及擦除命令以及其它命令。可使用編程(例如,寫入)命令在存儲器陣列230-1、…、230-N上編程數據,可使用讀取命令讀取存儲器陣列230-1、···、 230-N上的數據,且可使用擦除命令擦除存儲器陣列230-1、…、230-N上的數據。所述命令可包括指示被命令的操作類型(例如,編程、讀取或擦除)、數量(例如,邏輯扇區的數目) 及所述命令的執行將開始的位置(例如,開始地址)的信息以及其它信息。如果所述命令為編程命令,那么所述命令可后跟(未必緊接著)將編程到對應存儲器單元的數據。在一個或一個以上實施例中,所述數量可為主機的對應于若干個存儲器單元的若干個邏輯扇區。在一個或一個以上實施例中,所述命令中所包括的“位置”可為邏輯塊地址(LBA)。數據緩沖器217-1、…、217-N可經由主機接口 202、前端DMA 206及后端通道DMA 213-1、…、213-N從主機接收將在存儲器陣列230-1、…、230-N上編程的數據。所述數據可經由ECC引擎/陣列接口 219-1、…、219-N從數據緩沖器217-1、…、217-N發送到存儲器陣列 230-1、…、230-N。在一個或一個以上實施例中,LBA可與主機的邏輯扇區相關聯,例如,主機的每一邏輯扇區可與特定LBA相關聯。舉例來說,LBA 1000可與第一邏輯扇區相關聯,LBA 1001 可與第二邏輯扇區相關聯,LBA 1002可與第三邏輯扇區相關聯等。作為進一步實例,用以編程所述陣列中對應于開始于LBA 1000的16個邏輯扇區的存儲器單元的命令可編程與LBA 1000到1016相關聯的存儲器單元,例如,對應于與LBA 1000到1016相關聯的邏輯扇區的存儲器單元。命令調度程序208可經由主機接口 202從主機接收若干個命令。命令調度程序 208可保持所述所接收的命令,且將所述命令發送到適當后端通道210-1、…、210-N。舉例來說,后端通道隊列215-1、…、215-N可從命令調度程序208接收所述命令。在一個或一個以上實施例中,后端通道210-1、…、210-N可按命令調度程序208從主機接收所述命令的次序接收所述命令。在一個或一個以上實施例中,命令調度程序208可保持多達特定數目個命令,且如果命令調度程序208正保持所述特定數目個命令(例如,如果命令調度程序 208已滿),那么命令調度程序208可不能夠從主機接收命令。在一個或一個以上實施例中,后端通道命令隊列215-1、…、215-N可保持從命令調度程序208接收的若干個命令。在一個或一個以上實施例中,所述隊列可按將執行所述命令的次序保持所述命令。在一個或一個以上實施例中,所述隊列可按從所述命令調度程序接收所述命令的次序保持所述命令。在一個或一個以上實施例中,每一隊列可保持等于命令調度程序208可保持的若干個命令的若干個命令。舉例來說,在一個或一個以上實施例中,命令調度程序208及所述隊列可各自保持多達32個命令。然而,本發明的實施例并不限于特定數目個命令。根據一個或一個以上實施例,后端通道處理器211-1、…、211-N可確定是否可修改保持于所述隊列中的命令,且可(例如)在所述命令保持于所述隊列中時相應地對所述命令進行修改。在一個或一個以上實施例中,如果可改變命令保持于隊列中的次序,如果可將隊列中的命令中的若干個命令組合成一命令(例如,單個命令),或如果隊列中的命令中的若干個命令將被隊列中的隨后命令蓋寫,那么可修改所述命令。在一個或一個以上實施例中,修改命令可包括改變命令保持于隊列中的次序;將隊列中的若干個可組合命令組合成單個命令;或刪除隊列中的將被隊列中的隨后命令蓋寫的若干個命令;以及其它修改。在一個或一個以上實施例中,如果保持于隊列中的命令是重疊命令,那么所述命令是可組合的,例如,可被組合成單個命令。如本文所用,重疊命令是與重疊地址(例如,重疊邏輯塊地址(LBA))相關聯的若干個命令。舉例來說,重疊命令可包括與存儲器陣列中將在其上執行所述命令的共用位置相關聯的命令。具體實例包括用以編程陣列中對應于主機的開始于邏輯塊地址(LBA) 1000的48個邏輯扇區(例如,來自所述主機的48個數據邏輯扇區)的存儲器單元的第一命令及用以編程所述陣列中對應于所述主機的開始于LBA 1040 的16個邏輯扇區的存儲器單元的第二命令。所述第一命令與第二命令是重疊命令,因為兩個命令均與開始于LBA 1040的相同8個邏輯扇區相關聯。因此,可將這兩個命令組合成用以編程對應于開始于LBA 1000的56個邏輯扇區的存儲器單元的單個命令。可組合保持于所述隊列中的重疊命令而不管將其接收于所述隊列中的次序如何。在一個或一個以上實施例中,如果保持于隊列中的命令是順序命令,那么所述命令是可組合的,例如,可組合成單個命令。如本文所用,順序命令是與將在其上執行所述命令的順序地址(例如,順序LBA)相關聯的若干個命令。舉例來說,順序命令可包括與緊在與其它命令中的一者相關聯的邏輯扇區之前或緊在其之后的邏輯扇區相關聯的命令。具體實例包括用以編程陣列中對應于主機的開始于LBA 1000的16個邏輯扇區的存儲器單元的第一命令及用以編程所述陣列中對應于所述主機的開始于LBA 1016的32個邏輯扇區的存儲器單元的第二命令。所述第一命令與第二命令是順序命令,因為與所述第一命令相關聯的地址緊在與所述第二命令相關聯的地址之前,例如,與所述第二命令相關聯的位置緊在與所述第一命令相關聯的位置之后。因此,可將這兩個命令組合成用以編程對應于所述主機的開始于LBA 1000的48個邏輯扇區的存儲器單元的單個命令。可組合保持于所述隊列中的順序命令而不管將其接收于所述隊列中的次序如何。在一個或一個以上實施例中,如果隊列中的第一命令及所述隊列中的隨后命令兩者與將在其上執行所述命令的同一地址(例如,同一 LBA)相關聯,那么所述第一命令將被所述隨后命令蓋寫。舉例來說,用以編程陣列中對應于主機的開始于LBA 1000的16個邏輯扇區的存儲器單元的第一命令將被用以編程所述陣列中對應于所述主機的開始于LBA 1000的16個邏輯扇區的存儲器單元的隨后命令蓋寫,因為所述第一命令及所述隨后命令兩者與同一地址相關聯。因此,可刪除所述第一命令。在一個或一個以上實施例中,如果與隊列中的第一命令相關聯的地址在與所述隊列中的隨后命令相關聯的地址范圍內,那么所述第一命令將被所述隨后命令蓋寫。舉例來說,用以編程陣列中對應于主機的開始于LBA 1000的16個邏輯扇區的存儲器單元的第一命令將被用以編程所述陣列中對應于所述主機的開始于LBA 1000的48個邏輯扇區的存儲器單元的隨后命令蓋寫。因此,可刪除所述第一命令。后端通道處理器211-1、…、211-N可根據經修改命令保持于隊列中的次序執行所述經修改命令。舉例來說,如果通過改變命令保持于隊列中的次序來修改所述命令,那么后端通道處理器可根據所述已改變次序來執行所述命令。如果通過將命令中的若干個命令組合成單個命令來修改所述命令,那么后端通道處理器可執行所述單個命令而非單獨地執行所述若干個命令。如果通過刪除將被隨后命令蓋寫的命令來修改命令,那么后端通道處理器可執行所述隨后命令而非所述已刪除的命令。在一個或一個以上實施例中,如果通過將保持于后端通道命令隊列215-1、…、 215-N中的命令中的若干個命令組合成單個命令來修改所述命令,那么可認為命令調度程序208中所保持的也可與所述單個命令組合的任何命令已完成。后端通道處理器 211-1、…、211-N可向命令處理器204通信此些命令已完成。舉例來說,如果將隊列215-1 中用以編程陣列中對應于主機的開始于LBA 1000的48個邏輯扇區的存儲器單元的第一命令與隊列215-N中用以編程所述陣列中對應于所述主機的開始于LBA 1040的16個邏輯扇區的存儲器單元的第二命令組合成單個命令(例如,用以編程對應于所述主機的開始于 LBA 1000的56個邏輯扇區的存儲器單元的命令),那么可認為命令調度程序208中所保持的用以編程對應于所述主機的開始于LBA 1000的16個邏輯扇區的存儲器單元的命令已完成,例如,后端通道處理器211-1可向命令處理器204通信此命令已完成,因為此命令可與所述單個命令組合。后端通道處理器211-1、…、211-N也可根據經修改命令修改將在存儲器陣列 230-1、…、230-N上編程的數據。舉例來說,后端通道處理器211-1、…、211-N可修改所述數據以匹配所述經修改命令。后端通道處理器211-1、…、211-N可在數據緩沖器217-1、…、 217-N接收到所述數據之前(例如,在所述數據正被從前端DMA 206發送到數據緩沖器 217-1、…、217-N時)修改所述數據。后端通道處理器211-1、…、211-N也可在所述數據被從數據緩沖器217-1、…、217-N發送到存儲器陣列230-1、…、230-N之后修改所述數據。在一個或一個以上實施例中,后端通道命令隊列215-1、…、215-N可在后端通道處理器211-1、…、211-N正在執行經修改命令時保持從命令調度程序208接收的額外命令。 后端通道處理器211-1、…、211-N可在執行所述經修改命令時修改所述額外命令。可使用ECC引擎/陣列接口 219-1、…、219-N將存儲器控制器201耦合到存儲器陣列230-1、…、230-N。后端通道處理器211-1、…、211-N可經由ECC引擎/陣列接口 219-1、…、219-N在存儲器陣列230-1、…、230-N上執行經修改命令。盡管圖2中所示的實施例將命令圖解說明為穿過后端通道處理器211-1、…、211-N行進,但本發明的實施例并不如此受限制。舉例來說,所述命令可經由ECC引擎/陣列接口 219-1、…、219-N直接從后端通道命令隊列215-1、…、215-N行進到存儲器陣列230-1、…、230-N。數據緩沖器217-1、…、217-N可保持在若干個先前讀取操作期間所讀取的數據, 例如,響應于先前讀取命令在位于存儲器陣列230-1、…、230-N中的若干個存儲器單元上執行的讀取。在一個或一個以上實施例中,保持于后端通道命令隊列215-1、…、215-N中的命令可包括用以讀取先前已經讀取的若干個存儲器單元(例如,所述存儲器單元的數據已經保持于數據緩沖器217-1、…、217-N中)的若干個命令。在此些實施例中,后端通道處理器211-1、…、211-N可通過(例如)在不存取存儲器陣列230-1、…、230-N的情況下存取數據緩沖器217-1、…、217-N或通過僅針對不在所述數據緩沖器中的數據而僅存取所述存儲器陣列來執行這些讀取命令。在一個或一個以上實施例中,通過將若干個可組合命令組合成單個命令來修改命令可消除或減少存儲器系統所執行的部分頁編程操作的數目,此可改善所述系統的總性能及/或可靠性。所屬領域的技術人員將理解,部分頁編程操作可包括定位新塊、將存儲于位于舊塊中的頁上的數據讀取到數據緩沖器中、將所述數據緩沖器中的數據與新數據合并及/或用新數據取代所述數據緩沖器中的數據以使得所述數據緩沖器中的數據包括新數據及從舊塊中的頁讀取的數據兩者,且以所述數據緩沖器中的數據編程新塊中的頁。所述部分頁編程操作還可包括將存儲于舊塊中的剩余頁上的數據傳送到新塊中的剩余頁(例如,讀取存儲于舊塊中的剩余頁上的數據且以此數據編程新塊中的剩余頁)、標記舊塊以用于擦除且擦除舊塊。所屬領域的技術人員將理解,部分頁編程操作可因用以僅編程頁的一部分的命令而產生,例如,由所述命令起始。舉例來說,用以僅編程頁的一部分的命令可在用以編程所述頁的剩余部分的命令已經被執行的情形下起始部分頁編程操作。然而,可通過根據本發明的一個或一個以上實施例組合用以僅編程頁的一部分的命令與用以編程所述頁的剩余部分的若干個命令來避免部分頁編程操作,例如,可避免執行與上文所描述的部分頁編程操作相關聯的操作的需要。舉例來說,涉及包括對應于主機的開始于LBA 3000的4個邏輯扇區的存儲器單元的頁的部分頁編程操作可通過根據本發明的一個或一個以上實施例組合用以編程所述頁中對應于所述主機的開始于LBA 3000的2個邏輯扇區的存儲器單元的命令與用以編程所述頁中對應于所述主機的開始于LBA 3002的2個邏輯扇區的存儲器單元的命令而避免。在一個或一個以上實施例中,命令處理器204可執行類似于后端通道處理器 211-1、…、211-N所執行的功能的功能。舉例來說,命令處理器204可確定是否可修改命令調度程序208中所保持的命令,且可在將所述命令保持于命令調度程序208中時相應地修改所述命令。如果可改變所述命令發送到后端通道的次序,如果可將所述命令中的若干個命令組合成單個命令,如果所述命令中的若干個命令將被隨后命令蓋寫等,那么可修改所述命令。修改所述命令可包括改變命令調度程序208將所述命令發送到后端通道的次序、 將命令調度程序208所接收的若干個可組合命令組合成單個命令、刪除命令調度程序208 所接收的將被命令調度程序208所接收的隨后命令蓋寫的若干個命令等。在一個或一個以上實施例中,命令處理器204可在命令調度程序208不能夠從主機接收命令時執行這些功能,例如,可確定是否可修改命令調度程序208中所保持的命令且可在將所述命令保持于命令調度程序208中時相應地修改所述命令。舉例來說,命令處理器204可在命令調度程序208已滿時執行這些功能。在一個或一個以上實施例中,命令處理器204可確定命令調度程序208中所保持的命令是否是不再由后端通道處理器211-1、…、211-N修改的命令。如果命令處理器204 確定命令調度程序208中所保持的若干個命令不再由后端通道處理器修改,那么命令處理器204可將這些命令標記(例如,加標簽)為不再由后端通道處理器修改的命令。當由命令處理器204標記為不再被修改的命令保持于后端通道命令隊列215-1、…、215-N中時, 其將不被后端通道處理器211-1、…、211-N修改。舉例來說,如果后端通道命令隊列215-1 保持用以編程陣列中對應于主機的開始于LBA 1000的48個邏輯扇區的存儲器單元的第一命令及用以編程所述陣列中對應于所述主機的開始于LBA 1040的16個邏輯扇區的存儲器單元的第二命令,且命令處理器204已將這些命令中的一者或兩者標記為不再被修改的命令,那么后端通道處理器211-1將不修改(例如,組合)這兩個命令。不再被修改的命令可包括(舉例來說)為蓋寫操作的一部分的命令,例如,其中第一編程命令后跟讀取命令且所述讀取命令后跟既定蓋寫初始編程命令的第二編程命令的操作。然而,本發明的實施例并不如此受限制,且不再被修改的命令可包括其它類型的命令。根據本發明的一個或一個以上實施例操作存儲器裝置可通過(舉例來說)刪除重復命令且將多個命令組合成一個命令來減少執行若干個命令所使用的時間量,借此增加所述存儲器裝置的效率。另外,由于后端通道可與存儲器陣列230-1、…、230-N緊密地耦合 (例如,位于其附近),因此可通過根據本發明的一個或一個以上實施例操作存儲器裝置來增加所述存儲器裝置的效率。圖3圖解說明根據本發明一個或一個以上實施例的通道命令隊列315的框圖。在一個或一個以上實施例中,通道命令隊列315可類似于圖2中所示的后端通道命令隊列 215-1、…、215-N。如在圖3中所示,通道命令隊列315包括通道命令時隙1 325_1、通道命令時隙2 325-2、通道命令時隙3 325-3、通道命令時隙4 325-4、…、通道命令時隙M 325-M。每一通道命令時隙325-1、325-2、325-3、325-4、…、325-M可保持一個命令,例如,通道命令隊列 315可保持多達M個命令。在一個或一個以上實施例中,如前文所描述,可修改保持于通道命令隊列315中的命令。在一個或一個以上實施例中,通道命令隊列315中的時隙的數目(例如,通道命令隊列315可保持的命令的數目)可等于通道命令隊列315從其接收命令的裝置(例如,圖 2中所示的命令調度程序208)可保持的命令的數目。舉例來說,如果命令調度程序208可保持多達32個命令,那么通道命令隊列315可具有32個時隙,例如,通道命令隊列315可保持多達32個命令。然而,本發明的實施例并不如此受限制,且通道命令隊列315可具有不同數目個時隙。在一個或一個以上實施例中,通道命令隊列315可按將執行命令的次序保持所述命令。在一個或一個以上實施例中,通道命令隊列315可按通道命令隊列315接收命令的次序保持所述命令。舉例來說,通道命令時隙1 325-1可保持將第一個執行及/或由通道命令隊列315第一個接收的命令,通道命令時隙1 325-2可保持將在執行保持于通道命令時隙1 325-1中的命令之后執行及/或在接收到保持于通道命令時隙1 325-1中的命令之后接收到的命令,通道命令時隙2 325-3可保持將在執行保持于通道命令時隙2 325-2中的命令之后執行及/或在接收到保持于通道命令時隙2 325-2中的命令之后接收到的命令寸。圖4A圖解說明根據本發明一個或一個以上實施例的通道命令隊列415的框圖。在一個或一個以上實施例中,通道命令隊列415可類似于圖2中所示的后端通道1命令隊列 215-1、…、215-N或圖3中所示的通道命令隊列315。通道命令隊列415包括通道命令時隙 425-1、425-2、425-3、425-4、425-5、425-6、425-7、425-8、…、425-M,所述通道命令時隙可類似于圖3中所示的通道命令時隙1 325-1、通道命令時隙2 325-2、通道命令時隙3 325-3、 通道命令時隙4 325-4、…、通道命令時隙M 325-M。在圖4A所圖解說明的實施例中,每一通道命令時隙425-1到425-M保持命令。舉例來說,通道命令時隙425-1正保持命令1,通道命令時隙425-2正保持命令2等。命令1 是用以編程陣列中對應于主機的開始于LBA 1000的16個邏輯扇區(例如,來自所述主機的16個數據邏輯扇區)的存儲器單元的命令。命令2是用以讀取所述陣列中對應于所述主機的開始于LBA 2000的4個邏輯扇區的存儲器單元的命令。命令3是用以編程所述陣列中對應于所述主機的開始于LBA 1000的48個邏輯扇區的存儲器單元的命令。命令4是用以讀取所述陣列中對應于所述主機的開始于LBA 2002的10個邏輯扇區的存儲器單元的命令。命令5是用以讀取所述陣列中對應于所述主機的開始于LBA 2000的16個邏輯扇區的存儲器單元的命令。命令6是用以編程所述陣列中對應于所述主機的開始于LBA 1040 的16個邏輯扇區的存儲器單元的命令。命令7是用以編程所述陣列中對應于所述主機的開始于LBA 3000的2個邏輯扇區的存儲器單元的命令。命令8是用以編程所述陣列中對應于所述主機的開始于LBA 3002的2個邏輯扇區的存儲器單元的命令。可根據本發明的一個或一個以上實施例修改保持于通道命令隊列415中的命令。 舉例來說,可將通道命令時隙425-1、425-3及425-6中的命令組合成用以編程所述陣列中對應于所述主機的開始于LBA 1000的56個邏輯扇區的存儲器單元的命令(例如,單個命令)。可刪除通道命令時隙425-2及425-4中的命令。可將通道命令時隙425-7及425-8 中的命令組合成用以編程所述陣列中對應于所述主機的開始于LBA 3000的4個邏輯扇區的存儲器單元的單個命令。圖4B圖解說明在已根據本發明的一個或一個以上實施例修改圖4A中所示的命令之后的通道命令隊列415的框圖。如在圖4B中所示,保持于通道命令時隙425-1中的命令 1是用以編程所述陣列中對應于所述主機的開始于LBA 1000的56個邏輯扇區的存儲器單元的命令,保持于通道命令時隙425-2中的命令2是用以讀取所述陣列中對應于所述主機的開始于LBA 2000的16個邏輯扇區的存儲器單元的命令,且保持于通道命令時隙425-3 中的命令3是用以編程所述陣列中對應于所述主機的開始于LBA 3000的4個邏輯扇區的存儲器單元的命令。Mrk本發明包括用于修改命令的方法、裝置、模塊及系統。一個裝置實施例包括存儲器控制器,所述存儲器控制器包括通道,其中所述通道包括經配置以保持命令的命令隊列及經配置以修改所述隊列中的至少若干個命令且執行所述經修改命令的電路。盡管本文中已圖解說明及描述了具體實施例,但所屬領域的技術人員將了解,經計算以實現相同結果的布置可替代所顯示的具體實施例。本發明既定涵蓋本發明的一個或一個以上實施例的更改或變化形式。應理解,已以說明性方式而非限制性方式作出以上說明。在審閱以上說明后,所屬領域的技術人員將明了以上實施例的組合及本文中未具體描述的其它實施例。本發明的一個或一個以上實施例的范圍包括其中使用以上結構及方法的其它應用。因此,應參照所附權利要求書連同授權于此權利要求書的等效物的全部范圍來確定本發明的一個或一個以上實施例的范圍。在前述實施方式中,出于簡化本發明的目的而將一些特征一起集合于單個實施例中。本發明的此方法不應解釋為反映本發明的所揭示實施例必須使用比明確陳述于每一權利要求中更多的特征的意圖。而是,如以上權利要求書所反映,發明性標的物在于少于單個所揭示實施例的所有特征。因此,以上權利要求書借此并入實施方式中,其中每一權利要求獨立地作為單獨實施例。
權利要求
1.一種存儲器控制器,其包含 通道,其中所述通道包括命令隊列,其經配置以保持命令;及電路,其經配置以修改所述隊列中的至少若干個命令;及執行所述經修改命令。
2.根據權利要求1所述的存儲器控制器,其中經配置以修改至少若干個命令的電路包含經配置以在所述若干個命令保持于所述隊列中時修改所述若干個命令的電路。
3.根據權利要求1所述的存儲器控制器,其中經配置以修改至少若干個命令的電路包含經配置以改變所述隊列中的命令保持于所述隊列中的次序的電路。
4.根據權利要求3所述的存儲器控制器,其中經配置以執行所述經修改命令的電路包含經配置以根據所述已改變次序執行所述隊列中的命令的電路。
5.根據權利要求1到4中任一權利要求所述的存儲器控制器,其中所述電路進一步經配置以確定是否可修改所述隊列中的命令。
6.根據權利要求1所述的存儲器控制器,其中經配置以修改至少若干個命令的電路包含以下電路中的至少一者經配置以在可將所述隊列中的若干個命令組合成一命令的情況下修改所述隊列中的所述若干個命令的電路;或經配置以在所述隊列中的若干個命令將被所述隊列中的另一命令蓋寫的情況下修改所述隊列中的所述若干個命令的電路。
7.根據權利要求6所述的存儲器控制器,其中經配置以在可將所述隊列中的若干個命令組合成一命令的情況下修改所述隊列中的所述若干個命令的電路包含經配置以在可將所述隊列中的若干個命令組合成單個命令的情況下修改所述隊列中的所述若干個命令的電路。
8.根據權利要求6所述的存儲器控制器,其中經配置以在可將所述隊列中的若干個命令組合成一命令的情況下修改所述隊列中的所述若干個命令的電路包含以下電路中的至少一者經配置以將若干個重疊命令組合成一命令的電路;或經配置以將若干個順序命令組合成一命令的電路。
9.根據權利要求6到8中任一權利要求所述的存儲器控制器,其中經配置以在所述隊列中的若干個命令將被所述隊列中的另一命令蓋寫的情況下修改所述隊列中的所述若干個命令的電路包含經配置以進行以下操作的電路確定所述隊列中的一命令是否將被所述隊列中的另一個命令蓋寫;及刪除將被所述另一個命令蓋寫的所述命令。
10.根據權利要求1到4中任一權利要求所述的存儲器控制器,其中所述電路包括以下各項中的至少一者處理器;或專用集成電路。
11.一種存儲器控制器,其包含通道,其中所述通道包括命令隊列,其經配置以保持若干個命令;及處理器,其經配置以執行選自包括以下各項的功能群組的若干個功能 改變將命令保持于所述隊列中的次序; 將所述隊列中的若干個可組合命令組合成一命令;及刪除所述隊列中的將被所述隊列中的另一個命令蓋寫的命令。
12.根據權利要求11所述的存儲器控制器,其中經配置以執行選自所述功能群組的若干個功能的處理器包含經配置以執行選自所述功能群組的一個或一個以上功能的處理器。
13.根據權利要求11所述的存儲器控制器,其中可組合命令包括 重疊命令;及順序命令。
14.根據權利要求11到13中任一權利要求所述的存儲器控制器,其中 所述通道為后端通道;且所述存儲器控制器包括前端通道,其中 所述前端通道包括命令調度程序;且所述命令調度程序經配置以將若干個命令發送到所述后端通道;且所述隊列經配置以按所述命令調度程序將命令發送到所述后端通道的次序保持所述命令。
15.根據權利要求14所述的存儲器控制器,其中所述隊列經配置以保持等于所述命令調度程序可保持的命令的數目的數目個命令。
16.根據權利要求14所述的存儲器控制器,其中所述命令調度程序經配置以 從主機接收若干個命令;及按所述命令調度程序從所述主機接收所述命令的次序將所述命令發送到所述后端通道。
17.根據權利要求16所述的存儲器控制器,其中 所述前端通道包括命令處理器;且所述命令處理器經配置以執行選自包括以下各項的功能群組的若干個功能 改變所述命令調度程序將命令發送到所述后端通道的所述次序; 將所述命令調度程序從所述主機接收的若干個可組合命令組合成一命令;及刪除所述命令調度程序從所述主機接收的將被所述命令調度程序從所述主機接收的另一個命令蓋寫的命令。
18.根據權利要求17所述的存儲器控制器,其中所述命令處理器經配置以在所述命令調度程序不能夠從所述主機接收命令時執行所述若干個功能。
19.根據權利要求18所述的存儲器控制器,其中所述命令處理器經配置以在所述命令調度程序已滿時執行所述若干個功能。
20.根據權利要求14所述的存儲器控制器,其中 所述前端通道包括命令處理器;且所述命令處理器經配置以確定是否不對所述命令調度程序中所保持的命令執行所述功能群組中的所述功能;及標記所述命令調度程序中所保持的不對其執行所述功能群組中的所述功能的命令。
21.根據權利要求20所述的存儲器控制器,其中所述處理器經配置以不對經標記命令執行所述功能群組中的所述功能。
22.—種存儲器控制器,其包含若干個后端通道,其中所述若干個后端通道包括 命令隊列,其經配置以保持若干個命令;及處理器,其經配置以修改所述命令隊列中的命令,其中修改所述命令包括執行選自包括以下各項的功能群組的若干個功能改變將命令保持于所述隊列中的次序;將所述隊列中的重疊命令組合成一命令;將所述隊列中的順序命令組合成一命令;及刪除所述隊列中的將被所述隊列中的另一個命令蓋寫的命令;及根據將所述經修改命令保持于所述隊列中的次序執行所述經修改命令。
23.根據權利要求22所述的存儲器控制器,其中經配置以保持若干個命令的命令隊列包含經配置以保持若干個讀取命令的命令隊列,其中所述若干個讀取命令包括用以讀取響應于先前讀取命令先前所讀取的存儲于存儲器陣列中的若干個存儲器單元上的數據的命令,且其中所述存儲器控制器進一步經配置以在不存取所述陣列的情況下執行所述用以讀取先前所讀取的數據的命令。
24.根據權利要求23所述的存儲器控制器,其中所述若干個后端通道包括經配置以保持所述先前所讀取的數據的數據緩沖器,且其中所述處理器經配置以通過存取所述數據緩沖器來執行所述若干個讀取命令中的至少一者的至少一部分。
25.根據權利要求22所述的存儲器控制器,其中 所述存儲器控制器包括前端通道;且所述前端通道包括耦合到所述若干個后端通道的前端直接存儲器存取(DMA)。
26.根據權利要求25所述的存儲器控制器,其中 所述若干個后端通道包括通道DMA ;且所述前端DMA耦合到所述通道DMA。
27.根據權利要求22到沈中任一權利要求所述的存儲器控制器,其中所述若干個后端通道包括經配置以將所述存儲器控制器耦合到若干個存儲器陣列的接口。
28.一種用于操作存儲器裝置的方法,其包含修改保持于隊列中的若干個命令,其中修改所述若干個命令包括執行選自包括以下各項的功能群組的若干個功能改變將命令保持于所述隊列中的次序;將所述隊列中的若干個可組合命令組合成一命令;及刪除所述隊列中的將被所述隊列中的另一個命令蓋寫的命令;及根據將所述經修改命令保持于所述隊列中的次序執行所述經修改命令。
29.根據權利要求觀所述的方法,其中改變將命令保持于所述隊列中的次序包括按將執行所述命令的次序來排序所述命令;且根據將所述經修改命令保持于所述隊列中的次序執行所述經修改命令包括根據將執行所述命令的所述次序來執行所述命令。
30.根據權利要求觀所述的方法,其中將所述隊列中的若干個可組合命令組合成一命令包括將所述隊列中的若干個可組合命令組合成單個命令。
31.根據權利要求觀所述的方法,其中組合所述若干個可組合命令包括組合重疊命令;及組合順序命令。
32.根據權利要求觀到31中任一權利要求所述的方法,其中所述方法包括在正執行所述經修改命令時在所述隊列中接收額外命令;及在正執行所述經修改命令時修改所述額外命令。
33.根據權利要求觀到31中任一權利要求所述的方法,其中執行所述經修改命令包括執行所述經修改命令以對存儲器陣列進行操作。
34.一種用于操作存儲器裝置的方法,其包含將保持于隊列中的若干個可組合命令組合成一命令,借此避免部分頁編程操作。
35.根據權利要求34所述的方法,其中將所述若干個可組合命令中的每一者與特定存儲器單元頁的一部分相關聯。
36.根據權利要求34到35中任一權利要求所述的方法,其進一步包含執行所述經組合命令。
37.一種用于操作存儲器裝置的方法,其包含在位于存儲器控制器的后端通道中的隊列中接收若干個命令;修改所述隊列中的所述若干個命令;及執行所述經修改命令。
38.根據權利要求37所述的方法,其中修改所述隊列中的所述若干個命令包括改變所述若干個命令的次序;且執行所述經修改命令包括根據所述已改變次序執行所述若干個命令。
39.根據權利要求37所述的方法,其中在所述隊列中接收若干個命令包括接收與重疊邏輯塊地址(LBA)相關聯的若干個命令;且修改所述隊列中的所述若干個命令包括將與重疊LBA相關聯的所述若干個命令組合成單個命令。
40.根據權利要求37所述的方法,其中在所述隊列中接收若干個命令包括接收與順序邏輯塊地址(LBA)相關聯的若干個命令;且修改所述隊列中的所述若干個命令包括將與順序LBA相關聯的所述若干個命令組合成單個命令。
41.根據權利要求37所述的方法,其中在所述隊列中接收若干個命令包括接收與特定邏輯塊地址(LBA)相關聯的第一命令;及在所述第一命令之后接收與所述特定LBA相關聯的第二命令;且修改所述隊列中的所述若干個命令包括刪除所述第一命令。
42.根據權利要求37到41中任一權利要求所述的方法,其中在所述隊列中接收若干個命令包括從前端通道接收若干個命令。
全文摘要
本發明包括用于修改命令的方法、裝置、模塊及系統。一個裝置實施例包括存儲器控制器,所述存儲器控制器包括通道,其中所述通道包括經配置以保持命令的命令隊列及經配置以修改所述隊列中的至少若干個命令且執行所述經修改命令的電路。
文檔編號G06F12/00GK102317928SQ200980156842
公開日2012年1月11日 申請日期2009年12月30日 優先權日2009年1月9日
發明者邁赫迪·阿斯納阿沙里 申請人:美光科技公司