TW201314464A - 輸入/輸出裝置及計算主機相互運作 - Google Patents

輸入/輸出裝置及計算主機相互運作 Download PDF

Info

Publication number
TW201314464A
TW201314464A TW101128817A TW101128817A TW201314464A TW 201314464 A TW201314464 A TW 201314464A TW 101128817 A TW101128817 A TW 101128817A TW 101128817 A TW101128817 A TW 101128817A TW 201314464 A TW201314464 A TW 201314464A
Authority
TW
Taiwan
Prior art keywords
command
data
standard
computing host
mapping
Prior art date
Application number
TW101128817A
Other languages
English (en)
Other versions
TWI584125B (zh
Inventor
Earl T Cohen
Timothy Lawrence Canepa
Farbod Michael Raam
Original Assignee
Lsi Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lsi Corp filed Critical Lsi Corp
Publication of TW201314464A publication Critical patent/TW201314464A/zh
Application granted granted Critical
Publication of TWI584125B publication Critical patent/TWI584125B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本發明揭示一種輸入/輸出(I/O)裝置,其耦合至一計算主機。在某些實施例中,該裝置經啟用以利用不直接耦合至該裝置之該計算主機之記憶體來儲存諸如該裝置之一映射之一陰影複本及/或該裝置之狀態等資訊。該映射之該陰影副本之儲存使得該裝置及該計算主機中之一者或兩者能夠利用該映射之該陰影副本以便減少讀取延時。該狀態之儲存使得該裝置能夠保存原本將在該裝置進入一低電力狀態時丟失之揮發性狀態。在某些實施例中,該裝置實施標準命令之一或多個非標準修改符。該等非標準修改符修改對該等標準命令之執行,從而提供不存在於僅具有該等標準命令之一主機協定中之特徵。

Description

輸入/輸出裝置及計算主機相互運作
需要計算主機及I/O裝置技術之進步以提供效能、效率及使用效用之改良。
在隨附申請案資料列表、請求書或傳送信中進行本申請案之優先權權益主張(若存在,在適當時)。在本申請案之類型准許之情況下,本申請案出於所有目的而以引用方式併入有以下申請案(其在做出本發明時全部與本申請案共同擁有):2011年8月9日提出申請、第一發明人為Earl T.COHEN且標題為I/O DEVICE AND COMPUTING HOST INTEROPERATION之美國臨時申請案(檔案號為SF-11-15且序列號為61/521,739);2011年9月6日提出申請、第一發明人為Earl T.COHEN且標題為I/O DEVICE AND COMPUTING HOST INTEROPERATION之美國臨時申請案(檔案號為SF-11-15A且序列號為61/531,551);及2011年10月5日提出申請、第一發明人為Earl T.COHEN且標題為I/O DEVICE AND COMPUTING HOST INTEROPERATION之美國臨時申請案(檔案號為SF-11-15B且序列號為61/543,666)。
除非明確識別為公眾習知或眾所周知,否則本文中提及之出於上下文、定義或比較目的而包含之技術及概念不應 視為承認此等技術及概念係先前公眾習知或以其他方式作為先前技術之部分。本文中所述之包含專利、專利申請案及公開案之全部參考文獻(若存在)皆出於所有目的而以全文引用之方式明確地或不明確地併入本文中。
本發明可以眾多方式實施,例如,作為一處理程序、一製造物件、一設備、一系統、一物質組合物及諸如一電腦可讀儲存媒體之一電腦可讀媒體(例如,一光學及/或磁性大容量儲存裝置中之媒體,諸如一磁碟、具有諸如快閃儲存之非揮發性儲存之一積體電路)或其中在光學或電子通信鏈路上發送程式指令之一電腦網路。[實施方式]提供本發明之達成在上文所識別領域中之成本、有利性、效能、效率及使用效用之改良的一或多個實施例之一解釋。[實施方式]包含一導論以促進對[實施方式]之其餘部分之理解。該導論包含根據本文中所闡述之概念之系統、方法、製造物件及電腦可讀媒體中之一或多者之實例性實施例。如在總論中更詳細地論述,本發明涵蓋在所發佈之申請專利範圍之範疇內的所有可能修改及變化。
結合圖解說明本發明之選定細節之附圖在下文中提供本發明之一或多個實施例之一詳細說明。本發明係連同該等實施例一起闡述。本文中之實施例應理解為僅係例示性的,本發明明確地不限於或受限於本文中實施例中之任一者或全部,且本發明涵蓋眾多替代、修改及等效物。為避 免解釋之單調性,可將多種措詞標誌(包含但不限於:第一、最後、某一(些)、各種、進一步、其他、特定、選擇、某一(些)及顯著的)應用於單獨組之實施例;如本文所使用,此等標誌明確地不意在表達品質或任何形式之偏好或偏見,而僅在該等單獨組之間便利地加以區分。所揭示處理程序之某些運作之次序在可本發明之範疇內更改。儘管多個實施例起到闡述處理程序、方法及/或程式指令特徵中之變化之作用,但亦預計根據一預定準則或一動態判定之準則執行分別對應於複數個該多個實施例之複數個運作模式中之一者之靜態及/或動態選擇之其他實施例。在以下說明中陳述眾多特定細節以提供對本發明之一透徹理解。出於舉例目的提供該等細節,且可在不具有該等細節中之某些或全部之情況下根據申請權利範圍來實踐本發明。出於清晰目的,並未詳細闡述關於本發明之技術領域所習知之技術材料,以便不必要地使本發明模糊不清。
導論
本文僅出於促進更快速地理解[實施方式]之目的而包含此導論;本發明不限於該導論中所呈現之概念(若存在,包含明確實例),此乃因任何導論之段落係整個主題之示意圖,且不意在係窮盡性或限制性說明。舉例而言,下文之導論提供由空間所限之概略資訊及對僅某些實施例之組織。貫穿該說明書均衡地論述諸多其他實施例,包含申請專利範圍將涉及之彼等實施例。
縮寫字
本文所定義之各種簡寫縮略語(例如,縮寫字)中之至少某些係指本文中所使用之某些元件。
在某些實施例中,諸如一固態磁碟(SSD)之一I/O裝置經由一主機介面耦合至一主機計算系統(本文中亦簡稱為一主機)。根據各種實施例,該耦合係經由包含PCIe、SATA、SAS、USB、乙太網路、光纖通道之一或多個主機介面或適於耦合兩個電子裝置之任何其他介面。在進一步之實施例中,該主機介面包含一電傳訊介面及一主機協定。該主機協定定義用於與I/O裝置通信之標準命令,包含將資料發送至I/O裝置及自I/O裝置接收資料之命令。
該主機計算系統包含本文中稱為一計算主機(或有時簡稱為一「主機」)之一或多個處理元件。根據各種實施例,該計算主機執行以下各項中之一或多者:監督軟體,諸如一作業系統及/或一監督程式;用以在監督軟體與I/O裝置之間通信之一驅動程式;應用程式軟體;及一BIOS。在進一步之實施例中,該驅動程式之一部分之某些或全部或一複本併入於BIOS、作業系統、監督程式及應用程式中之一或多者中。在又進一步之實施例中,該應用程式經啟用以藉由以一繞過模式透過該驅動程式發送命令及/或藉 由與I/O裝置直接通信而與I/O裝置更直接地通信。與一I/O裝置直接通信之一應用程式之一實例由一PCIe I/O裝置之虛擬函式(VF)提供。該驅動程式與I/O裝置之一主要功能通信以全域地組態I/O裝置,且一或多個應用程式經由各別虛擬函式而與I/O裝置直接通信。該等虛擬函式使得該等應用程式中之每一者能夠將I/O裝置之至少一部分視為該應用程式之一私用I/O裝置。
在標準化主機協定時,主機協定之標準命令為I/O裝置提供一組特徵及能力。某些I/O裝置具有標準主機協定中不支援之特徵及/或能力且因此不可由使用標準主機協定之一計算主機控制。因此,在某些實施例中,非標準特徵及/或能力經由包含以下各項中之一或多者之技術添加至主機協定:使用所保留命令碼;使用廠商特定命令;使用現有命令中之所保留欄位;使用未由特定I/O裝置使用之某些命令欄位中之位元(諸如,未使用之位址位元);將新特徵添加至能力暫存器(諸如,藉由一SET FEATURES命令添加於SATA中);藉由彙總及/或合併命令;及此項技術中習知之其他技術。非標準特徵及/或能力之使用視情況連同經啟用以與I/O裝置通信之一非標準驅動程式及/或一應用程式之使用。
本文中,一標準命令之一非標準修改符係指使用以上技術中之任一者以用標準主機協定中不支援之非標準特徵及/或能力來擴展一標準命令。在各種實施例中,一非標準修改符(或其部分)稱為視情況由一(標準)命令使用或藉助 一(標準)命令提供之一提示。在一第一實例中,該非標準修改符編碼為主機協定中之一命令之部分且僅影響彼命令(例如,一「一次一個」提示)。在一第二實例中,該非標準修改符編碼為主機協定中之一命令之部分且保持對後續命令有效應(例如,一「黏性」提示),除非(諸如)藉由後續命令中之一者上之另一非標準修改符暫時停用該非標準修改符,或直至(諸如)藉由另一命令上之另一非標準修改符針對所有其他命令停用該非標準修改符。在一第三實例中,該非標準修改符係藉由一模式設定命令在一組態暫存器中啟用(諸如,藉由一SET FEATURES命令在SATA中啟用)且保持有效應直至(諸如)藉由另一模式設定命令明確停用該非標準修改符。此等實例之諸多組合及變化係可能的。
根據各種實施例,該等非標準特徵及/或能力影響以下各項中之一或多者:命令之執行;命令之電力及/或效能;與一命令相關聯之資料之處置及/或處理;多個命令之間的一關係;多個命令之資料之間的一關係;修整一命令之資料之一指示;一命令之資料係不可校正之一指示;一命令之資料之一類型之一規格;一命令之資料之一資料存取類型之一規格;多個命令之資料之資料定序之一規格;多個命令之資料之間的一資料關係之一規格;任何其他資料值、資料類型、資料序列、資料關係、資料目的地或資料性質規格;I/O裝置之一性質,諸如電力及/或效能;及影響I/O裝置之運作,及/或命令及/或資料之處理, 及/或資料之儲存、擷取及/或回收之任何其他特徵及/或能力。
在某些實施例及/或使用情景中,一命令包含複數個LBA中之一者,且一映射視情況及/或選擇性地使該命令與該映射之複數個項目中之一者相關聯。該映射之項目中之每一者包含在I/O裝置之一NVM中之一位置及/或與LBA相關聯之資料不存在於該NVM中(例如,自該NVM未分配、去分配、刪除或修整)之一指示。根據各種實施例,回應於接收命令,I/O裝置執行以下各項中之一或多者:存取與LBA相關聯的映射之項目;將命令之一非標準修改符之一指示儲存於與LBA相關聯的映射之項目中;自與LBA相關聯的映射之項目擷取一先前命令之一非標準修改符之一指示;及回應於接收命令而由一I/O裝置執行之其他運作。自該映射之一項目儲存及/或擷取一非標準修改符使得該非標準修改符之效應與LBA中之特定一者相關聯及/或跨越多個命令存留。舉例而言,一命令包含一特定非標準修改符,其規定複數個資料頻帶中之一固定者之一資料目的地。除將該命令之資料儲存於經規定固定資料頻帶中以外,亦將該特定非標準修改符之一指示儲存於與該命令之一LBA相關聯的映射之一項目中。命令之資料之隨後回收經啟用以存取與命令之LBA相關聯的映射之項目,且根據特定非標準修改符之指示,致使該回收使資料往回回收至經規定固定資料頻帶。
規定資料之一類型之一非標準修改符之實例包含資料之 一可壓縮性(諸如,不可壓縮)之規格或資料之一使用模型(諸如,用作一資料庫日誌)之規格。在某些例項中,經識別(例如,藉由I/O裝置及主機)而具有一特定類型(諸如,經由該規格或已記錄於映射中之一先前提供之規格)之資料藉由I/O裝置視情況及/或選擇性地更高效地處理。在某些使用情景中,舉例而言,經識別而具有一資料庫日誌類型之資料視情況及/或選擇性地儲存於複數個資料頻帶中之一資料庫日誌資料頻帶中,該資料庫日誌資料頻帶經保留而用於該資料庫日誌類型之資料。在各種實施例中,該資料庫日誌資料頻帶具有一固定大小,且當充滿時,視情況及/或選擇性地自動刪除該資料庫日誌資料頻帶中之最舊資料。
規定一資料存取類型之一非標準修改符之實例包含一讀取/寫入存取類型之規格、一主讀存取類型之規格、一主寫存取類型之規格、一單次寫入(亦稱為唯讀)存取類型之規格及一暫態存取類型之規格。在某些例項中,經識別(例如,藉由I/O裝置及主機)而具有一特定存取類型(諸如,經由該規格或已記錄於映射中之一先前提供之規格)之資料藉由I/O裝置視情況及/或選擇性地更高效地處理。在一第一實例中,識別其中讀取或寫入資料之一相對頻率視情況及/或選擇性地使得I/O裝置能夠以一方式及/或在一位置中有利地儲存該資料以更高效地達成該資料之寫入、存取、讀取及/或回收。在一第二實例中,藉由I/O裝置識別為單次寫入之資料之標準寫入存取視情況及/或選擇性 地被視為一錯誤。
在某些實施例中,一暫態存取類型之規格使得能夠由I/O裝置儲存資料,且進一步視情況及/或選擇性地使得I/O裝置能夠在尚未自計算主機接收一命令以刪除及/或修整(例如,「自動修整」)該資料之情況下如此做。舉例而言,識別儲存之一特定部分係暫態視情況及/或選擇性地使得I/O裝置能夠修整儲存之該部分而非將其回收。根據各種實施例,隨後藉由一計算主機對已由I/O裝置刪除或修整之暫態資料進行之存取傳回以下各項中之一或多者:已刪除或修整資料之一指示;一錯誤指示;含有一特定型樣及/或值之資料;及已由I/O裝置刪除或修整資料之去往計算主機之任何其他指示。
在各種實施例中,一重設後暫態存取類型之一規格使得能夠由I/O裝置儲存資料,且進一步視情況及/或選擇性地使得I/O裝置能夠在尚未自計算主機接收一命令以刪除及/或修整(例如,自動修整)該資料之情況下如此做,只不過此係在I/O裝置及/或包含I/O裝置之一系統之一隨後供電循環及/或重設之後。舉例而言,某些作業系統資料(諸如,頁檔案)及/或某些應用程式資料(諸如,一記憶體快取應用程式之資料)在該系統之一供電循環及/或重設之後係無效的。在某些實施例中,重設後暫態存取類型之一指示包含一計數器,諸如一兩位元計數器。一全域計數器之一值用以初始化重設後暫態存取類型之指示之計數器。針對I/O裝置及/或系統之每一供電循環及/或重設使全域計數器遞 增。具有重設後暫態存取類型之指示之儲存之一特定部分(諸如,I/O裝置之一NVM之一部分)在處理儲存之該特定部分以用於根據重設後暫態存取類型之指示之計數器是否匹配全域計數器而回收時被選擇性地修整。在又進一步之實施例中,存在多個全域計數器,該等全域計數器中之每一者視情況及/或選擇性地獨立遞增,且重設後暫態類型之指示進一步包含該等全域計數器中之一各別者之一規格。在各種實施例中,使用除計數器以外之技術(諸如,位元遮罩或固定值)來區分儲存之特定部分是否在回收時被選擇性地修整。
在又進一步之實施例中,供電循環及/或重設之指示係以下之一信號:自計算主機提供以指示具有一重設後暫態存取類型之一指示之儲存之一部分經啟用以在隨後處理儲存之該部分以用於回收時被修整。在一第一實例中,在具有虛擬機之一環境中,自計算主機提供之信號係一虛擬機之一重設及/或終止之一指示。在一第二實例中,關於一記憶體快取應用程式,自計算主機提供之信號係該記憶體快取應用程式之一重設及/或終止之一指示。在一第三實例中,供電循環及/或重設之指示係I/O裝置之一虛擬函式之一函式階層重設。在某些使用情景中,與該虛擬函式相關聯的I/O裝置之一NVM之僅若干部分受該函式階層重設影響。
規定一資料定序之一非標準修改符之實例包含一順序資料定序之規格及一不可部分完成資料定序之規格。在某些 例項中,經識別(例如,藉由I/O裝置及主機)而具有一特定資料定序(諸如,經由該規格或已記錄於映射中之一先前提供之規格)之資料藉由I/O裝置視情況及/或選擇性地更高效地處理。在一第一實例中,識別屬於一順序資料定序之資料視情況及/或選擇性地使得I/O裝置能夠以一方式及/或在一位置中有利地儲存該資料以更高效地達成該資料之寫入、存取、讀取及/或回收。在一第二實例中,識別屬於一不可部分完成資料定序之資料視情況及/或選擇性地使得I/O裝置能夠有利地將該不可部分完成資料定序之資料視為一單元且保證該不可部分完成資料定序之資料中之全部資料或無資料經成功地寫入而可由計算主機觀測到。在某些實施例中,寫入一不可部分完成資料序列包含寫入指示該序列之一開始及/或一結束之後設資料,諸如記錄資訊。
規定一資料關係之一非標準修改符之實例包含多個資料物項之間的一讀取及/或一寫入關聯性之規格。在某些例項中,經識別(例如,藉由I/O裝置及主機)而具有一特定資料關係(諸如,經由該規格或已記錄於映射中之一先前提供之規格)之資料藉由I/O裝置視情況及/或選擇性地更高效地處理。舉例而言,識別兩個資料物項之間的一讀取資料關係視情況及/或選擇性地使得I/O裝置能夠在讀取該等資料物項中之一第一者時有利地預提取該等資料物項中之一第二者。在某些使用實例及/或情景中,第一資料物項係一檔案系統中之一檔案之一標籤,且第二資料物項係該檔 案之一對應範圍。根據各種實施例,一資料關係係以下各項中之一或多者:一對一;一對多;多對一;多對多;針對不同命令之一不同資料關係,諸如,與一寫入命令相比,針對一讀取命令不同;及資料物項之間的任何其他關係。
規定一資料目的地之一非標準修改符之實例包含NVM之一特定部分(諸如,一特定快閃儲存元件或若干快閃儲存元件之集合,例如,用以使得在NVM之元件之間散佈資料)之一規格、一階層式儲存層級之一規格、一儲存類型之一規格及複數個資料頻帶之一規格。在某些例項中,經識別(例如,藉由I/O裝置及主機)而具有一特定資料目的地(諸如,經由該規格或已記錄於映射中之一先前提供之規格)之資料藉由I/O裝置視情況及/或選擇性地更高效地處理。在一第一實例中,識別將資料優先儲存於一規定儲存類型中視情況及/或選擇性地使得I/O裝置能夠將該資料有利地儲存於複數個不同特性記憶體(諸如SLC快閃對MLC快閃,諸如快閃對MRAM或諸如揮發性記憶體對NVM)中之一者中。該等記憶體之不同特性包含以下各項中之一或多者:揮發性;諸如存取時間、延時及/或頻寬等效能;讀取、寫入或抹除時間;電力;可靠性;耐久性;較低階錯誤校正及/或冗餘能力;較高階錯誤校正及/或冗餘能力;及其他記憶體特性。在一第二實例中,識別欲將資料儲存於複數個資料頻帶中之一規定者中視情況及/或選擇性地使得I/O裝置能夠將該資料有利地儲存於該經規定資料頻 帶中以改良以下各項中之一或多者:寫入速度;回收速度;回收頻率;寫入放大;及其他資料儲存特性。
規定一命令關係之一非標準修改符之實例包含在命令之間強加一較佳或所需相對次序之一命令優先級之規格及在至少某些類型之命令之間強加一邊界之一命令障壁之規格。舉例而言,一寫入命令障壁類型之命令障壁對讀取命令係可透的但對寫入命令係不可透的,從而使得寫入命令障壁能夠確保在寫入命令障壁之完成之前完成所有先前提交之寫入命令。
一彙總及/或合併命令之一實例係視為一單元且不作為一整體執行或作為一整體執行之兩個或兩個以上命令之一組合。舉例而言,一非標準修改符規定一合併命令序列之一開始、一持續或一結束。該合併命令序列之命令以一不可部分完成方式執行以使得:除非成功地完成所有命令,否則該等命令中之任一者之效應皆不係可見的。一合併命令序列之一實例係一比較-寫入序列,其中一後續寫入命令之效應僅在(諸如)藉由比較而成功完成之一先前比較命令係相等之情形下係可見的。根據各種實施例,一合併命令序列之命令按以下方式中之一或多者執行:順序地;並行地;以藉由主機協定之排序規則判定之一次序;以其中該等命令由I/O裝置接收之一次序;及以任何次序。
在某些實施例中,諸如一SSD裝置之一I/O裝置包含一SSD控制器。SSD控制器充當SSD之主機介面與NVM之間的一橋接器,且執行經由SSD之一主機介面自一計算主機 發送之一主機協定之命令。該等命令中之至少某些命令引導SSD寫入及讀取NVM,其中分別係自計算主機發送資料及將資料發送至計算主機。在進一步之實施例中,SSD控制器經啟用以使用一映射來在主機協定之LBA與NVM中之實體儲存位址之間轉譯。在進一步之實施例中,該映射之至少一部分用於I/O裝置之私用儲存(對計算主機不可見)。舉例而言,不可由計算主機存取之LBA之一部分由I/O裝置使用以管理對記錄、統計或其他私用資料之存取。
根據各種實施例,該映射係以下各項中之一或多者:一單階映射;一雙階映射;一多階映射;一直接映射;一相關聯映射;及用於使主機協定之LBA與NVM中之實體儲存位址相關聯之任何其他手段。舉例而言,在某些實施例中,一雙階映射包含使一LBA之一第一功能與複數個第二階映射頁中之一者之NVM中之一各別位址相關聯之一第一階映射,且該等第二階映射頁中之每一者使該LBA之一第二功能與對應於該LBA之資料之NVM中之一各別位址相關聯。在進一步之實施例中,LBA之第一功能及LBA之第二功能之一實例係在除以第二階映射頁中之每一者中所包含之項目之一固定數目時獲得之一商及一餘數。複數個第二階映射頁統稱為一第二階映射。本文中,提及一映射之一或多個項目係指任何類型之映射之一或多個項目,包含一單階映射、一雙階映射之一第一階、一雙階映射之一第二階、一多階映射之任何階或具有若干項目之任何其他類型之映射。
根據各種實施例,一第二階映射(或一多階映射之一較低階)之映射頁中之每一者達成以下各項中之一或多者:包含與該等映射頁中之其他映射頁相同之數目個項目;包含與該等映射頁中之至少某些其他映射頁不同之數目個項目;包含與該等映射頁中之其他映射頁相同之一粒度之項目;包含與該等映射頁中之其他映射頁不同之一粒度之項目;包含全部具有一相同粒度之項目;包含具有多個粒度之項目;包含規定該映射頁之內容之一格式及/或佈局之一各別標頭;及具有用以表示該映射頁之項目之任何其他格式、佈局或組織。舉例而言,一第一第二階映射頁具有每項目4KB之一粒度之一規格,且一第二第二階映射頁具有每項目8KB且僅一半與該第一第二階映射頁之項目一樣多之一粒度之一規格。
在進一步之實施例中,一較高階映射之項目包含對應較低階映射頁之資訊之格式及/或佈局。舉例而言,一第一階映射中之項目中之每一者包含針對相關聯之第二階映射頁中之項目之一粒度規格。
在某些實施例中,該映射包含複數個項目,該等項目中之每一者使一或多個LBA與選擇性地包含其中儲存LBA之資料之NVM中之一各別位置之資訊相關聯。舉例而言,LBA規定512B磁區,且映射中之每一項目與LBA之一經對準之八磁區(4KB)區相關聯。
根據各種實施例,映射之項目之資訊包含以下各項中之一或多者:NVM中之一位置;NVM中之一讀取單元之一 位址;經讀取以獲得儲存於NVM中之相關聯之LBA之資料之讀取單元之一數目;儲存於NVM中之相關聯之LBA之資料之一大小,該大小具有視情況及/或選擇性地大於一個位元組之一粒度;相關聯之LBA之資料不存在於NVM中(諸如,由於相關聯之LBA之資料經修整)之一指示;相關聯之LBA之資料之一性質,包含應用於相關聯之LBA之資料之任何非標準修改符;及相關聯之LBA之資料之任何其他後設資料、性質或本性。
在某些實施例中,將NVM中之位址分組成若干區以減少表示該等位址中之一者所需之位元之一數目。舉例而言,若將I/O裝置之LBA劃分成64個區且將NVM劃分成64個區(針對LBA區中之每一者具有一個區),則與一特定LBA相關聯之一映射項目需要六個較少位址位元,此乃因NVM中之區中之一者能夠藉由特定LBA之區判定。根據各種實施例,LBA之區與NVM之區之間的一關聯性係藉由以下各項中之一或多者:相等;一直接關聯性,諸如1對1數值函數;一表查找;一動態映射;及用於使兩組數目相關聯之任何其他方法。
在各種實施例中,NVM中之位置包含複數個讀取單元中之一者之一位址,以及讀取單元之一長度及/或一跨度。長度係儲存於NVM中之複數個資料物項中之一特定者之一大小,該特定資料物項與包含該長度之映射之項目相關聯。根據各種實施例,長度具有以下各項中之一或多者之一粒度:一個位元組;一個以上位元組;一個讀取單元; 一讀取單元之一規定分率;根據資料物項中之一者之一最大允許壓縮率之一粒度;及用以追蹤儲存使用之任何其他粒度。跨度係儲存特定資料物項之一各別部分之讀取單元之一數目,諸如讀取單元之一整數。在進一步之實施例及/或使用情景中,讀取單元之跨度中之一第一讀取單元及/或讀取單元之跨度中之一最後讀取單元視情況及/或選擇性地儲存資料物項中之多個資料物項中之某些或全部資料物項。在某些實施例及/或使用情景中,長度及/或跨度係(諸如)藉由將長度儲存為自跨度之一位移(在其中長度及/或跨度經編碼之一上下文中有時稱為大小)而經編碼方式儲存。在某些實施例及/或使用情景中,長度及/或跨度之未使用之編碼編碼額外資訊,諸如一非標準修改符之一指示,或諸如關於一相關聯之資料物項是否存在於NVM中之一指示。
編碼NVM中之位置作為一位址及一長度使得儲存於NVM中之資料能夠在大小上變化。舉例而言,一第一4KB區之大小壓縮至400B、完全儲存於一單個讀取單元中且具有一個讀取單元之一長度,而一第二4KB區係不可壓縮的、跨越一個以上讀取單元且具有一個以上讀取單元之一長度。在進一步之實施例中,具有與LBA之一區相關聯的儲存之讀取單元之一長度及/或跨度使得能夠僅讀取擷取LBA之區之資料所需之NVM之一部分。
在某些實施例中,映射之項目中之每一者包含規定與該項目相關聯之LBA之一區之性質之資訊(有時稱為後設資 料)。在進一步之實施例中,該後設資料中之至少某些資料具有比該區之粒度精細之一粒度,諸如藉由針對該區之複數個LBA中之每一者具有單獨後設資料規格。根據各種實施例,該後設資料包含適用於及/或用以修改及/或控制與該區相關聯之NVM中之資料之寫入、存取、讀取及/或回收之一或多個非標準修改符。
作為回應於一命令之一非標準修改符而將後設資料儲存於一映射之一項目中之一項實例,一經擴展寫入命令包含一LBA及規定該寫入命令之資料係暫態之一非標準修改符。該寫入命令之資料儲存於NVM中,且與LBA相關聯之映射之一特定項目經更新以包含該寫入命令之資料之NVM中之一位置及與LBA相關聯之資料之暫態規格之一指示。存取該映射之特定項目之一後續運作(諸如,一後續命令或一內部運作,諸如回收)經啟用以判定與LBA相關聯之資料之暫態規格之指示,且在存在與LBA相關聯之資料之暫態規格之指示之情形下以不同方式執行。舉例而言,在某些實施例中,具有與一LBA相關聯之資料之暫態規格之指示之該LBA之回收經啟用以修整與該LBA相關聯之資料而非回收與該LBA相關聯之資料。
在某些實施例中,I/O裝置包含一外部記憶體(諸如,一DRAM)且該外部記憶體(諸如)經由一DDR2或DDR3介面直接耦合至I/O裝置之一元件。根據各種實施例,該外部記憶體用以達成以下各項中之一或多者:儲存I/O裝置之一映射之某些或全部;儲存I/O裝置之一多階映射之階中之 一或多者;緩衝發送至I/O裝置之寫入資料;儲存I/O裝置之內部狀態;及I/O裝置之任何其他記憶體儲存。舉例而言,該外部記憶體用以提供對映射之存取,但若該外部記憶體係揮發性的,則將更新選擇性地儲存至NVM中之映射。在各種實施例及/或使用情景中,該等更新係視情況、按條件及/或選擇性地立即儲存及/或延遲。在進一步之實施例及/或使用情景中,儲存所有更新。在其他實施例及/或使用情景中,不儲存該等更新中之某些更新(例如,由於在儲存一較舊更新之前由一較新更新替換該較舊更新或達成該等更新中之一或多者之省略儲存之還原技術)。根據各種實施例,該外部記憶體達成以下各項中之一或多者:係一SRAM;係一DRAM;係一MRAM或其他NVM;具有一DDR介面;具有一DDR2或DDR3介面;具有任何其他記憶體介面;及係任何其他揮發性或非揮發性外部記憶體裝置。
在諸如具有一多階映射之某些實施例等其他實施例中,該映射之一較低階連同來自計算主機之資料(諸如,與I/O裝置之LBA相關聯之資料)一起儲存於I/O裝置之一NVM中,且I/O裝置視情況及/或選擇性地不利用一直接耦合之DRAM。至少某些時候使用NVM來執行對映射之較低階之一項目之存取。
在某些實施例中,映射之一陰影複本儲存於計算主機之一記憶體中。在各種實施例中,I/O裝置將諸如映射之陰影複本或諸如內部狀態等資訊儲存於計算主機之記憶體 中。根據各種實施例,計算主機之記憶體係以下各項中之一或多者:計算主機之一主記憶體,諸如耦合至一處理器之一DRAM記憶體;計算主機之一系統可存取記憶體;計算主機之一I/O空間記憶體;計算主機之一PCIe可定址記憶體;一揮發性記憶體,諸如一DRAM記憶體或一SRAM記憶體;一NVM,諸如一快閃記憶體或一MRAM記憶體;可由I/O裝置存取且不直接耦合至I/O裝置之任何記憶體以及可由I/O裝置及計算主機兩者存取之任何記憶體。
根據各種實施例,映射之陰影複本包含以下各項中之一或多者:映射之項目中之至少某些項目;映射之所有項目;包含映射之對應項目之一子集之項目;包含根據映射之對應項目之資訊之項目;包含一有效指示及/或其他資訊之項目,該有效指示及/或其他資訊不存在於映射之項目中;僅對應於一雙階映射之最低階之項目之項目;僅對應於一多階映射之最低階之項目之項目;對應於映射之一頁結構之一頁結構,諸如對應於一雙階映射之第二階頁之一頁結構;及與映射在邏輯上一致之任何結構。
在進一步之實施例中,映射之陰影複本具有以下各項中之一或多者:具有與映射之對應項目相同之一格式之項目;具有與映射之對應項目類似之一格式之項目及具有與映射之對應項目不同之一格式之項目。在一第一實例中,一雙階映射之第二階頁以一經壓縮格式儲存於一NVM中,且該映射之第二階之一陰影複本以一經解壓縮格式儲存。在一第二實例中,一映射之一陰影複本之複數個部分(該 等部分包含該映射之陰影複本之項目中之一或多者)中之每一者具有不存於該映射中之一有效指示。該有效指示使得能夠獨立地初始化及/或更新該等部分。在一第三實例中,該映射之陰影複本之項目中之每一者具有不存在於該映射中之指示其中存在與該項目相關聯之LBA之一或多個儲存層級資料之資訊。在一第四實例中,該映射之項目中之每一者具有不存在於該映射之陰影複本中之指示與該項目相關聯之LBA之資料之一封存狀態之資訊。在一第五實例中,該映射之陰影複本及/或該映射經啟用以指示與項目相關聯之LBA之資料之一儲存層級。在一第六實例中,該映射之陰影複本及/或該映射包含可由主機讀取及/或可由主機寫入之每項目一或多個位元。在一第七實例中,該映射之項目中之每一者包含一各別長度及一各別跨度,且該映射之陰影複本之對應項目中之每一者包含各別跨度而不包含各別長度。
在某些實施例中,在一重設事件(諸如,I/O裝置之通電或重設)期間,將映射之一初始陰影複本儲存於計算主機之記憶體中。根據各種實施例,映射之初始陰影複本係以下各項中之一或多者:全部無效;映射之一複本;一多階映射之一或多個階之一複本;映射之至少一部分之一複本,諸如識別為最初使用之一部分;及處於與映射一致之任何狀態中。在進一步之實施例中,映射之陰影複本在提及LBA時動態地更新。在一第一實例中,對應於一LBA之映射之陰影複本中之一項目在首次存取該LBA時自一初始 狀態更新。在一第二實例中,對應於一LBA之映射之陰影複本之一部分在首次存取該LBA時自一初始狀態更新。繼續該實例,該部分包含映射之陰影複本之複數個項目,諸如對應於含有與該LBA相關聯之一項目之一第二階映射頁之項目。
在某些實施例中,由I/O裝置接收之一或多個命令中之每一者使得I/O裝置能夠更新映射作為該命令之執行之至少一部分。該一或多個命令在本文中稱為映射更新命令。根據各種實施例,該等映射更新命令包含以下各項中一或多者:一寫入命令;用以使映射之至少一部分無效之一命令;及經啟用以修改映射之任何其他命令。
在某些實施例中,一映射更新命令(諸如,一寫入命令)包含一LBA且使對應於該LBA之映射之陰影複本中之一項目無效。根據各種實施例,達成以下各項中之一或多者:當發佈該映射更新命令時藉由計算主機執行該無效;當接收及/或執行該映射更新命令時藉由I/O裝置執行該無效;該無效包含關斷對應於該LBA之映射之陰影複本中之項目中之一有效指示;及該無效包含關斷映射之陰影複本之一部分中之一有效指示,該部分包含(包含對應於該LBA之項目之)映射之陰影複本之複數個項目。回應於映射更新命令而使對應於該映射更新命令之LBA之映射之陰影複本中之項目無效達成隨後對映射之複本中之項目之存取以判定映射之陰影複本中之項目之資訊係無效的。
在某些實施例及/或使用情景中,由I/O裝置接收之一寫 入命令使得能夠將該寫入命令之資料寫入至I/O裝置之一NVM。I/O裝置判定其中寫入該寫入命令之資料之NVM中之一位置且更新與該寫入命令之一LBA相關聯之映射中之一項目以包含NVM中之該位置。在進一步之實施例中,計算主機之記憶體中之映射之陰影複本亦經更新以使得與該寫入命令之該LBA相關聯之映射之陰影副本中之一項目包含NVM中之該位置。
在某些實施例及/或使用情景中,回應於接收一修整命令,I/O裝置更新與該修整命令之一LBA相關聯之映射中之一項目以包含與該LBA相關聯之資料不存在於NVM中之一指示。在進一步之實施例中,計算主機之記憶體中之映射之陰影複本亦經更新以使得與該修整命令之該LBA相關聯之映射之陰影副本中之一項目包含與該LBA相關聯之資料不存在於NVM中之指示。
根據各種實施例,藉由以下各項中之一或多者執行映射之陰影複本之更新:計算主機,回應於發佈某些類型之命令,諸如映射更新命令;計算主機,回應於自I/O裝置接收經更新資訊;計算主機,回應於針對最近更新詢問I/O裝置且接收關於經更新資訊之一回應;I/O裝置藉由存取計算主機之記憶體中之映射之陰影複本,諸如藉由在一PCIe位址空間中存取映射之陰影複本;以及包含計算主機及I/O裝置之一系統之另一代理。經更新資訊包含根據映射之一或多個項目之至少某些內容之資訊及/或該一或多個項目之一指示,諸如與該一或多個項目相關聯之各別 LBA。在各種實施例中,以任何格式或藉由在一或多個I/O裝置與一或多個計算主機之間傳遞資訊之任何技術傳遞經更新資訊。在一第一實例中,使用一SATA主機協定,在可由計算主機讀取之一記錄頁中傳遞經更新資訊。在一第二實例中,使用一基於PCIe之主機協定(諸如,NVM Express),藉由I/O裝置寫入計算主機之記憶體中之一區且藉助一中斷告知計算主機而至少部分地傳遞經更新資訊。
在某些實施例中,與映射更新命令之LBA相關聯之映射中之項目進一步包含規定與LBA相關聯且儲存於NVM中之資料之一長度及/或一跨度之資訊,此乃因與LBA相關聯且儲存於NVM中之資料之長度及/或寬度取決於資料之可壓縮性而變化。在進一步之實施例中,與映射更新命令之LBA相關聯之映射之陰影複本中之項目視情況及/或選擇性地進一步包含與LBA相關聯且儲存於NVM中之資料之長度及/或跨度。根據各種實施例,另外,與LBA相關聯且儲存於NVM中之資料之長度及/或跨度視情況及/或選擇性地經啟用以編碼以下各項中之一或多者:修整與LBA相關聯之資料中之某些及/或全部之一指示;與LBA相關聯之資料中之某些及/或全部係不可校正之一指示;及與LBA相關聯之資料中之某些及/或全部之任何其他性質。
在某些實施例及/或使用情景中,將與LBA相關聯且儲存於NVM中之資料之長度儲存於與映射更新命令之LBA相關聯之映射之陰影複本中之項目中使得映射之陰影複本之 使用能夠在一後續映射更新命令中(諸如,在覆寫映射更新命令之LBA之資料時)提供與LBA相關聯且儲存於NVM中之資料之長度。與LBA相關聯且儲存於NVM中之資料之長度用以在藉由後續映射更新命令覆寫映射更新命令之LBA之資料時調整含有映射更新命令之LBA之資料之NVM之一區中之所使用空間統計。舉例而言,在藉由後續映射更新命令覆寫映射更新命令之LBA之資料時時,使含有映射更新命令之LBA之資料之NVM之區之一所使用空間統計遞增與LBA相關聯且儲存於NVM中之資料之長度。
在某些實施例中,一讀取請求(諸如,請求一LBA處之資料之讀取命令)經啟用以存取對應於LBA之映射之陰影複本中之一項目。根據各種實施例,達成以下各項中之一或多者:當發佈讀取命令時藉由計算主機執行存取;當接收及/或執行讀取命令時藉由I/O裝置執行存取;及存取包含讀取對應於LBA之映射之陰影複本中之項目之至少一部分。存取對應於讀取命令之LBA之映射之陰影複本中之項目提供根據映射之一對應項目之資訊而無需存取該映射。在其中將映射(諸如,一多階映射之一較低階)儲存於I/O裝置之NVM中之某些實施例及/或使用情景中,對映射之陰影複本之存取具有一較短延時且有利地改良存取LBA處之資料之延時。
在某些實施例中,回應於自I/O裝置讀取對應於一特定LBA之資料之一讀取請求,計算主機讀取映射之陰影複本之一項目之至少一部分,該映射之該陰影複本之該項目對 應於該特定LBA。計算主機將一預映射讀取命令發送至I/O裝置,該預映射讀取命令包含映射之陰影複本之項目之資訊,諸如I/O裝置之NVM中之一位置。在各種實施例中,該預映射讀取命令不提供該特定LBA。在進一步之實施例及/或使用情景中,NVM中之位置包含NVM中之一各別跨度。
在某些實施例中,回應於自I/O裝置讀取對應於一特定LBA之資料之一讀取請求,計算主機經啟用以讀取映射之陰影複本之一項目之至少一部分,該映射之該陰影複本之該項目對應於該特定LBA。若映射之陰影複本之項目係無效的(諸如由一有效指示所指示),則計算主機將一讀取命令發送至I/O裝置,該讀取命令包含該特定LBA。若映射之陰影複本之項目係有效的(諸如由一有效指示所指示),則計算主機將一預映射讀取命令發送至I/O裝置,該預映射讀取命令包含映射之陰影複本之項目之資訊,諸如I/O裝置之NVM中之一位置。在各種實施例中,該預映射讀取命令不提供該特定LBA。在進一步之實施例及/或使用情景中,NVM中之位置包含NVM中之一各別跨度。
在某些實施例中,回應於I/O裝置接收包含I/O裝置之NVM中之一位置之一預映射讀取命令,I/O裝置經啟用以在該位置處存取NVM以獲得讀取資料。I/O裝置省略回應於接收預映射讀取命令而存取映射。回應於預映射讀取命令而傳回讀取資料及/或其一經處理版本。
在某些實施例中,回應於I/O裝置接收自I/O裝置讀取對 應於一特定LBA之資料之一讀取命令,I/O裝置經啟用以讀取映射之陰影複本之一項目之至少一部分,該映射之該陰影複本之該項目對應於該特定LBA。I/O裝置自該映射之該陰影複本之該項目獲得對應於該特定LBA之資料之NVM中之一位置而不存取該映射。I/O裝置在NVM之該位置處存取NVM以獲得讀取資料。回應於讀取命令而傳回讀取資料及/或其一經處理版本。
在某些實施例中,回應於接收自I/O裝置讀取對應於一特定LBA之資料之一讀取命令,I/O裝置經啟用以讀取映射之陰影複本之一項目之至少一部分,該映射之該陰影複本之該項目對應於該特定LBA。若映射之陰影複本之項目係無效的(諸如由一有效指示所指示),則I/O裝置存取該映射以判定對應於該特定LBA之資料之NVM中之一位置。若映射之陰影複本之項目係有效的(諸如由一有效指示所指示),則I/O裝置自映射之陰影複本之項目獲得對應於該特定LBA之資料之NVM中之位置而無需存取該映射。I/O裝置在NVM之該位置處存取NVM以獲得讀取資料。回應於讀取命令而傳回讀取資料及/或一經處理版本。
在包含以上實施例之變型之進一步之實施例及/或使用情景中,I/O裝置之NVM中之位置視情況及/或選擇性地經啟用以編碼對應於特定LBA之資料是否存在於I/O裝置之NVM中之一指示。舉例而言,已修整之資料或自格式化I/O裝置以來從未寫入之資料不存在於I/O裝置之NVM中。
在其中計算主機判定NVM中之位置作為嘗試(諸如)藉由 存取映射之陰影複本自I/O裝置讀取資料之一部分之變型中,計算主機經啟用以在不將一命令發送至I/O裝置之情況下判定對應於特定LBA之資料不存在於I/O裝置之NVM中。根據各種實施例,達成以下各項中之一或多者:計算主機在不將一命令發送至I/O裝置之情況下傳回對讀取請求之一回應;計算主機將包含特定LBA之一命令發送至I/O裝置;及計算主機將包含自對應於特定LBA之映射之陰影複本之項目獲得之資訊之一命令發送至I/O裝置。
在其中I/O裝置判定NVM中之位置作為(諸如)藉由存取映射之陰影複本執行讀取命令之一部分之變型中,I/O裝置經啟用以傳回對讀取命令之一回應而不存取該NVM以獲得讀取資料。
在某些實施例中,I/O裝置經啟用以在回收NVM之一區時使用映射之陰影複本。回收經啟用以經由映射之陰影複本之項目而判定自用於回收之NVM之區讀取之資料是否仍有效,諸如藉由在映射之陰影複本之項目中之一者中係最新的。在各種實施例中,最新之資料係藉由將該資料寫入至NVM中之一新位置且更新映射之一項目以規定該新位置而視情況及/或選擇性地回收。根據各種實施例,使映射之陰影複本之項目中之一對應者無效或藉助新位置更新該對應項目。在進一步之實施例中,若與在NVM中之一特定位置處自NVM讀取之資料相關聯且自NVM讀取之一標頭包含一LBA之至少一部分,且與一LBA之至少一部分相關聯之映射之陰影複本中之一項目包含NVM中之該特定位 置,則該資料係最新的。
在某些實施例中,無效或更新係回應於與(例如,寫入相對不久之後)回收相關聯之寫入。在其他實施例中,無效或更新係回應於I/O裝置(例如,在已發生寫入很久之後任意地)抹除(或另一選擇係,準備抹除)區。在提供資料之自動修整之某些實施例中,回收包含自動修整,其中最新資料在映射中標記為經修整而非被寫入至一新位置。由於計算主機經啟用以接收資料或資料修整之一指示,因此在各種實施例及/或使用情景中,提供最新資料(即使經修整),或另一選擇係,提供修整之一指示,從而達成映射之陰影複本之使用而不管是回應於寫入還是回應於抹除而執行與回收相關之更新。
舉例而言,I/O裝置將已藉由回收更新之第二階映射項目及/或映射部分(諸如,第二階映射頁)之一列表之更新傳遞至計算主機。該傳遞係經由一記錄訊息、所保留LBA空間或適於提供映射資訊之任何技術中之任何一或多者。該等更新視情況及/或選擇性地指示映射之陰影複本之一或多個項目之無效,及/或包含映射之陰影複本之受影響項目之一或多個新值。I/O裝置藉由以下各項中之一或多者將該等更新係可用通知計算主機:命令狀態中之一所保留位元;自I/O裝置至計算主機之任何一或多個類型之回應中之一所保留位元;一錯誤報告;一中斷;及用於在一I/O裝置與一計算主機之間通信之其他技術。在某些使用情景中,藉由經更新之第二階映射條目提及之資料之抹除 係取決於自計算主機接收已(例如,對映射之陰影複本)應用更新之一應答。
在各種實施例中,映射之陰影複本包含一或多個錯誤偵測碼,諸如一CRC或一檢查總和。該等錯誤偵測碼中之每一者保護包含映射之陰影複本之一或多個項目之一各別部分。舉例而言,在某些實施例中,該各別部分對應於一第二階映射頁。根據各種實施例,藉由以下各項中之一或多者驗證該等各別部分中之一者之完整性:重新計算且驗證與該各別部分相關聯之錯誤偵測碼;比較與該各別部分相關聯之錯誤偵測碼與根據映射之一對應部分計算之一錯誤偵測碼;及藉助映射之一對應部分直接驗證該各別部分。根據各種實施例,在以下各項中之一或多者之情況下驗證該等各別部分中之一者之完整性:在I/O裝置及/或包含該I/O裝置之一系統之每一重設及/或供電循環之後;在I/O裝置及/或包含該I/O裝置之一系統退出一低電力及/或一睡眠狀態(例如,一較低電力運作狀態)之後;在一規定間隔之後;及根據一規定頻率週期性地。
在某些實施例中,I/O裝置經啟用以使用計算主機之記憶體來保存I/O裝置之狀態。根據各種實施例,I/O裝置之狀態包含以下各項中之一或多者:映射之陰影複本;I/O裝置之映射之一快取記憶體;I/O裝置之一多階映射之一或多個階之一快取記憶體;I/O裝置之一雙階映射之一第一階;I/O裝置之一多階映射之一上部階;I/O裝置之揮發性狀態;藉由I/O裝置維持之統計,諸如根據NVM之存取 及/或行為之統計;當I/O裝置進入一低電力狀態時丟失之I/O裝置之內部狀態;及I/O裝置之任何其他狀態。在各種實施例中,I/O裝置之所保存狀態之全部或任何部分視情況及/或選擇性地在被保存時加密且在被還原時解密。
在某些實施例中,以一正常模式(例如,一較高電力運作狀態)運作之一I/O裝置經啟用以(諸如)回應於接收進入低電力狀態之一請求或回應於I/O裝置之不活動之一週期且根據I/O裝置之組態設定而判定進入一低電力及/或一睡眠狀態(例如,一較低電力運作狀態)。回應於判定進入低電力狀態,I/O裝置經啟用以將I/O裝置之狀態之至少一第一部分保存於計算主機之記憶體中。I/O裝置然後經啟用以進入低電力狀態,且(諸如)藉由移除去往I/O裝置之至少一部分之電力而丟失I/O裝置之狀態之至少一第一部分。隨後,I/O裝置經啟用以(諸如)藉由接收退出低電力狀態之一請求而判定退出低電力狀態。回應於判定退出低電力狀態,I/O裝置經啟用以退出低電力狀態。I/O裝置然後經啟用以自計算主機之記憶體還原I/O裝置之狀態之至少一第一部分且重新開始以正常模式運作。根據各種實施例,低電力狀態係以下各項中之一或多者:一待用狀態;一睡眠狀態;一休眠狀態;一閒置狀態;及I/O裝置之一電力管理協定中之任何狀態。
在進一步之實施例中,回應於判定進入低電力狀態,將I/O裝置之狀態之至少一第二部分保存於I/O裝置之NVM中。在又進一步之實施例中,回應於判定退出低電力狀 態,I/O裝置經啟用以自NVM還原I/O裝置之狀態之至少一第三部分。舉例而言,在某些使用情景中,I/O裝置之狀態之至少一第一部分包含一第一階映射,I/O裝置之狀態之至少一第二部分包含I/O裝置之狀態之一檢查點,I/O裝置之狀態之至少一第三部分包含I/O裝置之一處理器之可執行碼。
在各種實施例中,一I/O儲存裝置經啟用以計算一或多個非標準統計。非標準統計之實例係儲存使用、儲存使用百分比、寫入放大以及I/O儲存裝置之非揮發性儲存之一或多個頻帶之大小及/或使用。在某些實施例及/或使用情景中,寫入至實施I/O儲存裝置之儲存之至少一部分之一NVM之資料在寫入於NVM中之前在大小上減小。非標準統計之其他實例係至少部分地基於大小減小之儲存使用及/或儲存使用百分比,及/或基於過去及/或當前大小減小之將來大小減小之一預測。回應於(例如,自一計算主機)接收請求一非標準統計值之傳回之一命令,一I/O儲存裝置傳回所請求之非標準統計(例如,至計算主機)。計算之結果(例如,非標準統計中之一或多者之全部或任何部分)視情況受任何大小減少影響。大小減小係經由(舉例而言)壓縮及/或資料去重複。在某些實施例及/或使用情景中,非標準統計中之一或多者(例如,儲存使用,諸如NVM之使用)根據以下各項中之一或多者變化:大小減小之品質;(諸如自計算主機接收之)修整命令之一數目及/或一大小;(諸如自計算主機)接收之暫態資料之一量;及已(諸如 藉由I/O儲存裝置)修整之暫態資料之一量。在某些實施例及/或使用情景中,非標準統計中之一或多者(諸如頻帶之使用)根據大小減小之品質而變化。
在某些實施例中,在NVM中存取變化的經確定大小之配量之經壓縮資料在某些使用情景中提供經改良之儲存效率。舉例而言,一SSD控制器自一計算主機接收(經解壓縮)資料(例如,與一磁碟寫入命令相關)、壓縮該資料且將經壓縮資料儲存至快閃記憶體中。回應於來自該計算主機之一後續請求(例如,與一磁碟讀取命令相關),SSD控制器自該快閃記憶體讀取經壓縮資料、將經壓縮資料解壓縮且將經解壓縮資料提供至該計算主機。根據變化的經確定大小之配量將經壓縮資料儲存於快閃記憶體中,該配量大小變化歸因於(例如)壓縮演算法、運作模式及對各種資料之壓縮有效性。SSD控制器部分地藉由查閱一所包含映射表來解壓縮資料以判定將標頭儲存於快閃記憶體中何處。SSD控制器剖析自快閃記憶體獲得之標頭以判定將適當(經壓縮)資料儲存於快閃記憶體中何處。SSD控制器解壓縮來自快閃記憶體之適當資料以產生經解壓縮資料以提供至計算主機。在本申請案中,解壓縮(uncompress)(及其變型)與解除壓縮(decompress)(及其變型)同義。
在各種實施例中,一SSD控制器包含:一主機介面,其用於與一計算主機介接;一介面,其用於與諸如快閃記憶體之NVM介接;及電路,其用於控制該等介面且執行(及/或控制該執行之各種態樣)壓縮及解壓縮,以及較低階錯 誤校正、較高階錯誤校正及藉助獨立矽元件之動態較高階冗餘模式管理。
根據各種實施例,某些主機介面與以下各標準中之一或多者相容:一USB介面標準、一CF介面標準、一MMC介面標準、一SD介面標準、一記憶卡介面標準、一xD圖片卡介面標準、一IDE介面標準、一SATA介面標準、一SCSI介面標準、一SAS介面標準及一PCIe介面標準。根據各種實施例,該計算主機係以下各項之全部或任何部分:一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一PC、一膝上型電腦、一筆記型電腦、一小筆電電腦、一PDA、一媒體播放器、一媒體錄製器、一數位相機、一蜂巢式手機、一無線手持電話及一電子遊戲機。在某些實施例中,一介接主機(諸如,一SAS/SATA橋接器)運作為一計算主機及/或運作為至一計算主機之一橋接器。
在各種實施例中,SSD控制器包含一或多個處理器。該等處理器執行韌體以控制及/或執行SSD控制器之運作。SSD控制器與計算主機通信以發送及接收命令及/或狀態以及資料。該計算主機執行一作業系統、一驅動程式及一應用程式中之一或多者。計算主機與SSD控制器之通信係視情況及/或選擇性地經由驅動程式及/或經由應用程式進行的。在一第一實例中,與SSD控制器之所有通信皆係經由驅動程式進行的,且應用程式將較高階命令提供至驅動程式,驅動程式將該等較高階命令轉譯成用於SSD控制器之特定命令。在一第二實例中,驅動程式實施一繞過模式且 應用程式經啟用以經由驅動程式將特定命令發送至SSD控制器。在一第三實例中,一PCIe SSD控制器支援一或多個虛擬函式(VF),使得一應用程式(一旦組態)繞過驅動程式直接與SSD控制器通信。
根據各種實施例,某些SSD與由磁性及/或光學非揮發性儲存(諸如,HDD、CD磁碟機及DVD磁碟機)所使用之形式因子、電介面及/或協定相容。在各種實施例中,SSD使用零或零以上同位碼、零或零以上RS碼、零或零以上BCH碼、零或零以上維特比(Viterbi)或其他格子碼及零或零以上LDPC碼。
實例性實施例
在結束詳細說明之導論後,接下來是實例性實施例之一集合,包含至少某些明確地列舉為「EC(實例組合)」之實例性實施例,提供根據本文中所闡述之概念之多種實施例類型之額外說明;此等實例不意在係彼此排外性、窮盡性或限制性的;且本發明不限於此等實例性實施例,而是涵蓋在所發佈申請專利範圍及其等效物之範疇內的所有可能的修改及變化。
EC1)一種方法,其包括:在一I/O裝置處接收包括一標準命令及一非標準修改符之一規格之一經擴展命令;根據該非標準修改符執行該標準命令;及藉此由於用以修改該標準命令之該執行之該非標準修改符之使用而改良系統級效能。
EC2)一種方法,其包括:在一I/O裝置處接收包括用以啟用一非標準修改符之一規格之一模式設定命令;在該I/O裝置處接收一標準命令;根據該非標準修改符執行該標準命令;且藉此由於用以修改該標準命令之該執行之該非標準修改符之使用而改良系統級效能。
EC3)如EC1或EC2中任一項之方法,其進一步包括:使該非標準修改符與該標準命令之資料相關聯。
EC4)如EC3之方法,其進一步包括:儲存該非標準修改符之一指示以用於關於該標準命令之該資料之稍後擷取。
EC5)如EC4之方法,其中該儲存係非揮發性的。
EC6)如EC4之方法,其進一步包括:將該非標準修改符之該指示儲存於一映射之複數個項目中之一特定者中,該特定項目藉由該標準命令之一邏輯區塊位址(LBA)而與該標準命令之該資料相關聯。
EC7)如EC4之方法,其中該標準命令係一寫入命令,且該方法進一步包括:回應於一後續讀取命令規定對該寫入命令之該資料之存取,根據該非標準修改符之該指示修改該後續讀取命令之執行。
EC8)如EC4之方法,其中該標準命令係一第一命令,且該方法進一步包括: 回應於一後續命令規定對該第一命令之該資料之存取,根據該非標準修改符之該指示修改該後續命令之執行。
EC9)如EC8之方法,其中該第一命令係一寫入命令;其中該非標準修改符包括該寫入命令之該資料係唯讀之一指示;且其中該修改該後續命令之執行包括:若該後續命令係一標準寫入命令,則傳回一錯誤指示。
EC10)如EC4之方法,其中該標準命令係一寫入命令,且該方法進一步包括:判定欲回收該寫入命令之該資料;存取該非標準修改符之該指示;回應於該非標準修改符之該指示,修整該寫入命令之該資料;且藉此修整而非回收該寫入命令之該資料。
EC11)如EC1或EC2中任一項之方法,其中該標準命令係一讀取命令。
EC12)如EC1或EC2中任一項之方法,其中該標準命令係一讀取命令或一寫入命令中之一者。
EC13)如EC1或EC2中任一項之方法,其中該標準命令係資料移動命令。
EC14)如EC1或EC2中任一項之方法,其中該標準命令係一修整命令。
EC15)如EC14之方法,其中該非標準修改符選擇性地 判定該修整命令是強制的還是選用的。
EC16)如EC1或EC2中任一項之方法,其中藉由該標準命令之一所保留欄位至少部分地規定該非標準修改符。
EC17)如EC1或EC2中任一項之方法,其中藉由該標準命令之複數個位址位元中之至少某些位址位元至少部分地規定該非標準修改符。
EC18)如EC17之方法,其中該I/O裝置不以其他方式使用該等位址位元中之該至少某些位址位元。
EC19)如EC1或EC2中任一項之方法,其中該非標準修改符係以下各項中之一或多者:一資料類型之一規格;一資料存取類型之一規格;資料定序之一規格;一資料關係之一規格;一資料目的地之一規格;及一命令關係之一規格。
EC20)如EC19之方法,其中該資料類型之該規格包括一可壓縮性指示。
EC21)如EC20之方法,其中該資料類型之該規格包括該資料類型係不可壓縮之一指示。
EC22)如EC19之方法,其中該資料類型之該規格包括一資料庫日誌類型指示。
EC23)如EC19之方法,其中該資料存取類型之該規格包括一讀取/寫入資料存取類型指示、一主要讀取資料存 取類型指示及一主要寫入資料存取類型指示中之兩者或兩者以上。
EC24)如EC19方法,其中該資料存取類型之該規格包括一讀取/寫入資料存取類型指示、一主要讀取資料存取類型指示、一主要寫入資料存取類型指示及一暫態資料存取類型指示中之兩者或兩者以上。
EC25)如EC19之方法,其中該資料存取類型之該規格包括一暫態資料存取類型指示。
EC26)如EC25之方法,其中該標準命令係一寫入命令且該非標準修改符包括該暫態資料存取類型指示,且該方法進一步包括:非揮發性地儲存該寫入命令之資料;及回應於判定欲回收藉由該寫入命令所儲存之該資料且根據該非標準修改符,修整藉由該寫入命令所儲存之該資料。
EC27)如EC26之方法,其進一步包括:回應於在該修整之後讀取藉由該寫入命令所儲存之該資料,傳回修整藉由該寫入命令所儲存之該資料之一指示。
EC28)如EC26之方法,其進一步包括:回應於讀取藉由該寫入命令所儲存之該資料,選擇性地傳回修整藉由該寫入命令所儲存之該資料之一指示或藉由該寫入命令所儲存之該資料。
EC29)如EC27或EC28中任一項之方法,其進一步包括:回應於該讀取,傳回修整藉由該寫入命令所儲存之該資料 之該指示作為一非資料回應。
EC30)如EC27或EC28中任一項之方法,其進一步包括:回應於該讀取,傳回修整藉由該寫入命令所儲存之該資料之該指示作為所傳回之資料之一特定型樣。
EC31)如EC19之方法,其中該資料存取類型之該規格包括一唯讀資料存取類型指示。
EC32)如EC31之方法,其中該標準命令係一第一寫入命令且該非標準修改符包括該唯讀資料存取類型指示,且該方法進一步包括:根據該第一寫入命令之一邏輯區塊位址(LBA)非揮發性地儲存該第一寫入命令之資料;及回應於一後續寫入命令嘗試寫入至該第一寫入命令之該LBA,傳回一錯誤指示。
EC33)如EC19之方法,其中該資料定序之該規格包括一不可部分完成序列之一指示。
EC34)如EC19之方法,其中該資料定序之該規格包括一順序序列之一指示及一不可部分完成序列之一指示中之一或多者。
EC35)如EC19之方法,其進一步包括:使該資料關係與該標準命令之資料相關聯。
EC36)如EC35之方法,其進一步包括:非揮發性地儲存該資料關係及該標準命令之該資料。
EC37)如EC36之方法,其中該標準命令係一第一標準 命令,且該方法進一步包括:隨後使該資料關係與一後續標準命令之資料相關聯。
EC38)如EC37之方法,其進一步包括:根據該資料關係擷取資料。
EC39)如EC19之方法,其中該資料目的地之該規格規定複數個資料頻帶中之一者。
EC40)如EC39之方法,其中該等資料頻帶包括一熱頻帶及一冷頻帶。
EC41)如EC19之方法,其中該命令關係之該規格包括一命令優先級。
EC42)如EC19之方法,其中該命令關係之該規格包括一命令排序相依性。
EC43)如EC42之方法,其中該命令排序相依性係一命令障壁。
EC44)如EC2之方法,其中該標準命令係兩個或兩個以上標準命令之一序列。
EC45)如EC2之方法,其中該模式設定命令係一第一模式設定命令;且該方法進一步包括:在該接收該標準命令之後,接收包括用以停用該非標準修改符之一規格之一第二模式設定命令。
EC46)一種方法,其包括:在一I/O裝置處經由一外部介面接收一命令;確定該命令之一類型; 若該命令之該類型係一讀取命令,則存取一映射以轉譯該命令之一邏輯區塊位址(LBA)以獲得選擇性地包括一非揮發性記憶體(NVM)中之一位置之經轉譯LBA資訊;若該命令之該類型係一預映射讀取命令,則依據該預映射讀取命令之資訊且在不使用該映射之情況下判定該NVM中之該位置;傳回對應於該NVM中之該位置之資料;且其中該預映射讀取命令之該資訊包括該經轉譯LBA資訊之至少一部分。
EC47)如EC46之方法,其中該經轉譯LBA資訊選擇性地包括該NVM中之一位置或該命令之該LBA不存在於該NVM中之一指示。
EC48)如EC46之方法,其中該經轉譯LBA資訊選擇性地包括該NVM之一或多個讀取單元中之一第一者之一位址及讀取單元之一長度。
EC49)如EC48之方法,其中該一或多個讀取單元中之每一者之一大小係至少512位元組。
EC50)如EC46之方法,其進一步包括:存取該映射之一陰影複本以轉譯該LBA以獲得該經轉譯LBA資訊之該至少一部分;及將包含該經轉譯LBA資訊之該至少一部分之該預映射讀取命令發送至該I/O裝置。
EC51)如EC50之方法,其中該存取係在一計算主機處。
EC52)如EC50之方法,其中該映射之該陰影複本包括複數個項目,且該等項目中之每一者包括有效性之一指示。
EC53)如EC52之方法,其中該LBA係複數個邏輯區塊位址(LBA)中之一者;其中該經轉譯LBA資訊係複數個經轉譯LBA資訊中之一者;且其中該映射之該陰影複本之該等有效項目中之一者使該等LBA中之一或多者與該複數個經轉譯LBA資訊中之一各別者相關聯。
EC54)如EC53之方法,其中該映射之該陰影複本之該等有效項目中之每一者包括該複數個經轉譯LBA資訊中之該各別者之至少一部分。
EC55)如EC53之方法,其中該映射之該陰影複本之該等有效項目中之至少一者選擇性地規定與該等有效項目中之該至少一者相關聯之該等LBA不存在於該NVM中。
EC56)如EC55之方法,其中修整與該等有效項目中之該至少一者相關聯之該等LBA。
EC57)如EC52之方法,其中該NVM中之該位置係該NVM中之複數個位置中之一者;且其中該映射之該陰影複本之該等有效項目中之每一者選擇性地規定該NVM中之一各別位置。
EC58)如EC57之方法,其中該映射之該陰影複本之該 等有效項目中之每一者選擇性地規定與該項目相關聯之資料不存在於該NVM中。
EC59)如EC52之方法,其進一步包括:最初將該映射之該陰影複本之所有項目標記為無效。
EC60)如EC52之方法,其進一步包括:回應於將一寫入命令發送至該I/O裝置,將與該寫入命令之一邏輯區塊位址(LBA)相關聯之該映射之該陰影複本之一項目標記為無效。
EC61)如EC60之方法,其進一步包括:在該I/O裝置處經由該外部介面接收該寫入命令;及在該接收該寫入命令之後,發送對應於該寫入命令之該LBA之一陰影映射更新。
EC62)如EC61之方法,其進一步包括:根據該陰影映射更新而更新該映射之該陰影複本;及其中該更新將與該寫入命令之該LBA相關聯之該映射之該陰影複本之該項目標記為有效。
EC63)如EC62之方法,其中該更新係藉由該I/O裝置進行的。
EC64)如EC50之方法,其進一步包括:將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中。
EC65)如EC64之方法,其進一步包括:將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機。
EC66)如EC64之方法,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC67)如EC64之方法,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC68)如EC67之方法,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC69)如EC64之方法,其中將該映射非揮發性地儲存於該NVM中。
EC70)如EC69之方法,其中該計算主機之該記憶體包括一揮發性記憶體。
EC71)如EC46之方法,其中該映射包括一雙階映射。
EC72)如EC71之方法,其中該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該映射之該第二階。
EC73)一種方法,其包括:在一I/O裝置處經由一外部介面接收一寫入命令;將該寫入命令之資料寫入至一非揮發性記憶體(NVM)中之一位置;將該寫入命令之一邏輯區塊位址(LBA)與該NVM中之該位置之間的一關聯性儲存於一映射中;及將包括根據該NVM中之該位置之資訊之一更新發送至該映射之一陰影複本。
EC74)如EC73之方法,其中該映射包括一雙階映射。
EC75)如EC74之方法, 其中該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該映射之該第二階。
EC76)如EC73之方法,其中根據該NVM中之該位置之該資訊包括該NVM之一或多個讀取單元中之一第一者之一位址及讀取單元之一長度。
EC77)如EC73之方法,其進一步包括:將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中。
EC78)如EC77之方法,其進一步包括:將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機。
EC79)如EC77之方法,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC80)如EC77之方法,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC81)如EC80之方法,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC82)如EC80之方法,其進一步包括:將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機之該I/O空間記憶體。
EC83)如EC82之方法,其中該發送該更新包括發送一PCIe寫入請求。
EC84)如EC82之方法,其中該發送該更新包括該映射之該陰影複本之一讀取-修改-寫入。
EC85)如EC82之方法,其進一步包括:在該I/O裝置執行一讀取命令之前,自該映射之該陰影複本提取該讀取命令之一邏輯區塊位址(LBA)之一轉譯。
EC86)如EC85之方法,其中該提取係藉由該I/O裝置進行的。
EC87)如EC86之方法,其中該提取包括發送一PCIe讀取請求。
EC88)如EC85之方法,其中該提取係藉由該計算主機進行的,且該讀取命令係一預映射讀取命令。
EC89)如EC77之方法,其中將該映射非揮發性地儲存於該NVM中。
EC90)如EC89之方法,其中該計算主機之該記憶體包括一揮發性記憶體。
EC91)一種方法,其包括:初始化一I/O裝置之一映射之一陰影複本以使得將該映射之該陰影複本之複數個項目中之所有項目標記為無效;自該I/O裝置接收該映射之該陰影複本之一更新;根據該映射之該陰影複本之該更新,將該映射之該陰影複本之該等項目中之至少一者標記為有效。
EC92)如EC91之方法,其中該根據該更新進行標記進一步包括使該更新之經轉譯邏輯區塊位址(LBA)資訊與該等項目中之該至少一者相關聯。
EC93)如EC92之方法,其中該經轉譯LBA資訊包括該I/O裝置之非揮發性記憶體(NVM)中之一位置。
EC94)如EC91之方法,其中該映射之該陰影複本之該等項目中之每一者選擇性地使該I/O裝置之至少一個邏輯區塊位址(LBA)與該I/O裝置之非揮發性記憶體(NVM)中之一位置相關聯。
EC95)如EC91之方法,其中該I/O裝置之該映射包括一雙階映射。
EC96)如EC95之方法,其中該I/O裝置之該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該I/O裝置之該映射之該第二階。
EC97)如EC91之方法,其進一步包括:將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中。
EC98)如EC97之方法,其進一步包括:將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機。
EC99)如EC97之方法,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC100)如EC97之方法,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC101)如EC100之方法,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC102)如EC100方法,其進一步包括:將該映射之該陰影複本之該更新自該I/O裝置發送至該計 算主機之該I/O空間記憶體。
EC103)如EC102之方法,其中該發送該更新包括發送一PCIe寫入請求。
EC104)如EC102之方法,其中該發送該更新包括該映射之該陰影複本之一讀取-修改-寫入。
EC105)如EC102之方法,其進一步包括:在該I/O裝置執行一讀取命令之前,自該映射之該陰影複本提取該讀取命令之一邏輯區塊位址(LBA)之一轉譯。
EC106)如EC105之方法,其中該提取係藉由該I/O裝置進行的。
EC107)如EC106之方法,其中該提取包括發送一PCIe讀取請求。
EC108)如EC105之方法,其中該提取係藉由該計算主機進行的,且該讀取命令係一預映射讀取命令。
EC109)如EC97之方法,其中將該映射非揮發性地儲存於該I/O裝置之一非揮發性記憶體(NVM)中。
EC110)如EC109之方法,其中該計算主機之該記憶體包括一揮發性記憶體。
EC111)一種方法,其包括:判定對一I/O裝置之一請求是否係一讀取請求,該I/O裝置具有一映射,該映射具有複數個項目,該映射之該等項目中之至少某些項目中之每一者將該I/O裝置之一各別邏輯區塊位址(LBA)映射至選擇性地包括該I/O裝置之一非揮發性記憶體(NVM)中之一位置之各別經轉譯LBA資訊,且該 映射之一陰影複本具有複數個對應項目;若該請求係一讀取請求,則判定與該讀取請求之一LBA相關聯之該映射之該陰影複本之該等項目中之一特定者是否有效;及若該特定項目係有效的,則將包括根據該特定項目之該各別經轉譯LBA資訊之至少一部分之一預映射讀取命令選擇性地發送至該I/O裝置。
EC112)如EC111之方法,其中該映射之該陰影複本之該等項目中之每一者對應於該映射之一各別項目;其中該映射之該等項目中之至少某些項目中之每一者包括藉由該各別LBA所映射至之該各別經轉譯LBA資訊;且其中對應於該映射之該等項目中之該至少某些項目中之一者之該映射之該陰影複本之該等項目中之每一者包括該各別經轉譯LBA資訊之至少一部分。
EC113)如EC111之方法,其中該映射之該複數個項目係一第二階映射。
EC114)如EC113之方法,其中該I/O裝置進一步具有一第一階映射。
EC115)如EC111之方法,其中該各別經轉譯LBA資訊之該至少一部分選擇性地包括該NVM中之該位置或該各別LBA不存在於該NVM中之一指示。
EC116)如EC115之方法,其中該選擇性地發送包括判定根據該特定項目之該各別經轉譯LBA資訊之該至少一部 分是否指示該讀取請求之該LBA不存在於該NVM中。
EC117)如EC116之方法,其中該選擇性地發送進一步包括僅在根據該特定項目之該各別經轉譯LBA資訊之該至少一部分指示該讀取請求之該LBA存在於該NVM中之情形下將該預映射讀取命令發送至該I/O裝置。
EC118)如EC117之方法,其中若修整該讀取請求之該LBA,則根據該特定項目之該各別經轉譯LBA資訊之該至少一部分指示該讀取請求之該LBA不存在於該NVM中。
EC119)如EC111之方法,其中該各別經轉譯LBA資訊之該至少一部分選擇性地包括該NVM之一或多個讀取單元中之一第一者之一位址及讀取單元之一長度。
EC120)如EC119之方法,其中該一或多個讀取單元中之每一者之一大小係至少512位元組。
EC121)如EC111之方法,其進一步包括:若該特定項目係無效的,則將包括該讀取請求之該LBA之一標準讀取命令發送至該I/O裝置。
EC122)如EC111之方法,其進一步包括:若該請求係一寫入請求,則將與該寫入請求之一LBA相關聯之該映射之該陰影複本之該等項目中之一者標記為無效。
EC123)如EC111之方法,其中該映射之該陰影複本之每一項目包括一有效性指示及來自該映射之一對應項目之至少某些內容之一複本。
EC124)如EC123之方法,其中若該特定項目係有效 的,則來自該映射之該對應項目之至少某些內容之該複本與來自該映射之該對應項目之該至少某些內容相同。
EC125)如EC123之方法,其中該映射之該陰影複本之有效項目係該映射之有效項目之一子集。
EC126)如EC125之方法,該子集係一適當子集。
EC127)如EC111之方法,其中該映射之該陰影複本之該等項目中之每一者係無效的或包括根據該映射之一對應項目之資訊。
EC128)如EC111之方法,其中該I/O裝置之該映射包括一雙階映射。
EC129)如C128之方法,其中該I/O裝置之該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該I/O裝置之該映射之該第二階。
EC130)如EC111之方法,其中該映射之該陰影複本之該等項目中之每一者包括有效性之一指示。
EC131)如EC130之方法,其中該映射之該陰影複本之該等有效項目中之每一者選擇性地使該等LBA中之一各別一或多者與該NVM中之一各別位置相關聯。
EC132)如EC131之方法,其中該映射之該陰影複本之該等有效項目中之至少一者選擇性地規定與該等有效項目中之該至少一者相關聯之該等各別LBA中之至少一者不存在於該NVM中。
EC133)如EC132之方法,其中修整與該等有效項目中 之該至少一者相關聯之該等各別LBA中之該至少一者。
EC134)如EC130之方法,其中該映射之該陰影複本之該等有效項目中之每一者選擇性地規定該NVM中之一各別位置。
EC135)如EC130之方法,其進一步包括:最初將該映射之該陰影複本之所有該等項目標記為無效。
EC136)如EC111之方法,其進一步包括:將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中。
EC137)如EC136之方法,其進一步包括:自該I/O裝置接收該映射之該陰影複本之一更新。
EC138)如EC136之方法,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC139)如EC136之方法,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC140)如EC139之方法,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC141)如EC139之方法,其進一步包括:將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機之該I/O空間記憶體。
EC142)如EC141之方法,其中該發送該更新包括發送一PCIe寫入請求。
EC143)如EC141之方法,其中該發送該更新包括該映射之該陰影複本之一讀取-修改-寫入。
EC144)如EC141之方法,其進一步包括:在該I/O裝置執行一特定命令之前,自該映射之該陰影複本提取該特定命令之一LBA之一轉譯。
EC145)如EC144之方法,其中該提取係藉由該I/O裝置進行的。
EC146)如EC145之方法,其中該提取包括發送一PCIe讀取請求。
EC147)如EC144之方法,其中該提取係藉由該計算主機進行的。
EC148)如EC147之方法,其中該特定命令係一預映射讀取命令。
EC149)如EC136之方法,其中將該映射非揮發性地儲存於該NVM中。
EC150)如EC149之方法,其中該計算主機之該記憶體包括一揮發性記憶體。
EC151)一種方法,其包括:在一I/O裝置處接收進入一低電力狀態之一指示;將該I/O裝置之內部狀態保存於一計算主機之一系統可存取記憶體中;在該I/O裝置處接收退出該低電力狀態之一指示;及自該系統可存取記憶體還原該I/O裝置之該內部狀態。
EC152)如EC151之方法,其中該計算主機之該系統可存取記憶體包括該計算主機之一主記憶體。
EC153)如EC151之方法,其中該計算主機之該系統可 存取記憶體包括該計算主機之一I/O空間記憶體。
EC154)如EC153之方法,其中該計算主機之該系統可存取記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC155)一種系統,其包括:一I/O裝置,其耦合至一計算主機;該I/O裝置之一映射,其選擇性地使該I/O裝置之邏輯區塊位址(LBA)與該I/O裝置之一非揮發性記憶體(NVM)中之位置相關聯;該映射之一陰影複本,其在計算主機之記憶體中;且其中針對該I/O裝置之至少某些運作經啟用以存取該映射之該陰影複本以判定該I/O裝置之NVM中之一位置。
EC156)如EC155之系統,其中該至少某些運作未經啟用以存取該映射。
EC157)如EC155之系統,其中該映射之該陰影複本包括複數個項目,該等項目中之每一者與該等LBA中之一各別者相關聯,且該等項目中之每一者包括有效性之一指示;且其中該映射之該陰影複本之該等有效項目中之至少一者選擇性地規定與該等有效項目中之該至少一者相關聯之該各別LBA不存在於該NVM中。
EC158)如EC157之系統,其中與該等有效項目中之該至少一者相關聯之該各別LBA被修整。
EC159)如EC155之系統,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC160)如EC155之系統,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC161)如EC160之系統,其中該計算主機之該I/O空間記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC162)如EC161之系統,其進一步包括:一I/O卡,其包含該I/O裝置及該計算主機之該I/O空間記憶體。
EC163)如EC162之系統,其中該I/O裝置係該I/O卡上之複數個I/O裝置中之一第一者,且該計算主機之該I/O空間記憶體在該複數個I/O裝置之間共用。
EC164)如EC162之系統,其中該I/O卡包括該計算主機之該記憶體。
EC165)如EC162之系統,其中該I/O卡包括一切換器;且其中該I/O裝置及該計算主機之該記憶體各自耦合至該切換器。
EC166)如EC165之系統,其中該I/O裝置係複數個I/O裝置中之一第一者;且其中該等I/O裝置中之每一者耦合至該切換器。
EC167)如EC165之系統,其中該計算主機之該記憶體直接耦合至該切換器。
EC168)如EC155之系統,其中該映射直接耦合至該I/O裝置。
EC169)如EC155之系統,其中該映射儲存於該NVM 中。
EC170)如EC155之系統,其中該映射之該陰影複本不直接耦合至該I/O裝置。
EC171)如EC155之系統,其中該映射包括一雙階映射。
EC172)如EC171之系統,其中該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該映射之該第二階。
EC173)如EC155之系統,其中該映射非揮發性地儲存於該NVM中。
EC174)如EC173之系統,其中該計算主機之該記憶體包括一揮發性記憶體。
EC175)一種系統,其包括:一I/O裝置,其耦合至一計算主機;一記憶體,其可由該計算主機存取,可由該計算主機存取之該記憶體不直接耦合至該I/O裝置;且其中該I/O裝置之狀態儲存於可由該計算主機存取之該記憶體中。
EC176)如EC175之系統,其進一步包括:該I/O裝置之一映射,其選擇性地使該I/O裝置之邏輯區塊位址(LBA)與該I/O裝置之一非揮發性記憶體(NVM)中之位置相關聯;其中儲存於可由該計算主機存取之該記憶體中之該I/O裝置之該狀態包括儲存於可由該計算主機存取之該記憶體中 之該映射之一陰影複本;且其中該映射非揮發性地儲存於該NVM中。
EC177)如EC176之系統,其中該映射之該陰影複本包括複數個項目,該等項目中之每一者與該等LBA中之一各別者相關聯,且該等項目中之每一者包括有效性之一指示;且其中該映射之該陰影複本之該等有效項目中之至少一者選擇性地規定與該等有效項目中之該至少一者相關聯之該各別LBA不存在於該NVM中。
EC178)如EC175之系統,其中可由該計算主機存取之該記憶體包括該計算主機之一主記憶體。
EC179)如EC175之系統,其中可由該計算主機存取之該記憶體包括該計算主機之一I/O空間記憶體。
EC180)如EC179之系統,其中該計算主機之該I/O空間記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC181)如EC175之系統,其中儲存於可由該計算主機存取之該記憶體中之該I/O裝置之該狀態包括該I/O裝置之內部狀態。
EC182)如EC181之系統,其中該I/O裝置之該內部狀態包括在該I/O裝置進入一低電力狀態時所丟失之狀態。
EC183)如EC182之系統,其中回應於進入該低電力狀態之一請求,該I/O裝置經啟用以將在該I/O裝置進入該低電力狀態時所丟失之該狀態儲存於可由該計算主機存取之該記憶體中。
EC184)如EC175之系統,其中可由該計算主機存取之該記憶體包括一揮發性記憶體。
EC185)一種方法,其包括:接收用以存取儲存之一命令,該命令規定一存取類型且具有一或多個參數;判定該儲存之一位置;且其中該判定包括按條件參考一所包含資料結構以確定該位置,當該等參數中之一或多者包括該位置之一規格時省略該參考。
EC186)如EC185之方法,其中該規格包括以下各項中之一或多者:該儲存之一區之一識別,該儲存之一實體位址之一識別,該儲存之資料之一長度,及該儲存之資料之一跨度。
EC187)如EC185之方法,其中該所包含資料結構包括一或多個項目,該一或多個項目各自闡述與一各別一或多個邏輯區塊位址(LBA)相關聯之資料位於該儲存中何處。
EC188)如EC187之方法,其中該等項目中之每一者進一步選擇性地闡述與該等各別LBA相關聯之一或多個屬性。
EC189)如EC187之方法,其中該等項目中之每一者進一步闡述與該儲存之一或多個區相關聯之一或多個屬性。
EC190)如EC185之方法,其進一步包括在該接收之前 將闡述一修改之一更新提供至該所包含資料結構。
EC191)如EC190之方法,其中由一計算主機提供該命令,且將該更新提供至該計算主機。
EC192)如EC190之方法,其中該更新包括該位置之該規格。
EC193)如EC192之方法,其中該命令係根據一邏輯區塊位址(LBA)且該提供係回應於處理去往該LBA之一寫入命令。
EC194)如EC192之方法,其中該提供係回應於回收及/或重新定位實施該儲存中之至少某些儲存之非揮發性記憶體(NVM)之一或多個部分。
EC195)如EC185之方法,其中該接收及該判定係經由一I/O儲存裝置進行的。
EC196)如EC185之方法,其中由一計算主機提供該命令。
EC197)如EC185之方法,其中該等參數包括標準參數及非標準參數,藉由一標準定義該等標準參數,不藉由該標準定義該等非標準參數,且該等非標準參數包括包括該規格之該等參數。
EC198)如EC185之方法,其中藉由一標準定義該命令且不藉由該標準定義包括該規格之該等參數。
EC199)如EC197或EC198之方法,其中包括該規格之該等參數包括以下各項中之一或多者:所保留命令碼, 廠商特定命令,所保留欄位,未使用之欄位,及能力暫存器中之值。
EC200)如EC185之方法,其進一步包括根據該存取類型及該位置執行該儲存之一存取。
EC201)如EC200之方法,其中該存取類型係一讀取存取類型且該存取係一讀取存取。
EC202)如EC201之方法,其中該等參數包括該規格。
EC203)如EC202之方法,其中該命令係一預映射讀取命令。
EC204)如EC185之方法,其中該位置係一第一位置,且該方法進一步包括根據該存取類型及一第二位置執行該儲存之一存取。
EC205)如EC204之方法,其中該存取類型係一寫入存取類型且該存取係一寫入存取。
EC206)如EC205之方法,其進一步包括將闡述一修改之一更新提供至該所包含資料結構,該更新包括該第二位置之一規格。
EC207)如EC205之方法,其進一步包括根據該規格修正該儲存之使用之一計量。
EC208)如EC185之方法,其中該命令係一修整命令且該存取類型係一修整存取類型。
EC209)如EC208之方法,其進一步包括將闡述一修改 之一更新提供至該所包含資料結構,該更新包括在該命令之該接收之前映射至該位置之一邏輯區塊位址(LBA)之一屬性之一規格。
EC210)如EC209之方法,其中該屬性指示已修整該LBA。
EC211)如EC208之方法,其進一步包括根據該規格修正該儲存之使用之一計量。
EC212)一種方法,其包括:接收一命令,該命令係複數個命令類型中之一者,該等命令類型包括一第一類型及一第二類型;判定該命令係該等命令類型中之哪一者;若該命令具有該第一類型,則執行第一處理且然後執行第二處理;若該命令具有該第二類型,則執行該第二處理而不執行該第一處理;其中該第二處理使用在該命令具有該第一類型之情形下藉由該第一處理產生且在該命令具有該第二類型之情形下藉由該命令產生之資訊。
EC213)如EC212之方法,其中該命令欲存取一I/O儲存裝置之儲存。
EC214)如EC213之方法,其中該第一處理包括存取一所包含資料結構以產生該資訊。
EC215)如EC214之方法,其中該所包含資料結構係一映射,該映射闡述邏輯區塊位址(LBA)與實施該儲存中之 至少某些儲存之非揮發性記憶體(NVM)之實體位址之間的映射,且該資訊包括該等映射中之一者之至少部分。
EC216)如EC215之方法,其中該第一類型之命令規定該等LBA中之至少一者。
EC217)如EC216之方法,其中該第二類型之命令不規定該等LBA中之任一者。
EC218)如EC214之方法,其進一步包括在該接收之前將闡述一修改之一更新提供至該所包含資料結構。
EC219)如EC218之方法,其中該更新包括該資訊之一規格。
EC220)如EC219之方法,其中該規格包括以下各項中之一或多者:該儲存之一區之一識別,該儲存之一實體位址之一識別,該儲存之資料之一長度,及該儲存之資料之一跨度。
EC221)如EC219之方法,其中該提供係回應於接收該等命令類型中之一寫入命令類型。
EC222)如EC219方法,其中該提供係回應於回收及/或重新定位實施該儲存中之至少某些儲存之非揮發性記憶體(NVM)之一部分。
EC223)如EC218之方法,其中由一計算主機提供該命令,且將該更新提供至該計算主機。
EC224)如EC213之方法,其中該接收、該判定及該兩 個執行動作係經由一I/O儲存裝置進行的。
EC225)如EC213之方法,其中由一計算主機提供該命令。
EC226)如EC212之方法,其中藉由一標準定義該第一類型之該等命令且不藉由該標準定義該第二類型之該等命令。
EC227)如EC212之方法,其中當該命令具有該第二類型時,經由以下各項中之一或多者提供該資訊:所保留命令碼,廠商特定命令,所保留欄位,未使用之欄位,及能力暫存器中之值。
EC228)如EC214之方法,其中該第一類型包括一讀取類型且該第二類型包括一預映射讀取類型。
EC229)如EC228之方法,其中該儲存之該存取係一讀取存取,該資訊包括該儲存之一位置,且該第二處理包括讀取該位置。
EC230)如EC214之方法,其中該第一類型包括一第一寫入類型,該第二類型包括一第二寫入類型,且該第二寫入類型提供該資訊而該第一寫入類型不提供該資訊。
EC231)如EC230之方法,其中該儲存之該存取係一寫入存取,該資訊包括該儲存之一第一位置,且該第二處理包括寫入該儲存之一第二位置及根據該第一位置修正該儲 存之使用之一計量。
EC232)如EC231之方法,其進一步包括將闡述一修改之一更新提供至該所包含資料結構,該更新包括該第二位置之一規格。
EC233)如EC214之方法,其中該第一類型包括一第一修整類型,該第二類型包括一第二修整類型,且該第二修整類型提供該資訊而該第一修整類型不提供該資訊。
EC234)如EC233之方法,其中該儲存之該存取係一修整存取,該資訊包括該儲存之一位置,且該第二處理包括根據該位置修正該儲存之使用之一計量。
EC235)如EC234之方法,其進一步包括將闡述一修改之一更新提供至該所包含資料結構,該更新包括在該命令之該接收之前根據該所包含資料結構映射至該位置之一邏輯區塊位址(LBA)之一屬性之一規格。
EC236)如EC235之方法,其中該屬性指示已修整該LBA。
EC237)一種方法,其包括:自一計算主機接收一命令,該命令包括零或零以上標準參數及一或多個非標準參數;根據該等標準參數執行該命令,且其中該接收及該執行係經由一I/O儲存裝置進行的,該I/O儲存裝置經啟用以使用該等非標準參數來以比在不具有該等非標準參數之益處之情況下高之一效率運作。
EC238)如EC237之方法,其中該I/O儲存裝置將儲存介 接至該計算主機。
EC239)如EC237之方法,其中該I/O儲存裝置經啟用以使用該等非標準參數來以比在不具有該等非標準參數之益處之情況下高之一效率執行該命令。
EC240)如EC239之方法,其進一步包括管理實施該I/O儲存裝置之儲存之至少一部分之一非揮發性記憶體(NVM)。
EC241)如EC240之方法,其中該命令係一讀取命令且該等非標準參數中之一或多者至少部分地規定該NVM中之一實體位置,且該方法進一步包括讀取該實體位置。
EC242)如EC241之方法,其進一步包括該I/O儲存裝置執行一所包含I/O裝置映射之映射更新且將該等映射更新中之至少某些映射更新提供至該計算主機以使得該計算主機能夠更新一計算主機映射,該計算主機映射及該I/O裝置映射各自具有闡述邏輯區塊位址(LBA)與該NVM之位置之間的映射之各別項目,且經由存取該計算主機映射至少部分地判定該等非標準參數中之至少一者。
EC243)如EC242之方法,其中用以存取該計算主機映射之一延時少於用以存取該I/O裝置映射之一延時,且該較高效率包括較低延時。
EC244)如EC240之方法,其中該命令係一寫入命令且該等非標準參數中之一或多者至少部分地規定該NVM中之一第一實體位置,且該方法進一步包括寫入該NVM中之一第二實體位置且根據該第一實體位置修正該儲存之使用之 一計量。
EC245)如EC244之方法,其進一步包括該I/O儲存裝置執行一所包含I/O裝置映射之映射更新且將該等映射更新中之至少某些映射更新提供至該計算主機以使得該計算主機能夠更新一計算主機映射,該計算主機映射及該I/O裝置映射各自具有闡述邏輯區塊位址(LBA)與該NVM之位置之間的映射之各別項目,且經由存取該計算主機映射至少部分地判定該等非標準參數中之至少一者。
EC246)如EC245之方法,其中用以存取該計算主機映射之一延時少於用以存取該I/O裝置映射之一延時,且該較高效率包括較低延時。
EC247)如EC237之方法,其中該命令係一第一命令,且該I/O儲存裝置經啟用以根據該等非標準參數且以比在不具有該等非標準參數之益處之情況下高之一效率執行在該第一命令之後接收之一第二命令。
EC248)如EC247之方法,其進一步包括管理實施該I/O儲存裝置之儲存之至少一部分之一非揮發性記憶體(NVM)。
EC249)如EC248之方法,其進一步包括該I/O儲存裝置管理一所包含映射,該所包含映射具有闡述邏輯區塊位址(LBA)與該NVM之位置之間的映射之若干項目。
EC250)如EC249之方法,其中該等標準參數中之一或多者之至少一部分包括一特定LBA,且該方法進一步包括該I/O儲存裝置將依據該等非標準參數判定之至少某些資 訊儲存於該等項目中之至少一選定者中,該選定項目至少部分地藉由該特定LBA而選擇。
EC251)如EC250之方法,其中該第二命令係根據該特定LBA。
EC252)如EC250之方法,其中該資訊包括複數個資料頻帶中之一特定者之一識別,且該方法進一步包括該I/O儲存裝置回收將該特定LBA映射至其的該NVM之若干部分以保持於該特定資料頻帶中。
EC253)如EC248之方法,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料類型中之一者,該等資料類型包括以下各項中之任何兩者或兩者以上:一可壓縮資料類型,一不可壓縮資料類型,及一使用模型資料類型。
EC254)如EC253之方法,其中該使用模型資料類型包括一資料庫日誌資料類型,且該方法進一步包括該I/O儲存裝置管理該NVM以將與該資料庫日誌資料類型相關聯之資料儲存於複數個資料頻帶中之一資料庫日誌資料頻帶中,及該I/O儲存裝置管理該資料庫日誌資料頻帶以使得在該資料庫日誌頻帶中之資料之一量超過一臨限值時選擇性地刪除該資料庫日誌頻帶之較舊資料。
EC255)如EC254之方法,其進一步包括在回收該較舊資料時刪除該較舊資料。
EC256)如EC248之方法,其中該等非標準參數中之至 少一或多者至少部分地規定複數個資料存取類型中之一者,該等資料存取類型包括以下各項中之任何兩者或兩者以上:一讀取/寫入資料存取類型,一主要讀取資料存取類型,一主要寫入資料存取類型,及一暫態資料存取類型。
EC257)如EC256之方法,其中該第二命令係一寫入命令,且該方法進一步包括該I/O儲存裝置回應於該寫入命令而寫入該NVM之一特定部分,該特定部分至少部分地藉由該資料存取類型而判定。
EC258)如EC257之方法,其中該資料存取類型係一讀取/寫入資料存取類型,且該特定部分尚未經受相對諸多程式化/抹除循環且尚未經受相對較少程式化/抹除循環。
EC259)如EC257之方法,其中該資料存取類型係一主要讀取資料存取類型,且該特定部分已經受相對諸多程式化/抹除循環。
EC260)如EC257之方法,其中該資料存取類型係一主要寫入資料存取類型,且該特定部分已經受相對較少程式化/抹除循環。
EC261)如EC258、EC259或EC260之方法,其中該較高效率包括較高可靠性。
EC262)如EC258、EC259或EC260之方法,其中該較高效率包括較長壽命。
EC263)如EC256之方法,其中該等標準參數中之一或多者之至少一部分包括一特定LBA且該資料存取類型係該暫態資料存取類型,且該方法進一步包括該I/O儲存裝置回應於一特定事件而刪除儲存於對應於該特定LBA之該NVM中之位置處之資料。
EC264)如EC263之方法,其中該刪除該資料包括根據該特定LBA在該I/O儲存裝置之一映射之一項目處更新該映射以規定對應於該特定LBA之資料不存在於該NVM中。
EC265)如EC263之方法,其中該刪除該資料包括修整該資料。
EC266)如EC263之方法,其中該特定事件係以下各項中之任何一或多者:該I/O儲存裝置之一NVM管理運作,該I/O儲存裝置之一NVM回收運作,該I/O儲存裝置之一供電循環,該I/O儲存裝置之一重設,一虛擬I/O儲存裝置之一虛擬機供電循環,一虛擬I/O儲存裝置之一虛擬機重設,來自該計算主機之一明確請求,及來自一記憶體快取應用程式之一請求。
EC267)如EC248之方法,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料定序中之一者,該等資料定序包括一順序定序及一不可部分完成定序中之任何兩者或兩者以上。
EC268)如EC248之方法,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料關係中之一者,該等資料關係包括多個資料物項之間的一讀取及/或寫入關聯性及一預提取資料關係中之任何兩者或兩者以上。
EC269)如EC248之方法,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料目的地中之一者,該等資料目的地包括以下各項中之任何兩者或兩者以上:該NVM之一特定部分,一階層式儲存層級,一儲存類型,及一特定資料頻帶。
EC270)如EC269之方法,其中該儲存類型係以下各項中之任何一或多者:單位階記憶體胞(SLC),多位階記憶體胞(MLC),磁性隨機存取記憶體(MRAM),揮發性,及非揮發性。
EC271)如EC269之方法,其中該等資料目的地中之該一者之該規格達成以下各項中之一或多者之改良:寫入速度,回收速度,回收頻率,及寫入放大。
EC272)如EC248之方法,其中該等非標準參數中之至少一或多者至少部分地規定複數個命令處理特性中之一者,該等命令處理特性包括以下各項中之任何兩者或兩者以上:一命令優先級,命令排序,用於特定類型之命令之一障壁,特定類型之命令之間的一邊界,命令之一彙總,命令之一合併,及命令之不可部分完成運作。
EC273)如EC239或EC247之方法,其中該較高效率包括較高效能。
EC274)如EC273之方法,其中該較高效能包括以下各項中之一或多者:較高頻寬,較低延時,及較低電力。
EC275)如EC239或EC247之方法,其中該較高效率包括較高可靠性。
EC276)如EC275之方法,其中該較高可靠性包括較低錯誤率及較長壽命中之一或多者。
EC277)一種方法,其包括:自一計算主機接收一命令,該命令請求一非標準統計值之 傳回;將該非標準統計值傳回至該計算主機,且其中該接收及該傳回係經由一I/O儲存裝置進行的,該I/O儲存裝置經啟用以計算該非標準統計。
EC278)如EC277之方法,其進一步包括減小欲寫入至實施該I/O儲存裝置之儲存之至少一部分之一非揮發性記憶體(NVM)之資料之一大小;且其中該計算係至少部分地基於該減小。
EC279)如EC278之方法,其中該減小包括壓縮。
EC280)如EC278之方法,其中該減小包括資料去重複。
EC281)如EC278之方法,其中該非標準統計係根據該NVM之使用。
EC282)如EC281之方法,其中該NVM之該使用根據該減小之一品質而變化。
EC283)如EC281之方法,其中該NVM之該使用根據自該計算主機接收之修整命令之一數目及/或一大小而變化。
EC284)如EC281之方法,其中該NVM之該使用根據自該計算主機接收之暫態資料之一量而變化。
EC285)如EC284之方法,其中該NVM之該使用根據已藉由該I/O儲存裝置修整之該暫態資料之一量而變化。
EC286)如EC281之方法,其中該非標準統計係根據該NVM之一百分比使用。
EC287)如EC281之方法,其中該非標準統計係根據該I/O儲存裝置之一寫入放大。
EC288)如EC278之方法,其中該非標準統計係該NVM之一或多個頻帶之一大小。
EC289)如EC278之方法,其中該非標準統計係該NVM之一或多個頻帶之一使用。
EC290)如EC289之方法,其中該NVM之該一或多個頻帶之該使用根據該減小之一品質而變化。
EC291)如EC195、EC213、EC238或EC277之方法,其中該I/O儲存裝置包括經啟用以執行該命令之該接收之一固態磁碟(SSD)控制器。
EC292)如EC291之方法,其中在一單個積體電路(IC)中實施該SSD控制器。
EC293)如EC292之方法,其中經由非揮發性記憶體(NVM)實施該儲存之至少一部分。
EC294)如EC293之方法,其中該NVM包括一或多個快閃記憶體。
EC295)如EC293之方法,其中該NVM之至少一部分包括以下各項中之一或多者:NAND快閃技術儲存記憶體胞,及NOR快閃技術儲存記憶體胞。
EC296)如EC293之方法,其中該NVM之至少一部分包括以下各項中之一或多者:單位階記憶體胞(SLC)快閃技術儲存記憶體胞,及 多位階記憶體胞(MLC)快閃技術儲存記憶體胞。
EC297)如EC293之方法,其中該SSD控制器包括經啟用以與該NVM傳遞資料之一NVM介面,該資料中之至少某些資料與該等命令中之至少某些命令相關聯。
EC298)如EC297之方法,其中該NVM介面係與以下各項中之一或多者相容:一開放NAND快閃介面(ONFI),一雙態觸變模式介面,一雙倍資料速率(DDR)同步介面,一同步介面,及一不同步介面。
EC299)如EC293之方法,其中該SSD控制器及該NVM包括於一SSD中。
EC300)如EC291之方法,其中該SSD控制器包括一儲存介面,該儲存介面與一儲存介面標準相容且經啟用以耦合至經由該儲存介面提供該命令之一計算主機。
EC301)如EC300之方法,其進一步包括運作該計算主機以提供該命令。
EC302)一種方法,其包括:在一I/O裝置處經由一外部介面自一計算主機接收一命令;確定該命令之一類型;回應於該類型係一讀取命令,存取一映射以轉譯該命令之一邏輯區塊位址(LBA)以獲得選擇性地包括一非揮發性記 憶體(NVM)中之一位置之經轉譯LBA資訊;回應於該類型係一預映射讀取命令,依據該預映射讀取命令之資訊且在不使用該映射之情況下判定該NVM中之該位置;傳回對應於該位置之資料;且其中該資訊包括該經轉譯LBA資訊之至少一部分。
EC303)如EC302之方法,其中該位置係一第一位置,該資訊係第一資訊,且該方法進一步包括回應於該類型係一寫入命令:將該寫入命令之資料寫入至該NVM中之一第二位置;將該寫入命令之一LBA與該第二位置之間的一關聯性儲存於該映射中;將包括根據該第二位置之第二資訊之一更新發送至該映射之一陰影複本;且其中自該陰影複本至少部分地獲得該第一資訊,且將該陰影複本至少部分地儲存於耦合至該計算主機之一I/O卡之一記憶體裝置中。
EC304)一種系統,其包括:用於在一I/O裝置處接收包括一標準命令及一非標準修飾符之一規格之一經擴展命令之構件;用於根據該非標準修改符執行該標準命令之構件;且藉此由於用以修改該標準命令之該執行之該非標準修改符之使用而改良系統級效能。
EC305)一種系統,其包括: 用於在一I/O裝置處接收包括用以啟用一非標準修改符之一規格之一模式設定命令之構件;用於在該I/O裝置處接收一標準命令之構件;用於根據該非標準修改符執行該標準命令之構件;且藉此由於用以修改該標準命令之該執行之該非標準修改符之使用而改良系統級效能。
EC306)如EC304或EC305中任一項之系統,其進一步包括:用於使該非標準修改符與該標準命令之資料相關聯之構件。
EC307)如EC306之系統,其進一步包括:用於儲存該非標準修改符之一指示以用於關於該標準命令之該資料之稍後擷取之構件。
EC308)如EC307之系統,其中該儲存係非揮發性的。
EC309)如EC307之系統,其進一步包括:用於將該非標準修改符之該指示儲存於一映射之複數個項目中之一特定者中之構件,該特定項目藉由該標準命令之一邏輯區塊位址(LBA)而與該標準命令之該資料相關聯。
EC310)如EC307之系統,其中該標準命令係一寫入命令,且該系統進一步包括:用於回應於一後續讀取命令規定對該寫入命令之該資料之存取而根據該非標準修改符之該指示修改該後續讀取命令之執行之構件。
EC311)如EC307之系統,其中該標準命令係一第一命 令,且該系統進一步包括:用於回應於一後續命令規定對該第一命令之該資料之存取而根據該非標準修改符之該指示修改該後續命令之執行之構件。
EC312)如EC311之系統,其中該第一命令係一寫入命令;其中該非標準修改符包括該寫入命令之該資料係唯讀之一指示;且其中該修改該後續命令之執行包括:若該後續命令係一標準寫入命令,則傳回一錯誤指示。
EC313)如EC307之系統,其中該標準命令係一寫入命令,且該系統進一步包括:用於判定欲回收該寫入命令之該資料之構件;用於存取該非標準修改符之該指示之構件;用於回應於該非標準修改符之該指示而修整該寫入命令之該資料之構件;且藉此該寫入命令之該資料被修整而非被回收。
EC314)如EC304或EC305中任一項之系統,其中該標準命令係一讀取命令。
EC315)如EC304或EC305中任一項之系統,其中該標準命令係一讀取命令或一寫入命令中之一者。
EC316)如EC304或EC305中任一項之系統,其中該標準命令係一資料移動命令。
EC317)如EC304或EC305中任一項之系統,其中該標準 命令係一修整命令。
EC318)如EC317之系統,其中該非標準修改符選擇性地判定該修整命令是強制的還是選用的。
EC319)如EC304或EC305中任一項之系統,其中該非標準修改符藉由該標準命令之一所保留欄位至少部分地規定。
EC320)如EC304或EC305中任一項之系統,其中該非標準修改符藉由該標準命令之複數個位址位元中之至少某些位址位元至少部分地規定。
EC321)如EC320之系統,其中該等位址位元中之該至少某些位址位元未由該I/O裝置以其他方式使用。
EC322)如EC304或EC305中任一項之系統,其中該非標準修改符係以下各項中之一或多者:一資料類型之一規格;一資料存取類型之一規格;資料定序之一規格;一資料關係之一規格;一資料目的地之一規格;及一命令關係之一規格。
EC323)如EC322之系統,其中該資料類型之該規格包括一可壓縮性指示。
EC324)如EC323之系統,其中該資料類型之該規格包括該資料類型係不可壓縮之一指示。
EC325)如EC322之系統,其中該資料類型之該規格包 括一資料庫日誌類型指示。
EC326)如EC322之系統,其中該資料存取類型之該規格包括一讀取/寫入資料存取類型指示、一主要讀取資料存取類型指示及一主要寫入資料存取類型指示中之兩者或兩者以上。
EC327)如EC322之系統,其中該資料存取類型之該規格包括一讀取/寫入資料存取類型指示、一主要讀取資料存取類型指示、一主要寫入資料存取類型指示及一暫態資料存取類型指示中之兩者或兩者以上。
EC328)如EC322之系統,其中該資料存取類型之該規格包括一暫態資料存取類型指示。
EC329)如EC328之系統,其中該標準命令係一寫入命令且該非標準修改符包括該暫態資料存取類型指示,且該系統進一步包括:用於非揮發性地儲存該寫入命令之資料之構件;及用於回應於判定欲回收藉由該寫入命令所儲存之該資料且根據該非標準修改符而修整藉由該寫入命令所儲存之該資料之構件。
EC330)如EC329之系統,其進一步包括:用於回應於在該修整之後讀取藉由該寫入命令所儲存之該資料而傳回修整藉由該寫入命令所儲存之該資料之一指示之構件。
EC331)如EC329之系統,其進一步包括:用於回應於讀取藉由該寫入命令所儲存之該資料而選擇性 地傳回修整藉由該寫入命令所儲存之該資料之一指示或藉由該寫入命令所儲存之該資料之構件。
EC332)如EC330或EC331中任一項之系統,其進一步包括:用於回應於該讀取而傳回修整藉由該寫入命令所儲存之該資料之該指示作為一非資料回應之構件。
EC333)如EC330或EC331中任一項之系統,其進一步包括:用於回應於該讀取而傳回修整藉由該寫入命令所儲存之該資料之該指示作為所傳回之資料之一特定型樣之構件。
EC334)如EC322之系統,其中該資料存取類型之該規格包括一唯讀資料存取類型指示。
EC335)如EC334之系統,其中該標準命令係一第一寫入命令且該非標準修改符包括該唯讀資料存取類型指示,且該系統進一步包括:用於根據該第一寫入命令之一邏輯區塊位址(LBA)非揮發性地儲存該第一寫入命令之資料之構件;及用於回應於一後續寫入命令嘗試寫入至該第一寫入命令之該LBA而傳回一錯誤指示之構件。
EC336)如EC322之系統,其中該資料定序之該規格包括一不可部分完成序列之一指示。
EC337)如EC322之系統,其中該資料定序之該規格包括一順序序列之一指示及一不可部分完成序列之一指示中之一或多者。
EC338)如EC322之系統,其進一步包括:用於使該資料關係與該標準命令之資料相關聯之構件。
EC339)如EC338之系統,其進一步包括:用於非揮發性地儲存該資料關係及該標準命令之該資料之構件。
EC340)如EC339之系統,其中該標準命令係一第一標準命令,且該系統進一步包括:用於隨後使該資料關係與一後續標準命令之資料相關聯之構件。
EC341)如EC340,其進一步包括:用於根據該資料關係擷取資料之構件。
EC342)如EC322之系統,其中該資料目的地之該規格規定複數個資料頻帶中之一者。
EC343)如EC342之系統,其中該等資料頻帶包括一熱頻帶及一冷頻帶。
EC344)如EC322之系統,其中該命令關係之該規格包括一命令優先級。
EC345)如EC322之系統,其中該命令關係之該規格包括一命令排序相依性。
EC346)如EC345之系統,其中該命令排序相依性係一命令障壁。
EC347)如EC305之系統,其中該標準命令係兩個或兩個以上標準命令之一序列。
EC348)如EC305之系統, 其中該模式設定命令係一第一模式設定命令;且該系統進一步包括用於在該接收該標準命令之後接收包括用以停用該非標準修改符之一規格之一第二模式設定命令之構件。
EC349)一種系統,其包括:用於在一I/O裝置處經由一外部介面接收一命令之構件;用於確定該命令之一類型之構件;用於若該命令之該類型係一讀取命令則存取一映射以轉譯該命令之一邏輯區塊位址(LBA)以獲得選擇性地包括一非揮發性記憶體(NVM)中之一位置之經轉譯LBA資訊之構件;用於若該命令之該類型係一預映射讀取命令則依據該預映射讀取命令之資訊且在不使用該映射之情況下判定該NVM中之該位置之構件;用於傳回對應於該NVM中之該位置之資料之構件;且其中該預映射讀取命令之該資訊包括該經轉譯LBA資訊之至少一部分。
EC350)如EC349之系統,其中該經轉譯LBA資訊選擇性地包括該NVM中之一位置或該命令之該LBA不存在於該NVM中之一指示。
EC351)如EC349之系統,其中該經轉譯LBA資訊選擇性地包括該NVM之一或多個讀取單元中之一第一者之一位址及讀取單元之一長度。
EC352)如EC351之系統,其中該一或多個讀取單元中 之每一者之一大小係至少512位元組。
EC353)如EC349之系統,其進一步包括:用於存取該映射之一陰影複本以轉譯該LBA以獲得該經轉譯LBA資訊之該至少一部分之構件;及用於將包含該經轉譯LBA資訊之該至少一部分之該預映射讀取命令發送至該I/O裝置之構件。
EC354)如EC353之系統,其中該存取係在一計算主機處。
EC355)如EC353之系統,其中該映射之該陰影複本包括複數個項目,且該等項目中之每一者包括有效性之一指示。
EC356)如EC355之系統,其中該LBA係複數個邏輯區塊位址(LBA)中之一者;其中該經轉譯LBA資訊係複數個經轉譯LBA資訊中之一者;且其中該映射之該陰影複本之該等有效項目中之一者使該等LBA中之一或多者與該複數個經轉譯LBA資訊中之一各別者相關聯。
EC357)如EC356之系統,其中該映射之該陰影複本之該等有效項目中之每一者包括該複數個經轉譯LBA資訊中之該各別者之至少一部分。
EC358)如C356之系統,其中該映射之該陰影複本之該等有效項目中之至少一者選擇性地規定與該等有效項目中之該至少一者相關聯之該等LBA不存在於該NVM中。
EC359)如EC358之系統,其中與該等有效項目中之該至少一者相關聯之該等LBA被修整。
EC360)如EC355之系統,其中該NVM中之該位置係該NVM中之複數個位置中之一者;且其中該映射之該陰影複本之該等有效項目中之每一者選擇性地規定該NVM中之一各別位置。
EC361)如EC360之系統,其中該映射之該陰影複本之該等有效項目中之每一者選擇性地規定與該項目相關聯之資料不存在於該NVM中。
EC362)如EC355之系統,其進一步包括:用於最初將該映射之該陰影複本之所有項目標記為無效之構件。
EC363)如EC355之系統,其進一步包括:用於回應於將一寫入命令發送至該I/O裝置而將與該寫入命令之一邏輯區塊位址(LBA)相關聯之該映射之該陰影複本之一項目標記為無效之構件。
EC364)如EC363之系統,其進一步包括:用於在該I/O裝置處經由該外部介面接收該寫入命令之構件;及用於在該接收該寫入命令之後發送對應於該寫入命令之該LBA之一陰影映射更新之構件。
EC365)如EC364之系統,其進一步包括:用於根據該陰影映射更新而更新該映射之該陰影複本之構 件;及其中用於更新之該構件將與該寫入命令之該LBA相關聯之該映射之該陰影複本之該項目標記為有效。
EC366)如EC365之系統,其中該更新係藉由該I/O裝置進行的。
EC367)如EC353之系統,其進一步包括:用於將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中之構件。
EC368)如EC367之系統,其進一步包括:用於將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機之構件。
EC369)如EC367之系統,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC370)如EC367之系統,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC371)如EC370之系統,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC372)如EC367之系統,其中該映射非揮發性地儲存於該NVM中。
EC373)如EC372之系統,其中該計算主機之該記憶體包括一揮發性記憶體。
EC374)如EC349之系統,其中該映射包括一雙階映射。
EC375)如EC374之系統, 其中該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該映射之該第二階。
EC376)一種系統,其包括:用於在一I/O裝置處經由一外部介面接收一寫入命令之構件;用於將該寫入命令之資料寫入至一非揮發性記憶體(NVM)中之一位置之構件;用於將該寫入命令之一邏輯區塊位址(LBA)與該NVM中之該位置之間的一關聯性儲存於一映射中之構件;及用於將包括根據該NVM中之該位置之資訊之一更新發送至該映射之一陰影複本之構件。
EC377)如EC376之系統,其中該映射包括一雙階映射。
EC378)如EC377之系統,其中該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該映射之該第二階。
EC379)如EC376之系統,其中根據該NVM中之該位置之該資訊包括該NVM之一或多個讀取單元中之一第一者之一位址及讀取單元之一長度。
EC380)如EC376之系統,其進一步包括:用於將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中之構件。
EC381)如EC380之系統,其進一步包括:用於將該映射之該陰影複本之該更新自該I/O裝置發送至 該計算主機之構件。
EC382)如EC380之系統,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC383)如EC380之系統,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC384)如EC383之系統,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC385)如EC383之系統,其進一步包括:用於將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機之該I/O空間記憶體之構件。
EC386)如EC385之系統,其中用於發送該更新之該構件包括用於發送一PCIe寫入請求之構件。
EC387)如EC385之系統,其中用於發送該更新之該構件包括用於該映射之該陰影複本之一讀取-修改-寫入之構件。
EC388)如EC385之系統,其進一步包括:用於在該I/O裝置執行一讀取命令之前自該映射之該陰影複本提取該讀取命令之一邏輯區塊位址(LBA)之一轉譯之構件。
EC389)如EC388之系統,其中該提取係藉由該I/O裝置進行的。
EC390)如EC389之系統,其中用於提取之該構件包括用於發送一PCIe讀取請求之構件。
EC391)如EC388之系統,其中該提取係藉由該計算主 機進行的,且該讀取命令係一預映射讀取命令。
EC392)如EC380之系統,其中該映射非揮發性地儲存於該NVM中。
EC393)如EC392之系統,其中該計算主機之該記憶體包括一揮發性記憶體。
EC394)一種系統,其包括:用於初始化一I/O裝置之一映射之一陰影複本以使得將該映射之該陰影複本之複數個項目中之所有項目標記為無效之構件;用於自該I/O裝置接收該映射之該陰影複本之一更新之構件;用於根據該映射之該陰影複本之該更新而將該映射之該陰影複本之該等項目中之至少一者標記為有效之構件。
EC395)如EC394之系統,其中用於根據該更新進行標記之該構件進一步包括用於使該更新之經轉譯邏輯區塊位址(LBA)資訊與該等項目中之該至少一者相關聯之構件。
EC396)如EC395之系統,其中該經轉譯LBA資訊包括該I/O裝置之非揮發性記憶體(NVM)中之一位置。
EC397)如EC394之系統,其中該映射之該陰影複本之該等項目中之每一者選擇性地使該I/O裝置之至少一個邏輯區塊位址(LBA)與該I/O裝置之非揮發性記憶體(NVM)中之一位置相關聯。
EC398)如EC394之系統,其中該I/O裝置之該映射包括一雙階映射。
EC399)如EC398之系統,其中該I/O裝置之該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該I/O裝置之該映射之該第二階。
EC400)如EC394之系統,其進一步包括:用於將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中之構件。
EC401)如EC400之系統,其進一步包括:用於將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機之構件。
EC402)如EC400之系統,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC403)如EC400之系統,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC404)如EC403之系統,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC405)如EC403之系統,其進一步包括:用於將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機之該I/O空間記憶體之構件。
EC406)如EC405之系統,其中用於發送該更新之該構件包括用於發送一PCIe寫入請求之構件。
EC407)如EC405之系統,其中用於發送該更新之該構件包括用於該映射之該陰影複本之一讀取-修改-寫入之構件。
EC408)如EC405之系統,其進一步包括:用於在該I/O裝置執行一讀取命令之前自該映射之該陰影複本提取該讀取命令之一邏輯區塊位址(LBA)之一轉譯之構件。
EC409)如EC408之系統,其中該提取係藉由該I/O裝置進行的。
EC410)如EC409之系統,其中用於提取之該構件包括用於發送一PCIe讀取請求之構件。
EC411)如EC408之系統,其中該提取係藉由該計算主機進行的,且該讀取命令係一預映射讀取命令。
EC412)如EC400之系統,其中將該映射非揮發性地儲存於該I/O裝置之一非揮發性記憶體(NVM)中。
EC413)如EC412之系統,其中該計算主機之該記憶體包括一揮發性記憶體。
EC414)一種系統,其包括:用於判定對一I/O裝置之一請求是否係一讀取請求之構件,該I/O裝置具有一映射,該映射具有複數個項目,該映射之該等項目中之至少某些項目中之每一者將該I/O裝置之一各別邏輯區塊位址(LBA)映射至選擇性地包括該I/O裝置之一非揮發性記憶體(NVM)中之一位置之各別經轉譯LBA資訊,且該映射之一陰影複本具有複數個對應項目;用於若該請求係一讀取請求則判定與該讀取請求之一LBA相關聯之該映射之該陰影複本之該等項目中之一特定者是否有效之構件;及 用於若該特定項目係有效的則將包括根據該特定項目之該各別經轉譯LBA資訊之至少一部分之一預映射讀取命令選擇性地發送至該I/O裝置之構件。
EC415)如EC414之系統,其中該映射之該陰影複本之該等項目中之每一者對應於該映射之一各別項目;其中該映射之該等項目中之至少某些項目中之每一者包括藉由該各別LBA所映射至之該各別經轉譯LBA資訊;且其中對應於該映射之該等項目中之該至少某些項目中之一者之該映射之該陰影複本之該等項目中之每一者包括該各別經轉譯LBA資訊之至少一部分。
EC416)如EC414之系統,其中該映射之該複數個項目係一第二階映射。
EC417)如EC416之系統,其中該I/O裝置進一步具有一第一階映射。
EC418)如EC414之系統,其中該各別經轉譯LBA資訊之該至少一部分選擇性地包括該NVM中之該位置或該各別LBA不存在於該NVM中之一指示。
EC419)如EC418之系統,其中用於選擇性地發送之該構件包括用於判定根據該特定項目之該各別經轉譯LBA資訊之該至少一部分是否指示該讀取請求之該LBA不存在於該NVM中之構件。
EC420)如EC419之系統,其中用於選擇性地發送之該構件進一步包括用於僅在根據該特定項目之該各別經轉譯 LBA資訊之該至少一部分指示該讀取請求之該LBA存在於該NVM中之情形下將該預映射讀取命令發送至該I/O裝置之構件。
EC421)如EC420之系統,其中若修整該讀取請求之該LBA,則根據該特定項目之該各別經轉譯LBA資訊之該至少一部分指示該讀取請求之該LBA不存在於該NVM中。
EC422)如EC414之系統,其中該各別經轉譯LBA資訊之該至少一部分選擇性地包括該NVM之一或多個讀取單元中之一第一者之一位址及讀取單元之一長度。
EC423)如EC422之系統,其中該一或多個讀取單元中之每一者之一大小係至少512位元組。
EC424)如EC414之系統,其進一步包括:用於若該特定項目係無效的則將包括該讀取請求之該LBA之一標準讀取命令發送至該I/O裝置之構件。
EC425)如EC414之系統,其進一步包括:用於若該請求係一寫入請求則將與該寫入請求之一LBA相關聯之該映射之該陰影複本之該等項目中之一者標記為無效之構件。
EC426)如EC414之系統,其中該映射之該陰影複本之每一項目包括一有效性指示及來自該映射之一對應項目之至少某些內容之一複本。
EC427)如EC426之系統,其中若該特定項目係有效的,則來自該映射之該對應項目之至少某些內容之該複本與來自該映射之該對應項目之該至少某些內容相同。
EC428)如EC426之系統,其中該映射之該陰影複本之有效項目係該映射之有效項目之一子集。
EC429)如EC428之系統,該子集係一適當子集。
EC430)如EC414之系統,其中該映射之該陰影複本之該等項目中之每一者係無效的或包括根據該映射之一對應項目之資訊。
EC431)之EC414之系統,其中該I/O裝置之該映射包括一雙階映射。
EC432)如C431之系統,其中該I/O裝置之該映射包括一第一階及一第二階;且其中該映射之該陰影複本對應於該I/O裝置之該映射之該第二階。
EC433)如EC414之系統,其中該映射之該陰影複本之該等項目中之每一者包括有效性之一指示。
EC434)如EC433之系統,其中該映射之該陰影複本之該等有效項目中之每一者選擇性地使該等LBA中之一各別一或多者與該NVM中之一各別位置相關聯。
EC435)如EC434之系統,其中該映射之該陰影複本之該等有效項目中之至少一者選擇性地規定與該等有效項目中之該至少一者相關聯之該等各別LBA中之至少一者不存在於該NVM中。
EC436)如EC435之系統,其中與該等有效項目中之該至少一者相關聯之該等各別LBA中之該至少一者被修整。
EC437)如EC433之系統,其中該映射之該陰影複本之 該等有效項目中之每一者選擇性地規定該NVM中之一各別位置。
EC438)如EC433之系統,其進一步包括:用於最初將該映射之該陰影複本之所有該等項目標記為無效之構件。
EC439)如EC414之系統,其進一步包括:用於將該映射之該陰影複本儲存於耦合至該I/O裝置之一計算主機之記憶體中之構件。
EC440)如EC439之系統,其進一步包括:用於自該I/O裝置接收該映射之該陰影複本之一更新之構件。
EC441)如EC439之系統,其中該計算主機之該記憶體包括該計算主機之一主記憶體。
EC442)如EC439之系統,其中該計算主機之該記憶體包括該計算主機之一I/O空間記憶體。
EC443)如EC442之系統,其中該計算主機之該記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC444)如EC442之系統,其進一步包括:用於將該映射之該陰影複本之該更新自該I/O裝置發送至該計算主機之該I/O空間記憶體之構件。
EC445)如EC444之系統,其中用於發送該更新之該構件包括用於發送一PCIe寫入請求之構件。
EC446)如EC444之系統,其中用於發送該更新之該構件包括用於該映射之該陰影複本之一讀取-修改-寫入之構 件。
EC447)如EC444之系統,其進一步包括:用於在該I/O裝置執行一特定命令之前自該映射之該陰影複本提取該特定命令之一LBA之一轉譯之構件。
EC448)如EC447之系統,其中該提取係藉由該I/O裝置進行的。
EC449)如EC448之系統,其中用於提取之該構件包括用於發送一PCIe讀取請求之構件。
EC450)如EC447之系統,其中該提取係藉由該計算主機進行的。
EC451)如EC450之系統,其中該特定命令係一預映射讀取命令。
EC452)如EC439之系統,其中該映射非揮發性地儲存於該NVM中。
EC453)如EC452之系統,其中該計算主機之該記憶體包括一揮發性記憶體。
EC454)一種系統,其包括:用於在一I/O裝置處接收進入一低電力狀態之一指示之構件;用於將該I/O裝置之內部狀態保存於一計算主機之一系統可存取記憶體中之構件;用於在該I/O裝置處接收退出該低電力狀態之一指示之構件;及用於自該系統可存取記憶體還原該I/O裝置之該內部狀態 之構件。
EC455)如EC454之系統,其中該計算主機之該系統可存取記憶體包括該計算主機之一主記憶體。
EC456)如EC454之系統,其中該計算主機之該系統可存取記憶體包括該計算主機之一I/O空間記憶體。
EC457)如EC456之系統,其中該計算主機之該系統可存取記憶體係可由該I/O裝置在一PCIe位址空間中存取。
EC458)一種系統,其包括:用於接收用以存取儲存之一命令之構件,該命令規定一存取類型且具有一或多個參數;用於判定該儲存之一位置之構件;且其中用於判定之該構件包括用於按條件參考一所包含資料結構以確定該位置之構件,當該等參數中之一或多者包括該位置之一規格時省略該參考。
EC459)如EC458之系統,其中該規格包括以下各項中之一或多者:該儲存之一區之一識別,該儲存之一實體位址之一識別,該儲存之資料之一長度,及該儲存之資料之一跨度。
EC460)如EC458之系統,其中該所包含資料結構包括一或多個項目,該一或多個項目各自闡述與一各別一或多個邏輯區塊位址(LBA)相關聯之資料位於該儲存中何處。
EC461)如EC460之系統,其中該等項目中之每一者進 一步選擇性地闡述與該等各別LBA相關聯之一或多個屬性。
EC462)如EC460之系統,其中該等項目中之每一者進一步闡述與該儲存之一或多個區相關聯之一或多個屬性。
EC463)如EC458之系統,其進一步包括用於在該接收之前將闡述一修改之一更新提供至該所包含資料結構之構件。
EC464)如EC463之系統,其中該命令由一計算主機提供,且該更新提供至該計算主機。
EC465)如EC463之系統,其中該更新包括該位置之該規格。
EC466)如EC465之系統,其中該命令係根據一邏輯區塊位址(LBA)且該提供係回應於處理去往該LBA之一寫入命令。
EC467)如EC465之系統,其中用於提供之該構件係回應於回收及/或重新定位實施該儲存中之至少某些儲存之非揮發性記憶體(NVM)之一或多個部分。
EC468)如EC458之系統,其中該接收及該判定係經由一I/O儲存裝置進行的。
EC469)如EC458之系統,其中該命令由一計算主機提供。
EC470)如EC458之系統,其中該等參數包括標準參數及非標準參數,該等標準參數藉由一標準定義,該等非標準參數不藉由該標準定義,且該等非標準參數包括包括該 規格之該等參數。
EC471)如EC458之系統,其中該命令藉由一標準定義且包括該規格之該等參數不藉由該標準定義。
EC472)如EC470或EC471之系統,其中包括該規格之該等參數包括以下各項中之一或多者:所保留命令碼,廠商特定命令,所保留欄位,未使用之欄位,及能力暫存器中之值。
EC473)如EC458之系統,其進一步包括用於根據該存取類型及該位置執行該儲存之一存取之構件。
EC474)如EC473之系統,其中該存取類型係一讀取存取類型且該存取係一讀取存取。
EC475)如EC474之系統,其中該等參數包括該規格。
EC476)如EC475之系統,其中該命令係一預映射讀取命令。
EC477)如EC458之系統,其中該位置係一第一位置,且該系統進一步包括用於根據該存取類型及一第二位置執行該儲存之一存取之構件。
EC478)如EC477之系統,其中該存取類型係一寫入存取類型且該存取係一寫入存取。
EC479)如EC478之系統,其進一步包括用於將闡述一修改之一更新提供至該所包含資料結構之構件,該更新包 括該第二位置之一規格。
EC480)如EC478之系統,其進一步包括用於根據該規格修正該儲存之使用之一計量之構件。
EC481)如EC458之系統,其中該命令係一修整命令且該存取類型係一修整存取類型。
EC482)如EC481之系統,其進一步包括用於將闡述一修改之一更新提供至該所包含資料結構之構件,該更新包括在該命令之該接收之前映射至該位置之一邏輯區塊位址(LBA)之一屬性之一規格。
EC483)如EC482之系統,其中該屬性指示已修整該LBA。
EC484)如EC481之系統,其進一步包括用於根據該規格修正該儲存之使用之一計量之構件。
EC485)一種系統,其包括:用於接收一命令之構件,該命令係複數個命令類型中之一者,該等命令類型包括一第一類型及一第二類型;用於判定該命令係該等命令類型中之哪一者之構件;用於若該命令具有該第一類型則執行第一處理且然後執行第二處理之構件;用於若該命令具有該第二類型則執行該第二處理而不執行該第一處理之構件;其中該第二處理使用在該命令具有該第一類型之情形下藉由該第一處理產生且在該命令具有該第二類型之情形下藉由該命令產生之資訊。
EC486)如EC485之系統,其中該命令欲存取一I/O儲存裝置之儲存。
EC487)如EC486之系統,其中該第一處理包括存取一所包含資料結構以產生該資訊。
EC488)如EC487之系統,其中該所包含資料結構係一映射,該映射闡述邏輯區塊位址(LBA)與實施該儲存中之至少某些儲存之非揮發性記憶體(NVM)之實體位址之間的映射,且該資訊包括該等映射中之一者之至少部分。
EC489)如EC488之系統,其中該第一類型之命令規定該等LBA中之至少一者。
EC490)如EC489之系統,其中該第二類型之命令不規定該等LBA中之任一者。
EC491)如EC487之系統,其進一步包括用於在該接收之前將闡述一修改之一更新提供至該所包含資料結構之構件。
EC492)如EC491之系統,其中該更新包括該資訊之一規格。
EC493)如EC492之系統,其中該規格包括以下各項中之一或多者:該儲存之一區之一識別,該儲存之一實體位址之一識別,該儲存之資料之一長度,及該儲存之資料之一跨度。
EC494)如EC492之系統,其中用於提供之該構件係回 應於接收該等命令類型中之一寫入命令類型。
EC495)如EC492之系統,其中用於提供之該構件係回應於回收及/或重新定位實施該儲存中之至少某些儲存之非揮發性記憶體(NVM)之一部分。
EC496)如EC491之系統,其中該命令由一計算主機提供,且該更新提供至該計算主機。
EC497)如EC486之系統,其中該接收、該判定及該兩個執行動作係經由一I/O儲存裝置進行的。
EC498)如EC486之系統,其中該命令由一計算主機提供。
EC499)如EC485之系統,其中該第一類型之該等命令藉由一標準定義且該第二類型之該等命令不藉由該標準定義。
EC500)如EC485之系統,其中當該命令具有該第二類型時,該資訊經由以下各項中之一或多者提供:所保留命令碼,廠商特定命令,所保留欄位,未使用之欄位,及能力暫存器中之值。
EC501)如EC487之系統,其中該第一類型包括一讀取類型且該第二類型包括一預映射讀取類型。
EC502)如EC501之系統,其中該儲存之該存取係一讀取存取,該資訊包括該儲存之一位置,且該第二處理包括 讀取該位置。
EC503)如EC487之系統,其中該第一類型包括一第一寫入類型,該第二類型包括一第二寫入類型,且該第二寫入類型提供該資訊而該第一寫入類型不提供該資訊。
EC504)如EC503之系統,其中該儲存之該存取係一寫入存取,該資訊包括該儲存之一第一位置,且該第二處理包括寫入該儲存之一第二位置及根據該第一位置修正該儲存之使用之一計量。
EC505)如EC504之系統,其進一步包括用於將闡述一修改之一更新提供至該所包含資料結構之構件,該更新包括該第二位置之一規格。
EC506)如EC487之系統,其中該第一類型包括一第一修整類型,該第二類型包括一第二修整類型,且該第二修整類型提供該資訊而該第一修整類型不提供該資訊。
EC507)如EC506之系統,其中該儲存之該存取係一修整存取,該資訊包括該儲存之一位置,且該第二處理包括根據該位置修正該儲存之使用之一計量。
EC508)如EC507之系統,其進一步包括用於將闡述一修改之一更新提供至該所包含資料結構之構件,該更新包括在該命令之該接收之前根據該所包含資料結構映射至該位置之一邏輯區塊位址(LBA)之一屬性之一規格。
EC509)如EC508之系統,其中該屬性指示已修整該LBA。
EC510)一種系統,其包括: 用於自一計算主機接收一命令之構件,該命令包括零或零以上標準參數及一或多個非標準參數;用於根據該等標準參數執行該命令之構件;且其中該接收及該執行係經由一I/O儲存裝置進行的,該I/O儲存裝置經啟用以使用該等非標準參數來以比在不具有該等非標準參數之益處之情況下高之一效率運作。
EC511)如EC510之系統,其中該I/O儲存裝置將儲存介接至該計算主機。
EC512)如EC510之系統,其中該I/O儲存裝置經啟用以使用該等非標準參數來以比在不具有該等非標準參數之益處之情況下高之一效率執行該命令。
EC513)如EC512之系統,其進一步包括用於管理實施該I/O儲存裝置之儲存之至少一部分之一非揮發性記憶體(NVM)之構件。
EC514)如EC513之系統,其中該命令係一讀取命令且該等非標準參數中之一或多者至少部分地規定該NVM中之一實體位置,且該系統進一步包括用於讀取該實體位置之構件。
EC515)如EC514之系統,其進一步包括用於該I/O儲存裝置之構件以用以執行一所包含I/O裝置映射之映射更新且用以將該等映射更新中之至少某些映射更新提供至該計算主機以使得該計算主機能夠更新一計算主機映射,該計算主機映射及該I/O裝置映射各自具有闡述邏輯區塊位址(LBA)與該NVM之位置之間的映射之各別項目,且該等非 標準參數中之至少一者經由存取該計算主機映射至少部分地判定。
EC516)如EC515之系統,其中用以存取該計算主機映射之一延時少於用以存取該I/O裝置映射之一延時,且該較高效率包括較低延時。
EC517)如EC513之系統,其中該命令係一寫入命令且該等非標準參數中之一或多者至少部分地規定該NVM中之一第一實體位置,且該系統進一步包括寫入該NVM中之一第二實體位置且根據該第一實體位置修正該儲存之使用之一計量。
EC518)如EC517之系統,其進一步包括用於該I/O儲存裝置之構件以用以執行一所包含I/O裝置映射之映射更新且用以將該等映射更新中之至少某些映射更新提供至該計算主機以使得該計算主機能夠更新一計算主機映射,該計算主機映射及該I/O裝置映射各自具有闡述邏輯區塊位址(LBA)與該NVM之位置之間的映射之各別項目,且該等非標準參數中之至少一者經由存取該計算主機映射至少部分地判定。
EC519)如EC518之系統,其中用以存取該計算主機映射之一延時少於用以存取該I/O裝置映射之一延時,且該較高效率包括較低延時。
EC520)如EC510之系統,其中該命令係一第一命令,且該I/O儲存裝置經啟用以根據該等非標準參數且以比在不具有該等非標準參數之益處之情況下高之一效率執行在 該第一命令之後接收之一第二命令。
EC521)如EC520之系統,其進一步包括用於管理實施該I/O儲存裝置之儲存之至少一部分之一非揮發性記憶體(NVM)之構件。
EC522)如EC521之系統,其進一步包括用於該I/O儲存裝置之構件以用以管理一所包含映射,該所包含映射具有闡述邏輯區塊位址(LBA)與該NVM之位置之間的映射之若干項目。
EC523)如EC522之系統,其中該等標準參數中之一或多者之至少一部分包括一特定LBA,且該系統進一步包括該I/O儲存裝置將依據該等非標準參數判定之至少某些資訊儲存於該等項目中之至少一選定者中,該選定項目至少部分地藉由該特定LBA而選擇。
EC524)如EC523之系統,其中該第二命令係根據該特定LBA。
EC525)如EC523之系統,其中該資訊包括複數個資料頻帶中之一特定者之一識別,且該系統進一步包括用於該I/O儲存裝置之構件以用以回收將該特定LBA映射至其的該NVM之若干部分以保持於該特定資料頻帶中。
EC526)如EC521之系統,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料類型中之一者,該等資料類型包括以下各項中之任何兩者或兩者以上:一可壓縮資料類型,一不可壓縮資料類型,及 一使用模型資料類型。
EC527)如EC526之系統,其中該使用模型資料類型包括一資料庫日誌資料類型,且該系統進一步包括用於該I/O儲存裝置之構件以用以管理該NVM以將與該資料庫日誌資料類型相關聯之資料儲存於複數個資料頻帶中之一資料庫日誌資料頻帶中,及用於該I/O儲存裝置之構件以用以管理該資料庫日誌資料頻帶以使得在該資料庫日誌頻帶中之資料之一量超過一臨限值時選擇性地刪除該資料庫日誌頻帶之較舊資料。
EC528)如EC527之系統,其進一步包括用於在回收該較舊資料時刪除該較舊資料之構件。
EC529)如EC521之系統,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料存取類型中之一者,該等資料存取類型包括以下各項中之任何兩者或兩者以上:一讀取/寫入資料存取類型,一主要讀取資料存取類型,一主要寫入資料存取類型,及一暫態資料存取類型。
EC530)如EC529之系統,其中該第二命令係一寫入命令,且該系統進一步包括用於該I/O儲存裝置之構件以用以回應於該寫入命令而寫入該NVM之一特定部分,該特定部分至少部分地藉由該資料存取類型而判定。
EC531)如EC530之系統,其中該資料存取類型係一讀 取/寫入資料存取類型,且該特定部分尚未經受相對諸多程式化/抹除循環且尚未經受相對較少程式化/抹除循環。
EC532)如EC530之系統,其中該資料存取類型係一主要讀取資料存取類型,且該特定部分已經受相對諸多程式化/抹除循環。
EC533)如EC530之系統,其中該資料存取類型係一主要寫入資料存取類型,且該特定部分已度過相對較少程式化/抹除循環。
EC534)如EC531、EC532或EC533之系統,其中該較高效率包括較高可靠性。
EC535)如EC531、EC532或EC533之系統,其中該較高效率包括較長壽命。
EC536)如EC529之系統,其中該等標準參數中之一或多者之至少一部分包括一特定LBA且該資料存取類型係該暫態資料存取類型,且該系統進一步包括用於該I/O儲存裝置之構件以用以回應於一特定事件而刪除儲存於對應於該特定LBA之該NVM中之位置處之資料。
EC537)如EC536之系統,其中用於刪除該資料之該構件包括用於根據該特定LBA在該I/O儲存裝置之一映射之一項目處更新該映射以規定對應於該特定LBA之資料不存在於該NVM中之構件。
EC538)如EC536之系統,其中用於刪除該資料之該構件包括用於修整該資料之構件。
EC539)如EC536之系統,其中該特定事件係以下各項 中之任何一或多者:該I/O儲存裝置之一NVM管理運作,該I/O儲存裝置之一NVM回收運作,該I/O儲存裝置之一供電循環,該I/O儲存裝置之一重設,一虛擬I/O儲存裝置之一虛擬機供電循環,一虛擬I/O儲存裝置之一虛擬機重設,來自該計算主機之一明確請求,及來自一記憶體快取應用程式之一請求。
EC540)如EC521之系統,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料定序中之一者,該等資料定序包括一順序定序及一不可部分完成定序中之任何兩者或兩者以上。
EC541)如EC521之系統,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料關係中之一者,該等資料關係包括多個資料物項之間的一讀取及/或寫入關聯性及一預提取資料關係中之任何兩者或兩者以上。
EC542)如EC521之系統,其中該等非標準參數中之至少一或多者至少部分地規定複數個資料目的地中之一者,該等資料目的地包括以下各項中之任何兩者或兩者以上:該NVM之一特定部分,一階層式儲存層級,一儲存類型,及一特定資料頻帶。
EC543)如EC542之系統,其中該儲存類型係以下各項中之任何一或多者:單位階記憶體胞(SLC),多位階記憶體胞(MLC),磁性隨機存取記憶體(MRAM),揮發性,及非揮發性。
EC544)如EC542之系統,其中該等資料目的地中之該一者之該規格達成以下各項中之一或多者之改良:寫入速度,回收速度,回收頻率,及寫入放大。
EC545)如C521之系統,其中該等非標準參數中之至少一或多者至少部分地規定複數個命令處理特性中之一者,該等命令處理特性包括以下各項中之任何兩者或兩者以上:一命令優先級,命令排序,用於特定類型之命令之一障壁,特定類型之命令之間的一邊界,命令之一彙總,命令之一合併,及命令之不可部分完成運作。
EC546)如EC512或EC520之系統,其中該較高效率包括較高效能。
EC547)如EC546之系統,其中該較高效能包括以下各項中之一或多者:較高頻寬,較低延時,及較低電力。
EC548)如EC512或EC520之系統,其中該較高效率包括較高可靠性。
EC549)如EC548之系統,其中該較高可靠性包括較低錯誤率及較長壽命中之一或多者。
EC550)一種系統,其包括:用於自一計算主機接收一命令之構件,該命令請求一非標準統計值之傳回;用於將該非標準統計值傳回至該計算主機之構件,且其中該接收及該傳回係經由一I/O儲存裝置進行的,該I/O儲存裝置經啟用以計算該非標準統計。
EC551)如EC550之系統,其進一步包括用於減小欲寫入至實施該I/O儲存裝置之儲存之至少一部分之一非揮發性記憶體(NVM)之資料之一大小之構件;且其中該計算係至少部分地基於該減小。
EC552)如EC551之系統,其中用於減小之該構件包括用於壓縮之構件。
EC553)如EC551之系統,其中用於減小之該構件包括 用於資料去重複之構件。
EC554)如EC551之系統,其中該非標準統計係根據該NVM之使用。
EC555)如EC554之系統,其中該NVM之該使用根據該減小之一品質而變化。
EC556)如EC554之系統,其中該NVM之該使用根據自該計算主機接收之修整命令之一數目及/或一大小而變化。
EC557)如EC554之系統,其中該NVM之該使用根據自該計算主機接收之暫態資料之一量而變化。
EC558)如EC557之系統,其中該NVM之該使用根據已藉由該I/O儲存裝置修整之該暫態資料之一量而變化。
EC559)如EC554之系統,其中該非標準統計係根據該NVM之一百分比使用。
EC560)如EC554之系統,其中該非標準統計係根據該I/O儲存裝置之一寫入放大。
EC561)如EC551之系統,其中該非標準統計係該NVM之一或多個頻帶之一大小。
EC562)如EC551之系統,其中該非標準統計係該NVM之一或多個頻帶之一使用。
EC563)如EC562之系統,其中該NVM之該一或多個頻帶之該使用根據該減小之一品質而變化。
EC564)如EC468、EC486、EC511或EC550之系統,其中該I/O儲存裝置包括一固態磁碟(SSD)控制器,即,用於 接收該命令之該構件。
EC565)如EC564之系統,其中該SSD控制器實施於一單個積體電路(IC)中。
EC566)如EC565之系統,其中該儲存之至少一部分經由非揮發性記憶體(NVM)實施。
EC567)如EC566之系統,其中該NVM包括一或多個快閃記憶體。
EC568)如EC566之系統,其中該NVM之至少一部分包括以下各項中之一或多者:NAND快閃技術儲存記憶體胞,及NOR快閃技術儲存記憶體胞。
EC569)如EC566之系統,其中該NVM之至少一部分包括以下各項中之一或多者:單位階記憶體胞(SLC)快閃技術儲存記憶體胞,及多位階記憶體胞(MLC)快閃技術儲存記憶體胞。
EC570)如EC566之系統,其中該SSD控制器包括經啟用以與該NVM傳遞資料之一NVM介面,該資料中之至少某些資料與該等命令中之至少某些命令相關聯。
EC571)如EC570之系統,其中該NVM介面係與以下各項中之一或多者相容:一開放NAND快閃介面(ONFI),一雙態觸變模式介面,一雙倍資料速率(DDR)同步介面,一同步介面,及 一不同步介面。
EC572)如EC566之系統,其中該SSD控制器及該NVM包括於一SSD中。
EC573)如EC564之系統,其中該SSD控制器包括一儲存介面,該儲存介面與一儲存介面標準相容且經啟用以耦合至經由該儲存介面提供該命令之一計算主機。
EC574)如EC573之系統,其進一步包括用於運作該計算主機以提供該命令之構件。
EC575)如上述EC中任一項,其具有或提及至少一個儲存介面標準,其中該儲存介面標準包括以下各項中之一或多者:一通用串列匯流排(USB)介面標準,一緊致型快閃(CF)介面標準,一多媒體卡(MMC)介面標準,一安全數位(SD)介面標準,一記憶卡介面標準,一xD圖片卡介面標準,一整合式驅動電子器件(IDE)介面標準,一串列進階技術附接(SATA)介面標準,一外部SATA(eSATA)介面標準,一小型電腦系統介面(SCSI)介面標準,一串列附接小型電腦系統介面(SAS)介面標準,一光纖通道介面標準,一乙太網路介面標準,及 一高速周邊組件互連(PCIe)介面標準。
EC576)如上述EC中任一項,其具有或提及至少一個計算主機,其中該計算主機包括以下各項中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一小筆電電腦,一個人數位助理(PDA),一媒體播放器,一媒體錄製器,一數位相機,一蜂巢式手機,一無線手持電話,及一電子遊戲機。
系統
圖1A圖解說明包含一SSD控制器之SSD 101之一實施例之選定細節,該SSD控制器與經啟用而與一主機(諸如,一計算主機)相互協作之一I/O裝置(諸如,一I/O儲存裝置)中之運作相容。SSD控制器係用於管理諸如經由NVM元件(例如,快閃記憶體)實施之非揮發性儲存。SSD控制器100 經由一或多個外部介面110以通信方式耦合至一主機(未圖解說明)。根據各種實施例,外部介面110係以下各項中之一或多者:一SATA介面;一SAS介面;一PCIe介面;一光纖通道介面;一乙太網路介面(諸如,10十億位元乙太網路)、前述介面中之任一者之一非標準版本;一定製介面;或用以將儲存及/或通信及/或計算裝置互連之任何其他類型之介面。舉例而言,在某些實施例中,SSD控制器100包含一SATA介面及一PCIe介面。
SSD控制器100經由一或多個裝置介面190進一步以通信方式耦合至包含一或多個儲存裝置(諸如,快閃裝置192之一或多個例項)之NVM 199。根據各種實施例,裝置介面190係以下各項中之一或多者:一不同步介面;一同步介面;一DDR同步介面;一ONFI相容介面(諸如,一ONFI 2.2或ONFI 3.0相容介面);一雙態觸變模式相容快閃介面;前述介面中之任一者之一非標準版本;一定製介面;或用以連接至儲存裝置之任何其他類型之介面。
在某些實施例中,快閃裝置192中之每一者具有一或多個個別快閃晶粒194。根據快閃裝置192中之一特定者之類型,特定快閃裝置192中之複數個快閃晶粒194係可視情況及/或選擇性地並行存取。快閃裝置192僅表示經啟用而以通信方式耦合至SSD控制器100之一種類型之儲存裝置。在各種實施例中,任何類型之儲存裝置皆係可使用的,諸如一SLC NAND快閃記憶體、MLC NAND快閃記憶體、NOR快閃記憶體、唯讀記憶體、靜態隨機存取記憶體、動 態隨機存取記憶體、鐵磁記憶體、相變記憶體、賽道(racetrack)記憶體或任何其他類型之記憶體裝置或儲存媒體。
根據各種實施例,裝置介面190組織為:其中每匯流排具有快閃裝置192之一或多個例項之一或多個匯流排;其中每匯流排具有快閃裝置192之一或多例項之一或多個匯流排群組,通常並行存取一群組中之匯流排;或至裝置介面190上之快閃裝置192之一或多例項之任何其他組織。
在圖1A中繼續,SSD控制器100具有一或多個模組,諸如主機介面111、資料處理121、緩衝器131、映射141、回收器151、ECC 161、裝置介面邏輯191及CPU 171。圖1A中所圖解說明之特定模組及互連僅表示一項實施例且聯想到該等模組中之某些或全部模組之諸多配置及互連以及未圖解說明之額外模組。在一第一實例中,在某些實施例中,存在兩個或兩個以上主機介面111以提供雙埠法。在一第二實例中,在某些實施例中,資料處理121及/或ECC 161與緩衝器131組合在一起。在一第三實例中,在某些實施例中,主機介面111直接耦合至緩衝器131,且資料處理121視情況及/或選擇性地運作儲存於緩衝器131中之資料。在一第四實例中,在某些實施例中,裝置介面邏輯191直接耦合至緩衝器131,且ECC 161視情況及/或選擇性地運作儲存於緩衝器131中之資料。
主機介面111經由外部介面110發送及接收命令及/或資料且在某些實施例中經由標籤追蹤113追蹤個別命令之進 展。舉例而言,該等命令包含規定欲讀取之資料之一位址(諸如,一LBA)及一量(諸如,LBA配量(諸如,磁區)之一數目)之一讀取命令;作為回應,SSD提供讀取狀態及/或讀取資料。對於另一實例,該等命令包含規定NVM 199中之一位置以及讀取單元配量中之資料之一長度及/或一跨度之一預映射讀取命令。對於又一實例,該等命令包含規定欲寫入之資料之一位址(諸如,一LBA)及一量(諸如,LBA配量(例如,磁區)之一數目)之一寫入命令;作為回應,SSD提供寫入狀態及/或請求寫入資料且隨後視情況提供寫入狀態。對於又一實例,該等命令包含規定不再需要分配之一或多個位址(諸如,一或多個LBA)之一去分配命令(例如,一修整命令);作為回應,SSD相應地修改映射且視情況提供去分配狀態。在某些上下文中,一ATA相容TRIM命令係一例示性去分配命令。對於又一實例,該等命令包含一超級電容器測試命令或一資料強化成功查詢;作為回應,SSD提供適當狀態。在某些實施例中,主機介面111係與一SATA協定相容且使用NCQ命令而啟用以具有最多32個擱置中命令,其每一者具有表示為自0至31之一數目之一唯一標籤。在某些實施例中,標籤追蹤113經啟用以使經由外部介面110接收之一命令之一外部標籤與用以在由SSD控制器100處理期間追蹤該命令之一內部標籤相關聯。
根據各種實施例,揭示以下各項中之一或多者:資料處理121視情況及/或選擇性地處理在緩衝器131與外部介面 110之間發送之某些或全部資料;及資料處理121視情況及/或選擇性地處理儲存於緩衝器131中之資料。在某些實施例中,資料處理121使用一或多個引擎123以執行以下各項中之一或多者:格式化;重新格式化;轉碼;及任何其他資料處理及/或操縱任務。
緩衝器131儲存自裝置介面190發送至外部介面110/自外部介面110發送至裝置介面190之資料。在某些實施例中,緩衝器131另外儲存由SSD控制器100使用之系統資料(諸如,某些或全部映射表)以管理快閃裝置192之一或多例項。在各種實施例中,緩衝器131具有以下各項中之一或多者:記憶體137,其用於資料之暫時儲存;DMA 133,其用以控制至及/或自緩衝器131之資料之移動;及ECC-X 135,其用以提供較高階錯誤校正及/或冗餘功能;及其他資料移動及/或操縱功能。一較高階冗餘功能之一實例係一類RAID能力,其中冗餘係在一快閃裝置級(例如,快閃裝置192之多個快閃裝置)及/或一快閃晶粒級(例如,快閃晶粒194)上而非在一磁碟級上。
根據各種實施例,達成以下各項中之一或多者:ECC 161視情況及/或選擇性地處理在緩衝器131與裝置介面190之間發送之某些或全部資料;及ECC 161視情況及/或選擇性地處理儲存於緩衝器131中之資料。在某些實施例中,ECC 161用以提供較低階錯誤校正及/或諸如根據一或多個ECC技術之冗餘功能。在某些實施例中,ECC 161實施以下各項中之一或多者:一CRC碼;一漢明(Hamming)碼; 一RS碼;一BCH碼;一LDPC碼;一維特比碼;一格子碼;一硬式決策碼;一軟式決策碼;一基於抹除之碼;任何錯誤偵測及/或校正碼;及前述項之任何組合。在某些實施例中,ECC 161包含一或多個解碼器(諸如,LDPC解碼器)。
裝置介面邏輯191經由裝置介面190控制快閃裝置192之例項。裝置介面邏輯191經啟用以根據快閃裝置192之一協定將資料發送至快閃裝置192之例項/自快閃裝置192之例項發送資料。裝置介面邏輯191包含排程193以選擇性地定序經由裝置介面190對快閃裝置192之例項之控制。舉例而言,在某些實施例中,排程193經啟用以將對快閃裝置192之例項之運作排成佇列,且在快閃裝置192(或快閃晶粒194)之例項中之各別例項係可用時,將該等運作選擇性地發送至快閃裝置192(或快閃晶粒194)之例項中之各別例項。
映射141在用於外部介面110上之資料定址與用於裝置介面190上之資料定址之間轉換,使用表143以將外部資料位址映射至NVM 199中之位置。舉例而言,在某些實施例中,映射141經由由表143提供之映射將用於外部介面110上之LBA轉換成以一或多個快閃晶粒194為目標之區塊及/或頁位址。對於自磁碟機制造或去分配以來未曾被寫入之LBA,該映射指向一預設值以傳回是否讀取該等LBA。舉例而言,當處理一去分配命令時,修改該映射以使得對應於經去分配LBA之項目指向該等預設值中之一者。在各種 實施例中,存在各種預設值,其各自具有一對應指標。該複數個預設值使得能夠讀取某些經去分配LBA(諸如,在一第一範圍中)作為一個預設值,同時讀取其他經去分配LBA(諸如,在一第二範圍中)作為另一預設值。在各種實施例中,該等預設值係由快閃記憶體、硬體、韌體、命令及/或基元引數及/或參數、可程式化暫存器或其各種組合定義。
在某些實施例中,映射141使用表143以執行及/或查找用於外部介面110上之位址與用於裝置介面190上之資料定址之間的轉譯。根據各種實施例,表143係以下各項中之一或多者:一單階映射;一雙階映射;一多階映射;一映射快取記憶體;一經壓縮映射;自一個位址空間至另一個位址空間的任何類型之映射;及上述項之任何組合。根據各種實施例,表143包含以下各項中之一或多者:靜態隨機存取記憶體;動態隨機存取記憶體;NVM(諸如,快閃記憶體);快取記憶體;晶片上記憶體;晶片外記憶體;及上述項之任何組合。
在某些實施例中,回收器151執行廢棄項目收集。舉例而言,在某些實施例中,快閃裝置192之例項含有必須在區塊係可重寫之前抹除之區塊。回收器151經啟用以(諸如)藉由掃描由映射141維持之一映射來判定快閃裝置192之例項之哪些部分係主動地在使用中(例如,經分配而非經去分配),且藉由抹除快閃裝置192之例項之未使用(例如,經去分配)部分而使得其可用於寫入。在進一步之實施例 中,回收器151經啟用以移動儲存於快閃裝置192之例項內之資料以使得快閃裝置192之例項之較大鄰接部分可用於寫入。
在某些實施例中,快閃裝置192之例項選擇性地及/或動態地經組態、管理及/或使用以具有用於儲存不同類型及/或性質之資料之一或多個頻帶。該等頻帶之一數目、配置、大小及類型係可動態地改變。舉例而言,將來自一計算主機之資料寫入至一熱(作用)頻帶中,而將來自回收器151之資料寫入至一冷(較少作用)頻帶中。在某些使用情景中,若計算主機寫入一長順序串流,則熱頻帶之一大小增長,而若計算主機進行隨機寫入或較少寫入,則冷頻帶之一大小增長。
CPU 171控制SSD控制器100之各種部分。CPU 171包含CPU核心172。根據各種實施例,CPU核心172係一或多個單核心或多核心處理器。在某些實施例中,CPU核心172中之個別處理器係多執行緒的。CPU核心172包含指令及/或資料快取記憶體及/或記憶體。舉例而言,指令記憶體含有用以使得CPU核心172能夠執行程式(例如,有時稱為韌體之軟體)以控制SSD控制器100之指令。在某些實施例中,由CPU核心172執行之韌體中之某些或全部儲存於快閃裝置192之例項上(如圖解說明(例如)為圖1B中之NVM 199之韌體106)。
在各種實施例中,CPU 171進一步包含:命令管理173,其用以在經由外部介面110接收之命令在進行中時追蹤及 控制該等命令;緩衝器管理175,其用以控制緩衝器131之分配及使用;轉譯管理177,其用以控制映射141;一致性管理179,其用以控制資料定址之一致性且避免諸如外部資料存取與回收資料存取之間的衝突;裝置管理181,其用以控制裝置介面邏輯191;身份管理182,其用以控制識別資訊之修改及通信;及視情況其他管理單元。根據各種實施例,由CPU 171執行之管理功能中無一者、任一者或全部係藉由硬體、藉由軟體(諸如,在CPU核心172上或在經由外部介面110連接之一主機上執行之韌體)或其任何組合來控制及/或管理。
在某些實施例中,CPU 171經啟用以使得執行其他管理任務,諸如以下各項中之一或多者:搜集及/或報告效能統計;實施SMART;控制電力定序;控制及/或監視及/或調整電力消耗;回應於電力故障;控制及/或監視及/或調整時脈速率;及其他管理任務。
各種實施例包含一計算主機快閃記憶體控制器,其類似於SSD控制器100且與藉助各種計算主機之運作相容(諸如,經由主機介面111及/或外部介面110之自適應)。各種計算主機包含以下各項中之一者或任何組合:一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一PC、一膝上型電腦、一筆記型電腦、一小筆電電腦、一PDA、一媒體播放器、一媒體錄製器、一數位相機、一蜂巢式手機、一無線手持電話及一電子遊戲機。
在各種實施例中,一SSD控制器(或一計算主機快閃記憶 體控制器)之全部或任何部分實施於一單個IC、一多晶粒IC之一單個晶粒、一多晶粒IC之複數個晶粒或複數個IC上。舉例而言,緩衝器131實施於與SSD控制器100之其他元件相同之一晶粒上。對於另一實例,緩衝器131實施於不同於SSD控制器100之其他元件之一晶粒上。
圖1B圖解說明包含圖1A之SSD之一或多個例項之系統之各種實施例之選定細節。SSD 101包含經由裝置介面190耦合至NVM 199之SSD控制器100。該圖圖解說明各類實施例:直接耦合至一主機之一單個SSD;各自經由各別外部介面分別直接耦合至一主機之複數個SSD;及經由各種互連元件間接耦合至一主機之一或多個SSD。
作為直接耦合至一主機之一單個SSD之一實例性實施例,SSD 101之一個例項經由外部介面110直接耦合至主機102(例如,省略、繞過或穿過切換器/光纖/中間控制器103)。作為各自經由各別外部介面直接耦合至一主機之複數個SSD之一實例性實施例,SSD 101之複數個例項中之每一者經由外部介面110之一各別例項分別直接耦合至主機102(例如,省略、繞過或穿過切換器/光纖/中間控制器103)。作為經由各別互連元件間接耦合至一主機之一或多個SSD之一實例性實施例,SSD 101之一或多個例項中之每一者分別間接耦合至主機102。每一間接耦合係經由耦合至切換器/光纖/中間控制器103之外部介面110及耦合至主機102之中間介面104之一各別例項。
包含切換器/光纖/中間控制器103之實施例中之某些實施 例亦包含經由記憶體介面180耦合且可由SSD存取之卡記憶體112C。在各種實施例中,SSD、切換器/光纖/中間控制器及/或卡記憶體中之一或多者包含於一實體上可識別模組、卡或可插入元件(例如,I/O卡116)上。在某些實施例中,SSD 101(或其變化形式)對應於耦合至運作為主機102之一起始器之一SAS磁碟機或一SATA磁碟機。
主機102經啟用以執行主機軟體115之各種元件,諸如OS 105、驅動程式107、應用程式109及多裝置管理軟體114之各種組合。虛線箭頭107D表示主機軟體←→I/O裝置通信,例如,經由驅動程式107及應用程式109(經由驅動程式107或直接作為一VF)自SSD 101之例項中之一或多者發送至OS 105之任何一或多者及自OS 105之任何一或多者接收至SSD 101之例項中之一或多者之資料。
OS 105包含及/或經啟用以藉助用於與SSD介接之驅動程式(概念上由驅動程式107圖解說明)運作。Windows之各種版本(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、Linux之各種版本(例如,Red Hat、Debian及Ubuntu)及MacOS之各種版本(例如,8、9及X)係OS 105之實例。在各種實施例中,驅動程式係可藉助一標準介面及/或協定(諸如,SATA、AHCI或NVM Express)運作之標準及/或泛用驅動程式(有時稱為「壓製於光碟之拆封授權軟體(shrink-wrapped)」或「經預安裝」),或視情況係定製及/或廠商特定的以達成特定於SSD 101之命令之使用。某些磁碟機及/或驅動程式具有穿通模式以啟用應用程式 級程式(諸如,經由經最佳化NAND存取(有時稱為ONA)或直接NAND存取(有時稱為DNA)技術之應用程式109)以將命令直接傳遞至SSD 101,使得一經定製應用程式能夠甚至藉助一泛用驅動程式使用特定於SSD 101之命令。ONA技術包含以下各項中之一或多者:非標準修改符(提示)之使用;廠商特定命令之使用;非標準統計(諸如,根據可壓縮性之實際NVM使用)之傳遞;及其他技術。DNA技術包含以下各項中之一或多者:提供對NVM之未經映射讀取、寫入及/或抹除存取之非標準或廠商特定命令之使用;諸如藉由繞過I/O裝置原本將進行之資料之格式化來提供對NVM之更直接存取之非標準或廠商特定命令之使用;及其他技術。驅動程式之實例係不具有ONA或DNA支援之一驅動程式、一ONA啟用之驅動程式、一DNA啟用之驅動程式及一ONA/DNA啟用之驅動程式。驅動程式之進一步之實例係一廠商提供、廠商開發及/或廠商增強之驅動程式及一用戶端提供、用戶端開發及/或用戶端增強之驅動程式。
應用程式級程式之實例係不具有ONA或DNA支援之一應用程式、一ONA啟用之應用程式、一DNA啟用之應用程式及一ONA/DNA啟用之應用程式。虛線箭頭109D表示應用程式←→I/O裝置通信(例如,經由一驅動程式繞過或經由用於一應用程式之一VF繞過),例如,一ONA啟用之應用程式及與一SSD通信(諸如,不具有使用OS作為一中間機構之應用程式)之一ONA啟用之驅動程式。虛線箭頭109V 表示應用程式←→I/O裝置通信(例如,經由用於一應用程式之一VF繞過),例如,一DNA啟用之應用程式及與一SSD通信(諸如,不具有使用OS或驅動程式作為中間機構之應用程式)之一DNA啟用之驅動程式。
在某些實施例中,NVM 199之一或多個部分用於韌體儲存(例如,韌體106)。該韌體儲存包含一或多個韌體影像(或其部分)。舉例而言,一韌體影像具有(例如)藉由SSD控制器100之CPU核心172執行之韌體之一或多個影像。對於另一實例,一韌體影像具有(例如)在韌體執行期間由CPU核心參考之常數、參數值及NVM裝置資訊之一或多個影像。韌體之影像對應於(例如)一當前韌體影像及零或零以上先前(相對於韌體更新)韌體影像。在各種實施例中,韌體提供泛用、標準、ONA及/或DNA運作模式。在某些實施例中,經由視情況由一驅動程式傳遞及/或提供之密鑰或各種軟體技術來啟用韌體運作模式中之一或多者(例如,一或多個API係「未經鎖定」)。
在某些實施例中,主機102包含陰影映射108作為一不同硬體資源,而在其他實施例中,一陰影映射係部分地或完全地經由主機記憶體112H實施。陰影映射108、主機記憶體112H及卡記憶體112C之實例係(諸如)經由DRAM、SRAM及/或快閃裝置實施之一或多個揮發性及/或NVM元件。主機記憶體之進一步之實例係系統記憶體、主機主記憶體、主機快取記憶體、主機可存取記憶體及I/O裝置可存取記憶體。
如本文中別處更詳細地闡述,在各種實施例中,主機102及/或SSD 101之例項中之一或多者經啟用以存取陰影映射108以保存及擷取可用於將LBA轉換成以I/O裝置NVM之一或多個部分(諸如,NVM 199之例項中之一或多者之元件)為目標之區塊及/或頁位址之映射資訊之全部或任何部分。概念上,該陰影映射遵循(例如,遮蔽)映射141之例項中之一或多者中之資訊。該陰影映射中之資訊經由主機102中之一或多者(例如,連同將一命令發佈至一SSD)及SSD 101之例項中之一或多者(例如,連同處理來自一主機之一命令)更新。在某些實施例及/或使用情景(諸如,具有I/O卡116且使用圖1B之(選用)卡記憶體112C作為用於一陰影映射之儲存之某些實施例)中,一或多個I/O裝置(例如,SSD)存取該陰影映射而一主機不存取該陰影映射。如本文中別處亦更詳細地闡述,在各種實施例中,SSD 101之例項中之一或多者經啟用以存取卡記憶體112C及/或主機記憶體112H以(諸如)在進入及退出一睡眠狀態時保存及還原各別SSD例項內部之狀態資訊。
在缺少切換器/光纖/中間控制器之某些實施例中,SSD經由外部介面110直接耦合至主機。在各種實施例中,SSD控制器100經由其他控制器(諸如,一RAID控制器)之一或多個中間階層耦合至主機。在某些實施例中,SSD 101(或其變化形式)對應於一SAS磁碟機或一SATA磁碟機,且切換器/光纖/中間控制器103對應於一擴充器,該擴充器又耦合至一起始器,或另一選擇係,切換器/光纖/中間控制器 103對應於一橋接器,該橋接器經由一擴充器間接耦合至一起始器。在某些實施例中,切換器/光纖/中間控制器103包含一或多個PCIe切換器及/或光纖。
在諸如其中主機102作為一計算主機(例如,一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一PC、一膝上型電腦、一筆記型電腦及/或一小筆電電腦)之實施例中之某些實施例等各種實施例中,計算主機視情況經啟用以與一或多個本端及/或遠端伺服器(例如,選用伺服器118)通信(例如,經由選用I/O及儲存裝置/資源117以及選用LAN/WAN 119)。舉例而言,該通信達成SSD 101元件中之任何一或多者之本端及/或遠端存取、管理及/或使用。在某些實施例中,該通信係完全地或部分地經由乙太網路。在某些實施例中,該通信係完全地或部分地經由光纖通道。在各種實施例中,LAN/WAN 119表示一或多個區域及/或廣域網路,諸如一伺服器群中之一網路、耦合伺服器群之一網路、一都會區網路及網際網路中之任何一或多者。
在各種實施例中,一SSD控制器及/或一計算主機快閃記憶體控制器結合一或多個NVM一起實施為一非揮發性儲存組件,諸如一USB儲存組件、一CF儲存組件、一MMC儲存組件、一SD儲存組件、一記憶卡儲存組件及一xD圖片卡儲存組件。
在各種實施例中,一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分或其功能實施於一主機(例 如,圖1B之主機102)中,該控制器欲與該主機耦合。在各種實施例中,一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分或其功能係經由硬體(例如,邏輯電路)、軟體及/或韌體(例如,驅動程式軟體或SSD控制韌體)或其任何組合而實施。舉例而言,一ECC單元(諸如,類似於圖1A之ECC 161及/或ECC-X 135)之功能性或與該ECC單元相關聯之功能性係部分地經由軟體實施於一主機上且部分地經由韌體與硬體之一組合實施於一SSD控制器中。對於另一實例,一回收器單元(諸如,類似於圖1A之回收器151)之功能性或與該回收器單元相關聯之功能性係部分地經由軟體實施於一主機上且部分地經由硬體實施於一計算主機快閃記憶體控制器中。
映射運作
圖2圖解說明映射一LBA之一LPN部分之一實施例之選定細節。在某些實施例中,一讀取單元係可獨立讀取之一NVM之一最精細粒度,諸如NVM之一頁之一部分。在進一步之實施例中,該讀取單元對應於一(較低階)錯誤校正碼之檢查位元(有時稱為冗餘)連同由該等檢查位元保護之所有資料。舉例而言,圖1A之ECC 161經由檢查位元(諸如,經由一LDPC碼)實施錯誤校正,且一讀取單元對應於除由LDPC編碼位元保護之資料位元以外之實施LDPC碼之編碼位元。
在某些實施例中,映射141(諸如)經由表143(如圖1A中所圖解說明)將LBA 211之LPN 213部分映射至用於LPN之 映射資訊221。用於一LPN之映射資訊(諸如,用於LPN之映射資訊221)有時稱為一映射項目。映射141被認為使一LPN與一對應映射項目相關聯。在各種實施例中,映射係經由一或多個相關聯查找、經由一或多個非相關聯查找及/或經由一或多個其他技術。
在某些實施例中,SSD控制器100維持用於每一LPN之一個映射項目潛在地及/或主動地在使用中。
在某些實施例中,用於LPN之映射資訊221包含各別讀取單元位址223及讀取單元之長度225。在某些實施例中,一長度及/或一跨度係(諸如)藉由將長度儲存為自跨度之一位移(例如,在讀取單元之長度225之全部或任何部分中)而以經編碼方式儲存。在進一步之實施例中,一第一LPN與一第一映射項目相關聯,一第二LPN(不同於第一LPN,但係指與藉由該第一LPN所指代之一邏輯頁相同之一大小之一邏輯頁)與一第二映射項目相關聯,且該第一映射項目之讀取單元之各別長度不同於該第二映射項目之讀取單元之各別長度。
在各種實施例中,在一相同時間點處,一第一LPN與一第一映射項目相關聯,一第二LPN(不同於第一LPN)與一第二映射項目相關聯,且該第一映射項目之各別讀取單元位址與該第二映射項目之各別讀取單元位址相同。在進一步之實施例中,與第一LPN相關聯之資料及與第二LPN相關聯之資料兩者儲存於NVM 199中之一相同裝置之一相同實體頁中。
根據各種實施例,讀取單元位址223與以下各項中之一或多者相關聯:NVM中之一開始位址;NVM中之一結束位址;前述項中之任一者之一位移;及用於識別與LPN 213相關聯之NVM之一部分之任何其他技術。
圖3圖解說明在一讀取單元位址處存取一NVM以產生組織為各種讀取單元(共同地具有按讀取單元之配量所量測之一長度)之讀取資料之一實施例之選定細節。根據各種實施例,第一讀取單元313係以下各項中之一或多者:具有NVM之一位址空間中之一最低位址之讀取資料311中之讀取單元中之一讀取單元;該等讀取單元中之一固定讀取單元;該等讀取單元中之一任意讀取單元;該等讀取單元中之一可變讀取單元;及藉由任何其他技術選擇之該等讀取單元中之一讀取單元。在各種實施例中,SSD控制器100經啟用以存取NVM 199且藉由讀取不多於由讀取單元之長度225規定之若干讀取單元來產生讀取資料311。
圖4A圖解說明如讀取單元401A之一讀取單元(諸如,圖3之讀取單元313或315)之一實施例之選定細節。在各種實施例及使用情景中,標頭1 411A至標頭N 419A係鄰接的,且由該等標頭中之每一者識別(諸如,經由各別位移)之各別資料區鄰接跟隨該等標頭中之一最後標頭。該等資料區共同地形成資料位元組421A。該等資料區係以匹配儲存標頭之位置次序之一位置次序儲存。舉例而言,設想一第一標頭,在一讀取單元之開頭處,其中一第二標頭及一第三標頭鄰接地跟隨第一標頭。一第一資料區(由第一標頭中 之一第一位移識別)鄰接地跟隨第三標頭。一第二資料區(由第二標頭中之一第二位移識別)鄰接地跟隨第一資料區。類似地,一第三資料區(由第三標頭識別)鄰接地跟隨第二資料區。
圖4B圖解說明如讀取單元401B之一讀取單元(諸如,圖3之讀取單元313或315)之另一實施例之選定細節。在各種實施例及使用情景中,標頭標記(HM)410B係一選用初始欄位(諸如,一單位元組欄位),其指示跟隨之鄰接標頭(標頭1 411B、標頭2 412B、...、標頭N 419B)之一數目。資料區(資料位元組421B、資料位元組422B、...、資料位元組429B)分別由標頭(標頭1 411B、標頭2 412B、...、標頭N 419B)識別且以與儲存標頭之位置次序相反之一位置次序儲存。標頭在一讀取單元之開頭處開始,而對應資料區在一讀取單元之結束處開始。在某些實施例中,一資料區(例如,資料位元組421B、資料位元組422B、...、資料位元組429B)中之資料位元組係以一向前次序(匹配位置次序之位元組次序)配置,而在其他實施例中,該等資料位元組係以一顛倒次序(相對於位置次序顛倒之位元組次序)配置。在某些實施例中,一標頭標記用於其中以一相同位置次序(例如,如圖4A中所圖解說明)儲存標頭及資料位元組之讀取單元中。
在某些實施例中,選用填補位元組431A(或431B)係根據與一特定LPN相關聯之資料之粒度。舉例而言,在某些實施例中,若在儲存與標頭1 411A至標頭N 419A(或標頭1 411B、標頭2 412B、...、標頭N 419B)中之幾乎一最後標頭相關聯之資料之後資料位元組421A(或共同地,資料位元組421B、資料位元組422B、...、資料位元組429B)具有少於一固定量之剩餘空間(諸如,8位元組),則用於與最後標頭相關聯之一LPN之資料以一後續讀取單元開始。在進一步之實施例中,最後標頭中之一特定位移值(例如,總位移值)指示用於與最後標頭相關聯之LPN之資料以後續讀取單元開始。
圖5圖解說明具有若干欄位之一標頭(諸如,圖4A之標頭1 411A至標頭N 419A或圖4B之標頭1 411B至標頭419B中之任一者)之一實施例之選定細節。在某些實施例中,標頭係固定長度(例如,每一標頭係相同數目個位元組長)。標頭501包含欄位類型511、最後指示符513、旗標515、LPN 517、長度519及位移521。類型欄位識別資料位元組之一類別。舉例而言,類型欄位指示資料位元組之類別係主機資料(例如,邏輯頁資料)或系統資料(例如,映射資訊或檢查點資訊)中之一者。最後欄位指示標頭係資料位元組之前的最後標頭。在具有一標頭標記之某些實施例中,視情況省略最後欄位。LPN欄位係標頭與其相關聯之LPN。LPN欄位使得能夠剖析標頭以(舉例而言)藉由搜尋該等標頭中具有匹配一特定LPN之一LPN欄位之一標頭來判定與該特定LPN相關聯之標頭中之一特定標頭。長度欄位係資料位元組之位元組長度(例如,在與標頭501相關聯之資料位元組421A中存在多少資料位元組)。在某些實施 例中,根據一特定粒度(例如,8位元組粒度)將位移欄位中之一位移舍入。
在各種實施例中,與一特定LPN相關聯之某些或全部資訊儲存於與該特定LPN相關聯之一映射項目、與該特定LPN相關聯之一標頭或此兩者中。舉例而言,在某些實施例中,長度519之某些或全部儲存於一映射項目中而非一標頭中。
命令運作
圖6圖解說明如I/O裝置命令處理600之在一I/O(例如,儲存)裝置處處理命令及選用提示資訊之一實施例之選定細節之一流程圖。在某些實施例及/或使用情景中,I/O裝置命令處理600達成「一次一個」提示處理,其中將具有一明確提示模式之一特定命令發送至I/O裝置,且I/O裝置根據隨附提示處理該特定命令。後續命令之處理不受該提示影響(但該等後續命令中之一或多者視情況具有影響各別處理之各別隨附提示)。
一實例性I/O裝置係如圖1A及圖1B中所圖解說明之SSD 101之一例項。該處理開始以I/O裝置不作用(諸如,不被供電)處於一睡眠模式中或處於一重設狀態中(I/O裝置斷電或重設狀態601)。該處理繼續以在I/O裝置變為作用(諸如,正被供電)時轉變至一運作及/或作用狀態或退出重設(啟動601A)。然後,I/O裝置藉由初始化內部資料結構及硬體元件(諸如,藉由儲存初始值、還原先前所保存之值及/或形成與作用運作相容之狀態值)準備運作(I/O裝置初始化 611)。
在準備運作之後,I/O裝置等待自一主機接收一命令(接收命令?621及「否(No)」621N)。在接收一命令(「是(Yes)」621Y)之後,I/O裝置旋即判定該命令是否具備一提示或該命令是否使用一提示(命令具有或使用提示?631)。若如此(「是」631Y),則I/O裝置處理具有及/或使用該提示之命令(處理使用提示之命令641)。若否(「否」631N),則I/O裝置處理不具有一提示之命令(處理命令(無提示)651)。在命令(具有或不具有一提示)之處理之後,I/O裝置將結果資訊視情況及/或選擇性地傳回至主機(發送命令狀態661)。然後,I/O裝置中之處理往回迴圈以等待另一命令(接收命令?621)。
圖7圖解說明如I/O裝置命令處理700之在一I/O(例如,儲存)裝置處處理命令及選用提示資訊之另一實施例之一流程圖。在某些實施例及/或使用情景中,I/O裝置命令處理700達成「黏性」提示處理,其中將用以進入一提示模式之一命令發送至I/O裝置,後續接著在該提示模式中處理之一或多個命令。然後,將用以退出該提示模式之一命令視情況及/或選擇性地發送至I/O裝置,且若發送用以退出該提示模式之命令,則在不具有提示之情況下處理後續命令。
如在圖6中,一實例性I/O裝置係如圖1A及圖1B中所圖解說明之SSD 101之一例項。亦如在圖6中,該處理開始以I/O裝置不作用(I/O裝置斷電或重設狀態701),且然後繼續 以I/O裝置變為作用(啟動701A)且準備運作(I/O裝置初始化711)。
在準備運作之後,I/O裝置等待自一主機接收一命令(接收命令?721及「否」721N)。在接收一命令(「是」721Y)之後,I/O裝置旋即判定該命令是否與一提示模式相關(命令用於提示模式?731)。若如此(「是」731Y),則I/O裝置進入(或退出,此取決於該命令)一提示模式(進入/退出提示模式741)。若否(「否」731N),則I/O裝置在一當前模式中處理命令,而不進入(或退出)一提示模式(在當前模式中處理命令751)。在命令(與一提示模式相關或與一提示模式無關)之處理之後,I/O裝置將結果資訊視情況及/或選擇性地傳回至主機(發送命令狀態761)。在某些實施例及/或使用情景中,諸如取決於命令及/或結果資訊,I/O裝置中之處理然後往回迴圈以等待另一命令(接收命令?721),或者按條件及/或選擇性地(諸如取決於命令及/或結果資訊),I/O裝置然後判定是否退出一提示模式(退出提示模式?771)。若如此(「是」771Y),則I/O裝置退出提示模式(退出提示模式781),且I/O裝置中之處理然後往回迴圈以等待另一命令(接收命令?721)。若否(「否」771N),則I/O裝置中之處理往回迴圈以等待另一命令(接收命令?721),而不退出一提示模式。在某些實施例中,在一單個命令之處理期間,I/O裝置進入一提示模式,且基於該單個命令亦執行用以執行一特定運作(諸如,一讀取、寫入或修整運作)之命令。舉例而言,對於某些命令,該處理自741流動 至751且然後流動至761。
圖8圖解說明如I/O裝置命令處理800之在一I/O(例如,儲存)裝置處處理命令及選用提示資訊之另一實施例之一流程圖。概念上,圖8表示可同時用於一或多個實施例中之由圖6及圖7所表示之能力。在各種實施例及/或使用情景中,I/O裝置命令處理800達成一次一個及黏性提示處理,其中存在可同時使用之一或多個提示及/或提示模式。該等提示及/或提示模式視情況選擇性地及/或按條件取決於一或多個因素,諸如,命令之類型、LBA、資料頻帶或其他與位址、資料及/或命令相關之參數或條件。
如在圖6及圖7中,一實例性I/O裝置係如圖1A及圖1B中所圖解說明之SSD 101之一例項。亦如在圖6及圖7中,該處理開始以I/O裝置不作用(I/O裝置斷電或重設狀態801),且然後繼續以I/O裝置變為作用(啟動801A)且準備運作(I/O裝置初始化811)。
在準備運作之後,I/O裝置等待自一主機接收一命令(接收命令?821及「否(No)」821N)。在接收一命令(「是」821Y)之後,I/O裝置旋即判定該命令是否明確地具備一提示或該命令是否明確地使用一提示(具有或使用提示?831)。若如此(「是」831Y),則I/O裝置根據一當前模式處理具有及/或使用明確提示之命令(在當前模式中藉助提示處理832)。在各種實施例中,當前模式取決於以下各項中之一或多個:命令;具備命令之一LBA;一資料頻帶(諸如,依據具備命令之一LBA、映射資訊或在資料頻帶與模 式之間的其他關係而判定);其他與位址、資料及/或命令相關之參數或條件;或者一或多個先前所提供之明確及/或隱含提示。
若該命令不具備一明確提示且不使用明確提示(「否」831N),則I/O裝置判定該命令是否係進入一特定提示模式(進入提示模式?841)。若如此(「是」841Y),則I/O裝置進入該特定提示模式(進入特定提示模式(當前模式+=特定模式)842)。在其中存在一單個提示模式之實施例中,進入該單個提示模式概念上對應於給當前模式指派對應於該單個提示模式之一值。在其中存在兩個或兩個以上提示模式之實施例中,進入特定提示模式概念上對應於給當前模式指派對應於當前模式連同(例如,添加)特定提示模式之一值。在各種實施例中,特定提示模式與一或多個LBA、一或多個LBA範圍及一或多個資料頻帶中之一或多者相關聯。具備或使用一明確提示之命令之處理達成一次一個提示處理。
若該命令係不進入一特定提示模式(「否」841N),則I/O裝置判定該命令是否係退出一特定提示模式(退出提示模式?851)。若如此(「是」851Y),則I/O裝置退出該特定提示模式(退出特定提示模式(當前模式-=特定模式)852)。在其中存在一單個提示模式之實施例中,退出該單個提示模式概念上對應於給當前模式指派對應於單個提示模式正不作用之一預設值。在其中存在兩個或兩個以上提示模式之實施例中,退出特定提示模式概念上對應於給當前模式 指派對應於當前模式而不對應於(例如,減去)特定提示模式之一值。在各種實施例中,特定提示模式與一或多個LBA、一或多個LBA範圍及一或多個資料頻帶中之一或多者相關聯。
若該命令係不退出一特定提示模式(「否」851N),則I/O裝置判定該命令是否係退出所有提示模式(退出所有提示模式?861)。若如此(「是」861Y),則I/O裝置退出所有提示模式(退出所有提示模式(當前模式=預設模式)862)。在其中存在一單個提示模式之實施例(或其中存在兩個或兩個以上提示模式之實施例)中,退出所有提示模式概念上對應於給當前模式指派對應於單個提示模式(或所有提示模式)正不作用之一預設值。
若該命令係不退出所有提示模式(「否」861N),則在當前模式中處理該命令(在當前模式中處理(無提示)872),包含基於(例如)先前所接收之提示進入/退出相關命令對當前模式之任何先前改變,但不具有任何額外提示資訊,此乃因該命令已經判定為不提供提示。用以進入特定提示模式及用以退出特定提示模式或所有提示模式之命令之處理達成黏性提示處理。
在命令(具有或使用一明確提供之提示、進入或退出一特定提示模式、退出所有提示模式或僅基於當前模式,分別對應於832、842、852、862及872)之處理之後,I/O裝置將結果資訊視情況及/或選擇性地傳回至主機(發送狀態881)。在某些實施例及/或使用情景中,諸如取決於命令 及/或結果資訊,I/O裝置中之處理然後往回迴圈以等待另一命令(接收命令?821),或視情況、按條件及/或選擇性地(諸如取決於命令及/或結果資訊),I/O裝置然後退出一或多個提示模式(退出提示模式882),且I/O裝置中之處理然後往回迴圈以等待另一命令(接收命令?821)。
判定831、841、851及861之排序僅係說明性的;預計具有其他排序之其他實施例以及其中並行進行該等判定中之一或多者或其中視情況及/或選擇性地估計該等判定之「是」路徑中之多個路徑之實施例。舉例而言,在某些實施例中,一特定命令使用影響該特定命令以及後續命令之一黏性提示。
映射運作
圖9圖解說明如I/O裝置命令處理900之在一I/O(例如,儲存)裝置處處理命令及選用陰影映射資訊之一實施例之一流程圖。在某些實施例及/或使用情景中,I/O裝置命令處理900使得I/O裝置能夠基於原本將經由特定處理獲得之一主機提供之資訊而省略該特定處理(例如,跳過存取一映射,諸如圖1A及圖1B之映射141)。該主機經啟用以經由存取至少部分地藉由自I/O裝置傳遞之映射更新管理之一陰影映射而提供資訊。
如在圖6至圖8中,一實例性I/O裝置係如圖1A及圖1B中所圖解說明之SSD 101之一例項。亦如在圖6至圖8中,該處理開始以I/O裝置不作用(I/O裝置斷電或重設狀態901),且然後繼續以I/O裝置變為作用(啟動901A)且準備運作(I/O 裝置初始化911)。
在準備運作之後,I/O裝置將開始映射資訊視情況及/或選擇性地傳遞至一主機(將初始映射傳送至主機921)。在某些實施例及/或使用情景中,I/O裝置根據一概念性「按需提取」技術省略開始映射資訊之全部或任何部分。視情況執行該傳遞作為一背景運作。主機將經傳遞之映射資訊存留於一陰影映射(例如,圖1B之陰影映射108)中。然後,I/O裝置等待自一主機接收一命令(接收命令?931及「否」931N)。
在接收一命令(「是」931Y)之後,I/O裝置旋即判定該命令是否包含或具備以I/O裝置NVM之一特定部分之特定區塊及/或頁位址(諸如,圖1A之快閃晶粒194中之一或多者中之一區塊/頁)為目標之位置資訊(提供位置?941)。若否(「否」941N),則I/O裝置(諸如)藉由存取一映射判定I/O裝置NVM之特定部分之特定區塊及/或頁位址(判定位置951)。然後,I/O裝置使用經判定位置來處理該命令(處理命令961)。若該命令包含或具備該位置資訊(「是」941Y),則省略位置判定,且I/O裝置使用所提供之位置資訊來處理該命令(處理命令961)。
在命令之處理之後,I/O裝置將結果資訊視情況及/或選擇性地傳回至主機(發送命令狀態971),該結果資訊視情況包含一或多個映射更新,例如,若該命令係一寫入命令,則I/O裝置將一映射更新傳遞至主機,該映射更新闡述該寫入命令之一LBA與I/O裝置NVM之一特定部分之間的一 映射,例如,以一特定區塊及/或頁位址為目標之位置資訊。在某些實施例及/或使用情景中,諸如取決於命令及/或結果資訊,I/O裝置中之處理然後往回迴圈以等待另一命令(接收命令?931),或按條件及/或選擇性地(諸如取決於命令及/或結果資訊),I/O裝置然後判定是否將一映射更新傳遞至主機(欲發送映射更新?981)。若否(「否」981N),則I/O裝置中之處理往回迴圈以等待另一命令(接收命令?931)。若如此(「是」981Y),則I/O裝置將一或多個映射更新傳遞至主機(將映射更新傳送至主機991)。在某些實施例中,傳遞該等映射更新作為一背景運作。在某些實施例中,視情況作為一背景運作,累積映射更新且將其作為一群組傳送。I/O裝置中之處理然後往回迴圈以等待另一命令(接收命令?931)。
在某些實施例及/或使用情景中,I/O裝置回應於不直接與初始化或命令相關之由I/O裝置進行之處理而將一或多個更新傳遞至主機。舉例而言,當I/O裝置回收I/O裝置NVM之若干區時,存在LBA與I/O裝置NVM中之位置之間的映射之零或零以上改變。I/O裝置將映射改變(若存在)傳遞至主機作為一或多個映射更新,如在981/991中。
在某些實施例及/或使用情景(諸如,具有帶有卡記憶體之一I/O卡(例如,使用圖1B之(選用)卡記憶體112C作為用於一陰影映射之儲存之I/O卡116)之某些實施例)中,一或多個I/O裝置使用卡記憶體作為一陰影映射,而不涉及主機。除將映射更新傳遞至主機以外,I/O裝置亦根據映射 更新修改陰影映射。
圖10圖解說明如主機陰影映射處理1000之在一計算主機處維持陰影映射資訊之一實施例之一流程圖。在某些實施例及/或使用情景中,主機陰影映射處理1000使得一I/O裝置能夠基於原本將經由特定處理獲得之主機提供之資訊而省略該特定處理(例如,跳過存取一映射,諸如圖1A及圖1B之映射141)。該主機經啟用以經由存取至少部分地藉由自I/O裝置傳遞之映射更新管理之陰影映射而提供資訊。
一實例性主機係如圖1B中所圖解說明之主機102。如在圖6至圖9中,該處理開始以I/O裝置不作用(I/O裝置斷電或重設狀態1001),且然後繼續以I/O裝置變為作用(啟動1001A)。然後,主機將一陰影映射(諸如,圖1B之陰影映射108)之所有項目標記為不具有資訊(將陰影映射初始化為全部無效1011)。然後,主機之處理等待接收自I/O裝置傳遞之一或多個映射更新(接收初始映射或更新?1021及「否」1021N)。在接收映射更新(「是」1021Y)之後,主機旋即根據所接收之映射更新而更新陰影映射(更新陰影映射1031)。
在各種例項中,自I/O裝置傳遞之映射更新係關於初始化之I/O裝置處理(例如,圖9之將初始映射傳送至主機921)之結果、關於寫入之I/O裝置處理(例如,圖9之發送命令狀態(視情況具有用於寫入之映射更新)971)之結果、映射更新之I/O裝置累積(例如,圖9之將映射更新傳送至主機991)之結果或其任何組合。在某些實施例及/或使用情景中, 主機視情況及/或選擇性地忽略映射更新中之一或多者。舉例而言,主機忽略由於回收活動而產生之特定映射更新,諸如當該等特定映射更新對應於在主機處理該等特定映射更新之前主機由於寫入而使其無效之陰影映射項目時。
在某些實施例及/或使用情景(諸如,具有I/O卡116且使用圖1B之(選用)卡記憶體112C作為用於一陰影映射之存取之某些實施例)中,一或多個I/O裝置(例如,SSD)使用該陰影映射而一主機不使用該陰影映射。I/O裝置執行如圖10中所圖解說明之處理之全部或任何部分,例如,I/O裝置執行陰影映射初始化及更新。
在某些實施例中,I/O裝置獨立於主機命令及/或回應於主機命令而更新映射,但在主機命令中未提及之LBA處或在主機命令中之LBA處通常將不更新映射,諸如一讀取命令。在一第一實例中,由於回收(例如,廢棄項目收集)而重新分配NVM中之資料且更新映射以反映任何此經分配資料之一新位置。在一第二實例中,回應於一讀取命令,由於資料具有過多數目個讀取(例如,資料更易遭受讀取干擾錯誤之風險)之一判定而重新分配該資料。I/O裝置(諸如)經由一中斷或經由狀態資訊視情況及/或選擇性地給主機傳送以下信號:存在由於獨立I/O裝置活動所致之映射之擱置中更新。根據各種實施例,由於獨立I/O裝置活動所致之映射之更新係以下各項中之一或多者:連同作為對主機命令之回應之映射之其他更新一起傳遞至主機;作為 去往主機之單獨傳遞而傳遞至主機;回應於主機請求獨立更新(諸如藉由讀取獨立更新之一記錄)而傳遞至主機;藉由I/O裝置直接寫入至陰影映射;及其他技術。在進一步之實施例中,不抹除已回收及/或重新分配之NVM之一部分直至該NVM之該部分之任何映射更新已被傳遞至主機及/或在陰影映射中更新。在某些實施例及/或使用情景中,延遲該抹除直至陰影映射更新使得能夠由主機使用陰影映射中之先前位置資訊(在回收及/或重新分配之前)之後,且因此避免來自陰影映射之經更新項目無效之效能損失,此原本將使得直至用新位置資訊更新該等經更新項目之後才能夠使用該等經更新項目。
圖11圖解說明如主機命令發佈1100之在一計算主機處發佈命令及選用陰影映射資訊之一實施例之一流程圖。在某些實施例及/或使用情景中,主機命令發佈1100使得一I/O裝置能夠基於原本將經由特定處理獲得之主機提供之資訊而省略該特定處理(例如,跳過存取一映射,諸如圖1A及圖1B之映射141)。該主機經啟用以經由存取至少部分地藉由來自主機之修改(以及自I/O裝置傳遞之映射更新)管理之陰影映射而提供資訊。
在某些實施例及/或使用情景中,連同發佈一寫入命令,主機使該寫入修改之LBA之陰影映射項目無效,此乃因在處理該寫入命令時藉由I/O裝置改變該等LBA之映射。隨後,I/O裝置視情況傳遞與經寫入LBA相關之一或多個映射更新,且然後,主機根據映射更新修改陰影映 射。在某些實施例及/或使用情景中,連同發佈一修整命令,主機視情況及/或選擇性地將該修整相關之LBA之陰影映射項目標記為經修整,此乃因在處理該修整命令時藉由I/O裝置將該等LBA之映射標記為經修整。I/O裝置視情況省略傳遞與經修整LBA相關之映射更新,此乃因主機已經將該等LBA標記為經修整。在某些實施例及/或使用情景中,連同發佈一讀取命令,主機視情況及/或選擇性地檢查在陰影映射中是否存在用於該讀取存取之LBA之任何有效項目。若找到有效項目,則主機發佈具有來自該等有效項目之位置資訊之一預映射讀取命令,在發佈該命令時視情況省略LBA。該位置資訊使得I/O裝置能夠省略原本將經執行以依據LBA判定位置資訊之映射查找。若未找到有效項目,則主機發佈具有LBA且不具有位置資訊之一讀取命令。然後,I/O裝置部分地藉由基於所讀取LBA執行映射查找以判定位置資訊來處理讀取命令。
更特定而言,一實例性主機係如圖1B中所圖解說明之主機102。如在圖6至圖10中,該處理開始以I/O裝置不作用(I/O裝置斷電或重設狀態1101),且然後繼續以I/O裝置變為作用(啟動1101A)。然後,主機之處理視情況及/或選擇性地將所有陰影映射項目標記為空且等待(諸如)藉由執行於主機上之軟體元件(例如,圖1B之OS 105、驅動程式107及應用程式109)所產生之一命令(命令?1111及「否」1111N)。在產生一命令(「是」1111Y)之後,主機旋即判定所產生命令係哪一命令或(另一選擇係)係哪一命令類型 (解碼命令1121)。
若該命令係一寫入命令或(另一選擇係)一寫入命令類型(寫入1121W),則主機將該寫入修改之LBA之陰影映射項目標記為空(例如,使其無效)(將陰影映射中之LBA標記為無效1131)且將該寫入發佈至I/O裝置(發佈命令1161)。若該命令係一修整命令或(另一選擇係)一修整命令類型(修整1121T),則主機將該修整相關之LBA之陰影映射項目標記為經修整(將陰影映射中之LBA標記為經修整1141)且將該修整發佈至I/O裝置(發佈命令1161)。若該命令係一讀取命令或(另一選擇係)一讀取命令類型(讀取1121R),則主機檢查在陰影映射中是否存在用於該讀取存取之LBA之任何有效項目(在陰影映射中LBA有效?1151)。若找到任何有效項目(「是」1151Y),則主機將具有來自該等有效項目之位置資訊之一預映射讀取命令發佈至I/O裝置,在發佈該命令時視情況省略該等LBA(將命令發佈為預映射讀取(具有來自陰影映射之位置)1171)。若未找到有效項目(「否」1151N),則主機將具有LBA且不具有位置資訊之一讀取命令發佈至I/O裝置(發佈命令1161)。若該命令並非一寫入、修整或讀取或者(另一選擇係)並非一寫入類型、修整類型或讀取類型(其他1121O),則主機將該命令發佈至I/O裝置(發佈命令1161),視情況包含與該命令相關聯之任何LBA。
在某些實施例中,當主機將該命令發佈至I/O裝置(發佈命令1161)時,主機視情況及/或選擇性地包含自該命令相 關之LBA之陰影映射之有效項目(若存在)獲得之資訊。舉例而言,若在陰影映射中存在用於一寫入命令之一LBA之一有效項目,則主機在將該寫入命令發佈至I/O裝置時提供來自該有效項目之位置及/或長度資訊。I/O裝置(例如)使用該位置及/或長度資訊來更新所使用空間簿記(諸如,所使用空間[位置]-=長度)。在某些實施例中,當主機發佈一預映射讀取命令(將命令發佈為預映射讀取(具有來自陰影映射之位置)1171)時,主機提供包含長度及/或跨度資訊之來自陰影映射之位置資訊,使得I/O裝置能夠判定在不存取一映射之情況下讀取多少資料(基於長度及/或跨度)。
主機基於命令之一大小視情況及/或選擇性地忽略陰影映射。在某些例項中,具有相對較長長度之命令(諸如,指代跨越各自與一各別映射項目相關聯之多個LBA單元之資料之命令)具有額外位置資訊(例如,每LBA單元一個位置資訊),從而增加命令之大小。具有相對較長長度之命令存取I/O裝置之順序映射項目,且映射存取之一成本攤銷於多個單元上。舉例而言,主機針對指代大於4KB之資料之一讀取命令忽略陰影映射。在某些實施例中,主機視情況及/或選擇性地將具有一相對中間長度之一命令分裂成複數個命令。舉例而言,主機將指代8KB(或16KB)之資料之一讀取命令分裂成各自指代4KB之資料之兩個(或四個)讀取命令。在某些實施例中,一預映射讀取命令(或其變化形式)經啟用以規定複數個位置資訊元件,而在其他 實施例中,預映射讀取命令(及其變型)限制於規定一單個位置資訊元件。在某些實施例中,存取一子部分(例如,I/O裝置NVM之一4KB部分之一個特定SATA磁區)使用識別該特定磁區之額外位置資訊。
在某些實施例及/或使用情景(諸如,具有帶有卡記憶體之一I/O卡(例如,使用圖1B之(選用)卡記憶體112C作為用於一陰影映射之儲存之I/O卡116)之某些實施例)中,一或多個I/O裝置使用該陰影映射而主機不使用該陰影映射。I/O裝置視情況及/或選擇性地執行如圖11中所圖解說明之處理之全部或任何部分。舉例而言,I/O裝置在處理寫入命令時將陰影映射中之特定項目標記為無效且在處理修整命令時將其標記為經修整。
低電力運作
圖12圖解說明如I/O裝置睡眠進入/退出1200之進入及退出一I/O(例如,儲存)裝置之一睡眠狀態之一實施例之一流程圖。在某些實施例及/或使用情景中,I/O裝置睡眠進入/退出1200藉由使得能夠將I/O裝置關閉電源或斷電(諸如,藉由進入一睡眠狀態、藉由將內部狀態之全部或任何部分儲存於與I/O裝置分離(或另一選擇係,相對於I/O裝置經歷單獨電力控制)之一保存/還原記憶體中)達成電力降低。當I/O裝置退出睡眠狀態時,自保存/還原記憶體完全地或部分地還原內部狀態。在某些實施例及/或使用情景中,自保存/還原記憶體還原內部狀態比自除存留於保存/還原記憶體以外之位置中之資訊重新建立內部狀態(諸如,自依 據讀取I/O裝置之NVM獲得之映射資訊重新建立映射資訊之一快取記憶體)更高效(例如,較低延時及/或較低電力)。
內部狀態之實例係I/O裝置之任何揮發性狀態(諸如,在以一睡眠狀態運作I/O裝置時丟失之狀態)、映射資訊(諸如,(例如)如在圖1A及圖1B之映射141中維持之經快取映射資訊、陰影映射資訊及一多階映射之任何一或多個階)及由I/O裝置維持之統計。保存/還原記憶體之實例係I/O裝置可存取且相對本端於I/O裝置之記憶體(例如,(選用)卡記憶體112C)及I/O裝置可存取之主機記憶體(例如,主機記憶體112H及陰影映射108)。
如在圖6至圖9中,一實例性I/O裝置係如圖1A及圖1B中所圖解說明之SSD 101之一例項。亦如在圖6至圖9中,該處理開始以I/O裝置不作用(I/O裝置斷電或重設狀態1201),且然後繼續以I/O裝置變為作用(啟動1201A)且準備運作(I/O裝置初始化1211)。
在準備運作之後,I/O裝置處於經啟用以接收並處理命令且在不開啟電源之情況下執行其他動作之一較高電力運作狀態(作用運作狀態1221)中。在等待進入一較低電力運作狀態之一請求(進入睡眠狀態?1231及「否」1231N)時,I/O裝置保持處於較高電力運作狀態(作用運作狀態1221)中且(若存在)執行所接收之命令(未圖解說明)。在接收進入一較低電力運作狀態之一請求(諸如,經由I/O裝置之一介面接收之一明確請求或回應於一不活動週期而由I/O裝置 產生之一隱含請求)(「是」1231Y)之後,I/O裝置旋即將內部狀態之全部或任何部分保存於保存/還原記憶體中(將內部狀態保存於保存/還原記憶體中1241)。I/O裝置然後進入較低電力運作狀態(睡眠狀態1251)中。在各種實施例中,I/O裝置(例如)藉由經由複數個加密技術中之任何一者加密而以一經加密形式保存內部狀態之全部或任何部分。
在等待退出較低電力運作狀態之一請求(退出睡眠狀態?1261及「否」1261N)時,I/O裝置保持處於較低電力運作狀態(睡眠狀態1251)中。在接收退出較低電力運作狀態之一請求(「是」1261Y)之後,I/O裝置旋即自保存/還原記憶體還原保存於保存/還原記憶體中之內部狀態之全部或任何部分(自保存/還原記憶體還原內部狀態1271)。I/O裝置然後進入較高電力運作狀態,且I/O裝置中之處理然後往回迴圈(作用運作狀態1221)。在各種實施例中,I/O裝置(例如)藉由經由加密技術中之任何一者解密而自經加密形式還原內部狀態之全部或任何部分。
在各種實施例中,睡眠狀態係以下各項中之一或多者:一斷電狀態;一關閉電源狀態;一降低電力狀態;一低電力狀態;一較低電力狀態;一休眠狀態;具有經斷電或關閉電源之I/O裝置之全部或任何部分之一狀態或其中I/O裝置消耗比完全(例如,作用)運作時少之電力之任何運作狀態。在各種實施例中,退出睡眠狀態(諸如)由於經由對NVM之存取重新建立資訊而招致一延時損失(及/或一電力成本),且經由自保存/還原記憶體讀取而還原資訊(替代經 由對NVM之存取重新建立)減少延時損失(及/或電力成本)。在各種實施例中,保存內部狀態之全部或任何部分(諸如,藉由進行與將內部狀態保存於保存/還原記憶體中1241相關聯之處理)。在某些實施例中,一驅動程式將主機記憶體之一部分分配至用作保存/還原記憶體。
組合運作
圖13A及圖13B共同地圖解說明分別如I/O裝置及計算主機相互運作1300A及1300B之I/O(例如,儲存)裝置及計算主機相互運作之一實施例之一流程圖。在本文中別處,共同地闡述該兩個圖,稱為I/O裝置及計算主機相互運作1300。I/O裝置及計算主機相互運作1300概念上圖解說明組合如由圖6至圖12所圖解說明之一或多個能力之各種實施例,諸如一次一個且黏性提示、主機提供之位置資訊、主機陰影映射資訊之主機及I/O裝置更新以及I/O裝置內部狀態保存及還原。
亦在本文中別處,主機運作1310A及主機運作1310B統稱為主機運作1310,且裝置運作1320A及裝置運作1320B統稱為裝置運作1320。主機運作1310闡述藉由一計算主機(諸如,圖1B之主機102)執行之運作。裝置運作1320闡述藉由一I/O(例如,儲存)裝置(諸如,圖1B之SSD 101之例項中之任何一者)執行之運作。
該處理開始(如在(例如)圖6中)以I/O裝置不作用(I/O裝置斷電/睡眠或重設狀態1301)。該處理繼續以在I/O裝置變為作用(諸如,藉由正被供電)時轉變至一運作及/或作用狀態 或退出重設。然後,主機(啟動1301H)將一陰影映射(諸如,圖1B之陰影映射108)之所有項目標記為不具有資訊(將陰影映射初始化為全部無效1311)。I/O裝置(啟動1301D)準備運作(I/O裝置初始化及條件狀態自記憶體還原1321)。在某些實施例及/或使用情景中,該準備包含視情況及/或按條件自一保存/還原記憶體完全地或部分地還原內部狀態(例如,圖1B之(選用)卡記憶體112C)。在各種實施例中,I/O裝置(例如)藉由經由複數個加密技術中之任何一者解密而自一經加密形式還原內部狀態之全部或任何部分。在某些實施例中,主機執行該解密之全部或任何部分。
然後,I/O裝置視情況及/或選擇性地將經更新映射資訊(若存在)傳遞至主機(將局部映射(全部或更新)發送至主機1322)(如至主機1322H)以供主機進一步初始化及/或更新陰影映射(初始化/更新陰影映射1312)。在某些例項中,將I/O裝置開啟電源之後的第一遍次經過1322/1312概念上對應於藉由發送一局部映射(例如,圖1B之映射141)之一全影像初始化陰影映射,而後續編次經過1322/1312概念上對應於作為藉由I/O裝置執行命令及/或I/O裝置之獨立活動(諸如,回收)之一結果而(遞增地)更新陰影映射。在其他例項中,作為由主機提及LBA之一結果而更新陰影映射。在某些實施例及/或使用情景中,主機視情況及/或選擇性地忽略映射更新中之一或多者。舉例而言,主機忽略由於回收活動而產生之特定映射更新,諸如當該等特定映射更 新對應於在主機處理該等特定映射更新之前主機由於寫入而使其無效之陰影映射項目時。
在某些實施例及/或使用情景中,I/O裝置回應於不直接與初始化或命令相關之由I/O裝置進行之處理而將一或多個更新傳遞至主機。舉例而言,當I/O裝置回收I/O裝置NVM之若干區時,存在LBA與I/O裝置NVM中之位置之間的映射之零或零以上改變。I/O裝置將映射改變(若存在)傳遞至主機作為一或多個映射更新,如在1322中。
然後,I/O裝置中之處理取決於I/O裝置是否接收進入一較低電力運作狀態之一請求(睡眠1322S)或一命令(命令1322C)而繼續進行。在接收進入一較低電力運作狀態之一請求之後,I/O裝置旋即視情況及/或選擇性地將內部狀態之全部或任何部分保存於保存/還原記憶體中(接收睡眠請求且將狀態保存至記憶體1323)。在各種實施例中,I/O裝置(例如)藉由經由加密技術中之任一者加密而以經加密形式保存內部狀態之全部或任何部分。在某些實施例中,主機執行該加密之全部或任何部分。然後,I/O裝置進入較低電力運作狀態且返回以等待啟動(I/O裝置斷電/睡眠或重設狀態1301)。下文關於(接收命令/(提示)(及陰影映射資訊)1325)闡述一命令之接收。
在完成陰影映射之初始化之後,主機(例如)經由圖1B之OS 105、驅動程式107及應用程式109中之任何一或多者而產生(產生1312G)視情況具有或使用一提示之一命令(產生命令(選用提示)1313)。然後,主機視情況及/或選擇性地 判定該命令是否使得使主機將來自陰影映射之有效資訊(若存在)提供至I/O裝置存在效用(參考陰影映射?1314R)。若否(「否」1314RN),則主機將命令(視情況具有或使用一提示)(不具有任何陰影映射資訊)提供至I/O裝置(發送命令/(提示),無陰影映射資訊1315N)。舉例而言,在某些實施例中,若該命令係一讀取,則在某些例項中使主機提供位置資訊存在效用,因此使得I/O裝置能夠省略判定位置資訊且用減少之延時提供讀取資料。繼續該實例,若該命令係一寫入,則在某些例項中使主機提供位置資訊幾乎不存在效用,此乃因將位置資訊提供至I/O裝置幾乎不提供效能益處,此乃因位置資訊對寫入處理之效能而言相對不重要。對於另一實例,在某些實施例中,若一命令係指一單個LBA,則在某些例項中使主機提供位置資訊存在效用,因此使得I/O裝置能夠省略判定位置資訊且減少命令之延時。繼續該另一實例,若該命令係指複數個鄰接LBA,則在某些例項中使主機提供位置資訊不存在效用,此乃因將位置資訊提供至I/O裝置幾乎不提供效能益處,此乃因I/O裝置是否判定位置資訊相對不影響命令之平均延時。
若使主機將有效陰影映射資訊提供至I/O裝置存在效用(「是」1314RY),則主機檢查陰影映射中是否存在用於該命令相關之LBA之任何有效項目(陰影映射有效項目?1314V)。若未找到有效項目(「否」1314VN),則主機將具有LBA(視情況具有或使用一提示)且不具有陰影映射資訊 之命令提供至I/O裝置(發送命令/(提示),無陰影映射資訊1315N)。若找到任何有效項目(「否」1314VY),則主機將具有來自該等有效項目之陰影映射資訊之命令發佈至I/O裝置,在發佈該命令時視情況省略LBA(發送命令/(提示)及陰影映射資訊1315M)。在某些實施例中,省略1314R,且針對有效項目非選擇性地檢查該陰影映射(例如,該處理自1313流動至1314V),或另一選擇係,從不針對有效項目檢查該陰影映射(例如,該處理自1313流動至1315N)。
無論自與1315M還是與1315N相關之處理,將命令、選用LBA及選用提示資訊自主機提供至I/O裝置(至裝置1315D)(發送1315S)。在將命令提供至I/O裝置之後,主機根據該命令及/或其他準則視情況及/或選擇性地標記與該命令相關之LBA之陰影映射項目(選擇性地修改陰影映射資訊1316)。然後,主機之處理等待來自I/O裝置之狀態。
在接收具有零或零以上LBA、陰影映射(例如,位置)及選用提示資訊之命令(接收命令/(提示)(及陰影映射資訊)1325)之後,I/O裝置旋即判定陰影映射資訊之相關性及存在(陰影映射資訊?1326)。若陰影映射資訊不提供關於所接收命令之益處(不需要1326U),則I/O裝置在一當前模式中處理具有或使用選用提示資訊之命令(在當前模式中處理命令/(提示)1328)。在某些實施例及/或使用情景中,I/O裝置具有可用於主機之資訊,且甚至在主機提供來自陰影映射之資訊時,I/O裝置亦存取局部映射。舉例而言,不完全初始化陰影映射,且該裝置具有主機缺少之修整資 訊。對於另一實例,I/O裝置判定陰影映射資訊不完整(例如,缺乏某些LBA之資訊),諸如歸因於I/O裝置NVM之一部分之回收及抹除。例如,I/O裝置經由一預映射讀取命令中之位置資訊而判定已抹除I/O裝置NVM之對應部分,且替代使用位置資訊,I/O裝置存取局部映射以獲得位置資訊。當前模式視情況及/或選擇性地係該命令相關之LBA(若存在)之一功能,且進一步而言視情況及/或選擇性地係用以進入/退出特定提示模式之先前所接收命令之一功能。
若陰影映射資訊關於所接收命令係有用的且已由主機提供陰影映射資訊(「是」1326Y),則I/O裝置在當前模式中且以所提供之陰影映射資訊處理具有或使用選用提示資訊之命令(在當前模式中處理命令/(提示)1328)。若未由主機提供陰影映射資訊且命令之處理取決於映射資訊(「否」1326N),則I/O裝置存取一局部映射(例如,圖1B之映射141)以判定諸如用以在執行命令時使用之位置資訊之資訊(參考局部映射1327)。然後,I/O裝置在當前模式中且以來自局部映射之映射資訊處理具有或使用選用提示資訊之命令(在當前模式中處理命令/(提示)1328)。
在處理命令之後,I/O裝置視情況及/或選擇性地將結果資訊傳回至主機(至主機1329H)(發送狀態1329)。然後,I/O裝置視情況及/或選擇性地將經更新映射資訊(若存在)傳遞至主機(將局部映射(全部或更新)發送至主機1322)且等待進入一較低電力運作狀態之一請求或一命令。一直在 等待狀態之主機之處理接收該狀態(接收狀態1319)且然後等待來自I/O裝置之對陰影映射之映射更新(若存在)(如至主機1322H)(初始化/更新陰影映射1312)。
在某些實施例及/或使用情景(諸如,具有帶有卡記憶體之一I/O卡(例如,使用圖1B之(選用)卡記憶體112C作為用於一陰影映射之儲存之I/O卡116)之某些實施例)中,I/O裝置使用陰影映射,而不涉及主機。I/O裝置初始化陰影映射且應用陰影映射之映射更新(若存在)。I/O裝置視情況及/或選擇性地存取陰影映射(替代局部映射及/或除局部映射以外)以獲得位置資訊。
在諸如由圖6至圖13A/B中之一或多者完全地或部分地闡述之實施例等各種實施例中,各種主機命令導致主機處理,此取決於陰影映射項目狀態,如藉由下表所闡述。在表中,斜體要素係選用的,諸如作為在陰影映射項目狀態係有效時之一寫入命令之命令參數之位置、長度、跨度
對於關於該表之一實例,設想與具有一有效陰影映射項目之一LBA相關之一讀取命令,該有效陰影映射項目指示尚未修整該LBA。主機經由具有來自該有效陰影映射項目之位置之一參數之一預映射讀取命令而傳遞來自該有效陰影映射項目之資訊。視情況,主機亦傳遞來自該有效陰影映射項目之長度及/或跨度資訊。將位置、長度及/或跨度資訊提供至I/O裝置減少I/O裝置中之處理,此乃因省略原本將執行之對一局部映射之存取。對於另一實例,設想與具有一陰影映射項目之一LBA相關之一讀取命令,該陰影映 射項目指示已修整該LBA。在未將命令發送至I/O裝置(空運作(NoOp))之某些實施例中,由於不存在用以讀取之有用資料(由於已修整該資料),因此減少及/或消除藉由I/O裝置進行之無用處理。在其他實施例中,即使陰影映射項目指示已修整該LBA,亦將一讀取命令發送至I/O裝置(讀取(LBA))。將讀取命令發送至I/O裝置使得I/O裝置(而非主機)能夠判定用以針對經修整LBA之讀取而傳回之資料。在進一步之實施例中,讀取命令具備來自陰影映射項目之長度及/或跨度資訊。長度及/或跨度資訊編碼複數個修整類型中之一者,且I/O裝置至少部分地基於該編碼而判定用以針對該讀取而傳回之資料。
其他實施例資訊
在上述說明中,將命令闡述為自主機發送(例如,發佈)至I/O裝置(例如,圖6之621、圖7之721、圖8之821、圖9之931、圖11之1161及圖13A/13B之1315S/1325),且將結果闡述為自I/O裝置傳回至主機(例如,圖6之661、圖7之761、圖8之881、圖9之971及991、圖10之1021以及圖13A/13B之1329/1319及1322/1312)。在各種實施例及/或使用情景中,經由以下各項發送該等命令:經程式化I/O;DMA;鍵入至一工作佇列中;寫入至I/O裝置之一或多個命令、模式及/或組態暫存器及/或組態頁中;自主機「推動」至I/O裝置;藉由I/O裝置自主機「拉動」;及提供自主機至I/O裝置之命令之傳遞之其他技術。在各種實施例及/或使用情景中,經由以下各項發送該等結果:I/O裝置存取至主機記憶體;DMA;鍵入至一完成佇列中;自I/O裝置之一或多個狀態暫存器及/或記錄頁讀取;自I/O裝置「推動」至主機;藉由主機自I/O裝置「拉動」;提供自I/O裝置至主機之結果之傳遞之其他技術。在某些實施例中, 將複數個結果分組至一完成佇列中,且主機視情況及/或選擇性地每次告知關於多於一個命令之一粒度之結果(例如,經由一中斷機制)。在某些實施例中,回應於主機請求映射更新而由I/O裝置將經更新映射資訊提供至主機,例如,經由主機讀取I/O裝置之一記錄頁及作為回應I/O裝置將一或多個映射更新發送至主機。
在上文中所闡述之實施例中之某些實施例中,將某些黏性提示視情況及/或選擇性地記錄於一或多個映射項目中且視情況記錄於一或多個陰影映射項目中(例如,在圖7之741及/或781、圖8之842、852及/或872以及圖13A/13B之1328中之一或多者及/或與其相關之處理中)。舉例而言,一資料類型提示用作一黏性提示且記錄於供應有該提示之一LBA之映射項目中,且視情況及/或選擇性地提供一對應陰影映射更新。根據記錄於LBA之映射項目中之資料類型提示而處理LBA之後續參考。可用作黏性提示之提示之其他實例係一資料存取類型提示、一資料定序提示、一資料關係提示及一資料目的地提示。
在各種實施例中,(例如)藉由一或多個狀態機實施由圖6至圖13A/13B所闡述之運作及/或功能之全部或任何部分。狀態機之實例性實施方案包含硬體(例如,邏輯閘及/或電路、專用狀態機電路或固線式控制電路)、軟體(例如,韌體或微碼)或硬體與軟體之組合。在某些實施例中,狀態機中之一或多者至少部分地經由韌體、驅動程式及/或應用程式實施。在各種實施例中,狀態機中之一或 多者部分地經由圖1A之SSD控制器100、部分地經由由CPU核心172執行之韌體、部分地經由圖1B之韌體106、部分地經由驅動程式107及/或部分地藉由應用程式109實施。
在各種實施例中,由圖6至圖13A/13B闡述之運作及/或功能之全部或任何部分(例如)藉由命令管理173、轉譯管理177及或圖1A之映射141中之任何一或多者、在該任何一或多者之控制下及/或根據該任何一或多者、經由硬體及/或韌體技術之任何組合而實施。
在各種實施例中,一HBA將一主機之元件(例如,一或多個處理器及一或多個記憶體)耦合至一I/O裝置(例如,一I/O儲存裝置,諸如一SATA磁碟機)。至處理器及/或記憶體之HBA之耦合係至少部分地經由一或多個I/O裝置通信介面、匯流排及/或通道(諸如,一PCIe介面)。該等處理器中之某些處理器執行與I/O裝置通信之OS、驅動程式及/或應用程式軟體元件。在某些實施例中,主機之元件與HBA之間的輸送與AHCI相容,且透過HBA將T13相容ATA命令傳遞至I/O裝置之一SSD之一SATA或一PCIe介面。在其他實施例中,主機之元件與HBA之間的輸送與NVM Express相容,且透過HBA將具有類似於T13相容ATA命令之至少某些屬性之命令傳遞至I/O裝置之一SSD之一PCIe介面。在某些實施例中,HBA包含於主機中,而其他實施例中,HBA包含於I/O裝置中。在某些實施例中,省略HBA,且將I/O裝置耦合(在不具有一明確HBA之情況下)至一或多個 I/O裝置通信介面、匯流排及/或通道(諸如,一PCIe介面)。
舉例而言,在圖1B之上下文中,主機102包含一HBA,其達成運行於主機上之軟體(例如,OS 105、驅動程式107及/或應用程式109)與SSD 101(例如,具有包含於主機介面111中之一SATA相容主機介面)之間的通信。該通信包含將命令自該軟體遞送至該SSD。命令之輸送係經由AHCI進行的,且將T13相容ATA命令提供至SSD之SATA介面。因此,諸如關於圖6至圖13A/13B所闡述之命令係經由AHCI輸送而遞送。
對於另一實例,在圖1B之上下文中,主機102包含一晶片集,其達成與切換器/光纖/中間控制器103進行之通信,且中間介面104及外部介面110係PCIe相容的(例如,SSD 101具有包含於主機介面111中之一PCIe介面)。該晶片集及切換器/光纖/中間控制器103達成主機之OS、驅動程式及/或應用程式軟體與SSD 101之間的通信(包含命令之遞送)。命令之輸送係經由NVM Express進行的,且將具有類似於T13相容ATA命令之至少某些屬性之命令提供至SSD之PCIe介面。因此,諸如關於圖6至圖13A/13B所闡述之命令係經由NVM Express輸送而遞送。
實例性實施技術
在某些實施例中,藉由與由一電腦系統進行之處理相容之一規範規定由以下各項執行之運作之全部或若干部分之各種組合:一I/O裝置或其部分,例如,經啟用而用於與 一主機(諸如,一計算主機)相互運作之一I/O裝置之一SSD控制器,例如,具有快閃記憶體、一計算主機快閃記憶體控制器及/或一SSD控制器(諸如,圖1A之SSD控制器100),以及一處理器、微處理器、系統單晶片、特殊應用積體電路、硬體加速器或提供前面所提及運作之全部或若干部分之其他電路之若干部分。該規範係根據各種說明,諸如硬體說明語言、電路說明、網路連線表說明、遮罩說明或佈局說明。實例性說明包含:Verilog、VHDL、SPICE、SPICE變型(諸如PSpice)、IBIS、LEF、DEF、GDS-II、OASIS或其他說明。在各種實施例中,處理包含解譯、編譯、模擬及合成之任何組合以產生、驗證或規定適於包含於一或多個積體電路上之邏輯及/或電路。根據各種實施例,每一積體電路可根據多種技術來設計及/或製造。該等技術包含一可程式化技術(諸如,一場可程式化閘陣列積體電路或遮罩可程式化閘陣列積體電路)、一半定製技術(諸如,一完全或部分地基於記憶體胞之積體電路)及一全定製技術(諸如,實質上特定之一積體電路)、其任何組合或與積體電路之設計及/或製造相容之任何其他技術。
在某些實施例中,由具有儲存於其中之一指令集之一電腦可讀媒體闡述之運作之全部或若干部分之各種組合係藉由一或多個程式指令之執行及/或解譯、藉由一或多個源語言及/或指令碼語言陳述式之解譯及/或編譯或者藉由執行藉由編譯、轉譯及/或解譯在程式設計及/或指令碼設計 語言陳述式中表達之資訊而產生之二進制指令來執行。該等陳述式與任何標準程式設計或指令碼設計語言(諸如C、C++、Fortran、Pascal、Ada、Java、VBscript及Shell)相容。該等程式指令、語言陳述式或二進制指令中之一或多者係視情況儲存於一或多個電腦可讀儲存媒體元件上。在各種實施例中,該等程式指令之某些、全部或各種部分係實現為一或多個功能、常式、次常式、內嵌常式、程序、巨集或其部分。
總論
已僅出於方便製備文字與圖式之目的而在說明中做出某些挑選,且除非存在對相反內容之一指示,否則不應將該等挑選本身視為傳達就所闡述實施例之結構或運作之額外資訊。該等挑選之實例包含:用於圖式編號之設計之特定組織或指派及用於識別及引用該等實施例之特徵及元件之元件識別符(例如圖說文字或數字指示符)之特定組織或指派。
措詞r包含(includes或including)」係特定地意欲被視為闡述開放範疇之邏輯組之抽象詞,且除非明確地後續接著措詞「在...內(within)」否則不意欲表達實體含有。
儘管已出於清晰說明及理解之目的在某些細節上闡述上述實施例,但本發明並不限於所提供之細節。存在本發明之諸多實施例。該等所揭示實施例僅係例示性而非限制性的。
應理解,構造、配置及使用之諸多變化形式可能與本說 明一致,且在所發佈之專利之申請專利範圍之範疇內。舉例而言,互連及功能單元位元寬度、時脈速度及所使用技術類型係可根據每一組件區塊中之各種實施例變化。賦予互連及邏輯之名稱僅係例示性的,且不應被視為限制所闡述之概念。流程圖及流程圖過程、動作及功能元件之次序及配置係可根據各種實施例變化。此外,除非明確地陳述為相反,否則所規定之值範圍、所使用之最大及最小值或其他特定規範(諸如,快閃記憶體技術類型;及暫存器與緩衝器中之項目或級之數目)僅係所闡述實施例之彼等、預期追蹤實施技術中之改良及改變且不應被視為限制。
此項技術中習知之在功能上等效之技術可替代所闡述之彼等技術來採用以實施各種組件、子系統、運作、功能、常式、次常式、內嵌常式、程序、巨集或其部分。亦應理解,依據實施例相依之設計約束及較快處理之技術趨勢(促進先前在硬體中之功能遷移至軟體中)及較高整合密度(促進先前在軟體中之功能遷移至硬體中),諸多實施例之功能態樣可在硬體(例如,通常為專用電路)或軟體(例如,經由某一方式之經程式化控制器或處理器)中選擇性地實現。各種實施例中之特定變化形式包含但不限於:分割差異;不同的形式因子及組態;不同作業系統及其他系統軟體之使用;不同介面標準、網路協定或通信鏈路之使用;及在根據一特定應用程式之獨特工程及商務約束實施本文中所闡述之概念時將預期之其他變化形式。
已藉助超出所闡述實施例之諸多態樣之一最小實施方案 所要求之細節及環境上下文來闡述該等實施例。熟習此項技術者將認識到,某些實施例在不更改其餘元件之間的基本協作之情況下省略所揭示之組件及特徵。因此,應理解,所揭示之大部分細節並不要求實施所闡述之實施例之各種態樣。在其餘元件與先前技術可區分之情況下,省略之組件及特徵並非限制本文中所闡述之概念。
所有此等設計之變化形式係在所闡述實施例傳達之教示內之非實質性改變。亦應理解,本文中所闡述實施例對其他計算及網路連結應用程式具有廣泛的可應用性,且不限於所闡述實施例之特定應用或產業。因此,本發明應視為包含涵蓋於所發佈專利之申請專利範圍之範疇內之所有可能修改及變化形式。
100‧‧‧固態磁碟控制器
101‧‧‧固態磁碟
102‧‧‧主機
103‧‧‧(選用)切換器/光纖/中間控制器
104‧‧‧中間介面
105‧‧‧作業系統
106‧‧‧韌體(FW)
107‧‧‧驅動程式
107D‧‧‧虛線箭頭(主機軟體←→輸入/輸出裝置通信)
108‧‧‧陰影映射
109‧‧‧應用程式
109D‧‧‧虛線箭頭(經由驅動程式之應用程式←→輸入/輸出裝置通信)
109V‧‧‧虛線箭頭(經由虛擬函式之應用程式←→輸入/輸出裝置通信)
110‧‧‧外部介面
111‧‧‧主機介面
112C‧‧‧(選用)卡記憶體
112H‧‧‧主機記憶體
113‧‧‧標籤追蹤
114‧‧‧多裝置管理軟體
115‧‧‧主機軟體
116‧‧‧輸入/輸出卡
117‧‧‧輸入/輸出及儲存裝置/資源
118‧‧‧伺服器
119‧‧‧區域網路/廣域網路
121‧‧‧資料處理
123‧‧‧引擎
131‧‧‧緩衝器
133‧‧‧直接記憶體存取
135‧‧‧錯誤校正碼-X
137‧‧‧記憶體
141‧‧‧映射
143‧‧‧表
151‧‧‧回收器
161‧‧‧錯誤校正碼
171‧‧‧中央處理單元
172‧‧‧中央處理單元核心
173‧‧‧命令管理
175‧‧‧緩衝器管理
177‧‧‧轉譯管理
179‧‧‧一致性管理
180‧‧‧記憶體介面
181‧‧‧裝置管理
182‧‧‧身份管理
190‧‧‧裝置介面
191‧‧‧裝置介面邏輯
192‧‧‧快閃裝置
193‧‧‧排程
194‧‧‧快閃晶粒
199‧‧‧非揮發性記憶體
211‧‧‧邏輯區塊位址
213‧‧‧邏輯頁編號
215‧‧‧邏輯位移
221‧‧‧邏輯頁編號之映射資訊
223‧‧‧讀取單元位址
225‧‧‧讀取單元之長度
311‧‧‧讀取資料
313‧‧‧第一讀取單元
315‧‧‧最後讀取單元
401A‧‧‧讀取單元
401B‧‧‧讀取單元
410B‧‧‧標頭標記(HM)
411A‧‧‧標頭1
411B‧‧‧標頭1
412B‧‧‧標頭2
419A‧‧‧標頭N
419B‧‧‧標頭N
421A‧‧‧資料位元組
421B‧‧‧資料位元組
422B‧‧‧資料位元組
429B‧‧‧資料位元組
431A‧‧‧選用填補位元組
431B‧‧‧選用填補位元組
501‧‧‧標頭
511‧‧‧類型
513‧‧‧最後指示符
515‧‧‧旗標
517‧‧‧邏輯頁編號
519‧‧‧長度
521‧‧‧位移
600‧‧‧輸入/輸出裝置命令處理,通常
601‧‧‧輸入/輸出裝置斷電或重設狀態
601A‧‧‧啟動
611‧‧‧輸入/輸出裝置初始化
621‧‧‧接收命令?
621N‧‧‧否
621Y‧‧‧是
631‧‧‧命令具有或使用提示?
631N‧‧‧否
631Y‧‧‧是
641‧‧‧處理使用提示之命令
651‧‧‧處理命令(無提示)
661‧‧‧發送命令狀態
700‧‧‧輸入/輸出裝置命令處理,通常
701‧‧‧輸入/輸出裝置斷電或重設狀態
701A‧‧‧啟動
711‧‧‧輸入/輸出裝置初始化
721‧‧‧接收命令?
721N‧‧‧否
721Y‧‧‧是
731‧‧‧命令用於提示模式?
731N‧‧‧否
731Y‧‧‧是
741‧‧‧進入/退出提示模式
751‧‧‧在當前模式中處理命令
761‧‧‧發送命令狀態
771‧‧‧退出提示模式?
771N‧‧‧否
771Y‧‧‧是
781‧‧‧退出提示模式
800‧‧‧輸入/輸出裝置命令處理,通常
801‧‧‧輸入/輸出裝置斷電或重設狀態
801A‧‧‧啟動
811‧‧‧輸入/輸出裝置初始化
821‧‧‧接收命令?
821N‧‧‧否
821Y‧‧‧是
831‧‧‧具有或使用提示?
831N‧‧‧否
831Y‧‧‧是
832‧‧‧在當前模式中藉助提示處理
841‧‧‧進入提示模式?
841N‧‧‧否
841Y‧‧‧是
842‧‧‧進入特定提示模式(當前模式+=特定模式)
851‧‧‧退出提示模式?
851N‧‧‧否
851Y‧‧‧是
852‧‧‧退出特定提示模式(當前模式-=特定模式)
861‧‧‧退出所有提示模式?
861N‧‧‧否
861Y‧‧‧是
862‧‧‧退出所有提示模式(當前模式=預設模式)
872‧‧‧在當前模式中處理(無提示)
881‧‧‧發送狀態
882‧‧‧(選用)退出提示模式
900‧‧‧輸入/輸出裝置命令處理,通常
901‧‧‧輸入/輸出裝置斷電或重設狀態
901A‧‧‧啟動
911‧‧‧輸入/輸出裝置初始化
921‧‧‧將初始映射傳送至主機(視情況在背景中)
931‧‧‧接收命令?
931N‧‧‧否
931Y‧‧‧是
941‧‧‧提供位置?
941N‧‧‧否
941Y‧‧‧是
951‧‧‧判定位置(例如,藉由映射存取)
961‧‧‧處理命令
971‧‧‧發送命令狀態(視情況具有用於寫入之映射更新)
981‧‧‧欲發送映射更新?
981N‧‧‧否
981Y‧‧‧是
991‧‧‧將映射更新傳送至主機(視情況在背景中)(視情況在傳送之前累積多個更新)
1000‧‧‧主機陰影映射處理,通常
1001‧‧‧輸入/輸出裝置斷電或重設狀態
1001A‧‧‧啟動
1011‧‧‧將陰影映射初始化為全部無效
1021‧‧‧接收初始映射或更新?
1021N‧‧‧否
1021Y‧‧‧是
1031‧‧‧更新陰影映射
1100‧‧‧主機命令發佈,通常
1101‧‧‧輸入/輸出裝置斷電或重設狀態
1101A‧‧‧啟動
1111‧‧‧命令?
1111N‧‧‧否
1111Y‧‧‧是
1121‧‧‧解碼命令
1121O‧‧‧其他
1121R‧‧‧讀取
1121T‧‧‧修整
1121W‧‧‧寫入
1131‧‧‧將陰影映射中之邏輯區塊位址標記為無效
1141‧‧‧將陰影映射中之邏輯區塊位址標記為經修整
1151‧‧‧在陰影映射中邏輯區塊位址有效?
1151N‧‧‧否
1151Y‧‧‧是
1161‧‧‧發佈命令
1171‧‧‧將命令發佈為預映射讀取(具有來自陰影映射之位置)
1200‧‧‧輸入/輸出裝置睡眠進入/退出,通常
1201‧‧‧輸入/輸出裝置斷電或重設狀態
1201A‧‧‧啟動
1211‧‧‧輸入/輸出裝置初始化
1221‧‧‧作用運作狀態
1231‧‧‧進入睡眠狀態?
1231N‧‧‧否
1231Y‧‧‧是
1241‧‧‧將內部狀態保存於保存/還原記憶體中
1251‧‧‧睡眠狀態
1261‧‧‧退出睡眠狀態?
1261N‧‧‧否
1261Y‧‧‧是
1271‧‧‧自保存/還原記憶體還原內部狀態
1300A‧‧‧輸入/輸出裝置及計算主機相互運作,通常
1300B‧‧‧輸入/輸出裝置及計算主機相互運作,通常
1301‧‧‧輸入/輸出裝置斷電/睡眠或重設狀態
1301D‧‧‧啟動
1301H‧‧‧啟動
1310A‧‧‧主機運作
1310B‧‧‧主機運作
1311‧‧‧將陰影映射初始化為全部無效
1312‧‧‧初始化/更新陰影映射
1312G‧‧‧產生
1313‧‧‧產生命令(選用提示)
1314R‧‧‧參考陰影映射?
1314RN‧‧‧否
1314RY‧‧‧是
1314V‧‧‧陰影映射有效項目?
1314VN‧‧‧否
1314VY‧‧‧是
1315D‧‧‧至裝置
1315M‧‧‧發送命令/(提示)及陰影映射資訊
1315N‧‧‧發送命令/(提示),無陰影映射資訊
1315S‧‧‧發送
1316‧‧‧選擇性地修改陰影映射資訊
1319‧‧‧接收狀態
1320A‧‧‧裝置運作
1320B‧‧‧裝置運作
1321‧‧‧輸入/輸出裝置初始化及條件狀態自記憶體還原
1322‧‧‧將局部映射(全部或更新)發送至主機
1322C‧‧‧命令
1322H‧‧‧至主機
1322S‧‧‧睡眠
1323‧‧‧接收睡眠請求且將狀態保存至記憶體
1325‧‧‧接收命令/(提示)(及陰影映射資訊)
1326‧‧‧陰影映射資訊?
1326N‧‧‧否
1326U‧‧‧不需要
1326Y‧‧‧是
1327‧‧‧參考局部映射
1328‧‧‧在當前模式中處理命令/(提示)
1329‧‧‧發送狀態
1329H‧‧‧至主機
圖1A圖解說明包含一固態磁碟(SSD)控制器之一SSD之一實施例之選定細節,該SSD控制器與經啟用而與一主機(諸如,一計算主機)相互協作之一I/O裝置(諸如,一I/O儲存裝置)中之運作相容。
圖1B圖解說明包含圖1A之SSD之一或多個例項之系統之各種實施例之選定細節。
圖2圖解說明映射一邏輯區塊位址(LBA)之一邏輯頁編號(LPN)部分之一實施例之選定細節。
圖3圖解說明在一讀取單元位址處存取一非揮發性記憶體(NVM)以產生組織為各種讀取單元(共同地具有按讀取單元之配量所量測之一長度)之讀取資料之一實施例之選 定細節。
圖4A圖解說明一讀取單元之一實施例之選定細節。
圖4B圖解說明一讀取單元之另一實施例之選定細節。
圖5圖解說明具有若干欄位之一標頭之一實施例之選定細節。
圖6圖解說明一I/O裝置處之處理命令及選用提示資訊之一實施例之選定細節之一流程圖。
圖7圖解說明一I/O裝置處之處理命令及選用提示資訊之另一實施例之一流程圖。
圖8圖解說明一I/O裝置處之處理命令及選用提示資訊之又一實施例之一流程圖。
圖9圖解說明一I/O裝置處之處理命令及選用陰影映射資訊之一實施例之一流程圖。
圖10圖解說明一計算主機處之維持陰影映射資訊之一實施例之一流程圖。
圖11圖解說明一計算主機處之發佈命令及選用陰影映射資訊之一實施例之一流程圖。
圖12圖解說明進入及退出一I/O裝置之一睡眠狀態之一實施例之一流程圖。
圖13A及圖13B共同地圖解說明I/O裝置及計算主機相互運作之一實施例之一流程圖。
800‧‧‧輸入/輸出裝置命令處理,通常
801‧‧‧輸入/輸出裝置斷電或重設狀態
801A‧‧‧啟動
811‧‧‧輸入/輸出裝置初始化
821‧‧‧接收命令?
821N‧‧‧否
821Y‧‧‧是
831‧‧‧具有或使用提示?
831N‧‧‧否
831Y‧‧‧是
832‧‧‧在當前模式中藉助提示處理
841‧‧‧進入提示模式?
841N‧‧‧否
841Y‧‧‧是
842‧‧‧進入特定提示模式(當前模式+=特定模式)
851‧‧‧退出提示模式?
851N‧‧‧否
851Y‧‧‧是
852‧‧‧退出特定提示模式(當前模式-=特定模式)
861‧‧‧退出所有提示模式?
861N‧‧‧否
861Y‧‧‧是
862‧‧‧退出所有提示模式(當前模式=預設模式)
872‧‧‧在當前模式中處理(無提示)
881‧‧‧發送狀態
882‧‧‧(選用)退出提示模式

Claims (56)

  1. 一種方法,其包括:在一輸入/輸出(I/O)裝置處且自一計算主機接收包括一規格之一命令,該規格包括複數個非標準規格中之至少一者,該等非標準規格包括一或多個非標準命令修改符;回應於該規格包括該等非標準命令修改符中之一特定者,根據該特定非標準命令修改符執行該命令;及其中該等非標準規格中之至少一者識別複數個資料目的地中之一特定者,該等資料目的地包括複數個資料頻帶。
  2. 如請求項1之方法,其中接收包括用以啟用一特定非標準修改符之一模式設定規格之一模式設定命令導致在根據該特定非標準修改符視情況及/或選擇性地處理該模式設定命令之後接收之一標準命令。
  3. 如請求項1之方法,其中該等資料頻帶對應於一資料庫日誌資料頻帶、一熱資料頻帶及一冷資料頻帶中之一或多者。
  4. 如請求項3之方法,其中為資料庫日誌類型資料保留該資料庫日誌資料頻帶。
  5. 如請求項4之方法,其中視情況及/或選擇性地自動刪除該資料庫日誌資料頻帶中之最舊資料。
  6. 如請求項3之方法,其中將該熱資料頻帶至少用於自該計算主機始發之資料。
  7. 如請求項6之方法,其中該計算主機包括以下各項中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一小筆電電腦,一個人數位助理(PDA),一媒體播放器,一媒體錄製器,一數位相機,一蜂巢式手機,一無線手持電話,及一電子遊戲機。
  8. 如請求項6之方法,其中回應於該計算主機寫入一相對長順序串流,該熱資料頻帶之大小增長。
  9. 如請求項3之方法,其中將該冷資料頻帶至少用於來自一回收器之資料。
  10. 如請求項1之方法,其中該等非標準規格中之至少一者規定以下各項中之一或多者:一資料類型; 一資料存取類型;資料定序;資料關係;及一命令關係。
  11. 如請求項1之方法,其中該命令包括至少部分地由該計算主機自耦合至該計算主機之一I/O卡之一記憶體裝置獲得之位置資訊。
  12. 一種方法,其包括:在一計算主機處將一命令提供至一輸入/輸出(I/O)裝置,該命令包括一規格,該規格包括複數個非標準規格中之至少一者,該等非標準規格包括一或多個非標準命令修改符;其中回應於該規格包括該等非標準命令修改符中之一特定者,該I/O裝置根據該特定非標準命令修改符執行該命令;且其中該等非標準規格中之至少一者識別複數個資料目的地中之一特定者,該等資料目的地包括複數個資料頻帶。
  13. 如請求項12之方法,其中接收包括用以啟用一特定非標準修改符之一模式設定規格之一模式設定命令導致在根據該特定非標準修改符視情況及/或選擇性地處理該模式設定命令之後接收之一標準命令。
  14. 如請求項12之方法,其中該等資料頻帶對應於一資料庫日誌資料頻帶、一熱資料頻帶及一冷資料頻帶中之一或 多者。
  15. 如請求項14之方法,其中為資料庫日誌類型資料保留該資料庫日誌資料頻帶。
  16. 如請求項15之方法,其中視情況及/或選擇性地自動刪除該資料庫日誌資料頻帶中之最舊資料。
  17. 如請求項14之方法,其中將該熱資料頻帶至少用於自該計算主機始發之資料。
  18. 如請求項17之方法,其中該計算主機包括以下各項中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一小筆電電腦,一個人數位助理(PDA),一媒體播放器,一媒體錄製器,一數位相機,一蜂巢式手機,一無線手持電話,及一電子遊戲機。
  19. 如請求項17之方法,其中回應於該計算主機寫入一相對長順序串流,該熱資料頻帶之大小增長。
  20. 如請求項14之方法,其中將該冷資料頻帶至少用於來自一回收器之資料。
  21. 如請求項12之方法,其中該等非標準規格中之至少一者規定以下各項中之一或多者:一資料類型;一資料存取類型;資料定序;資料關係;及一命令關係。
  22. 如請求項12之方法,其中該命令包括至少部分地由該計算主機自耦合至該計算主機之一I/O卡之一記憶體裝置獲得之位置資訊。
  23. 一種方法,其包括:在一輸入/輸出(I/O)裝置處且自一計算主機接收包括一規格之一命令,該規格包括複數個非標準規格中之至少一者,該等非標準規格包括一或多個非標準命令修改符;回應於該規格包括該等非標準命令修改符中之一特定者,根據該特定非標準命令修改符執行該命令,該根據該特定非標準命令修改符執行該命令包括:將該非標準命令修改符之一指示與該命令之資料一起儲存;及存取該指示以判定修整而非回收該資料之全部或任何 部分。
  24. 如請求項23之方法,其中該等非標準規格中之至少一者規定以下各項中之一或多者:一資料類型;一資料存取類型;資料定序;資料關係;及一命令關係。
  25. 如請求項23之方法,其中該命令包括至少部分地由該計算主機自耦合至該計算主機之一I/O卡之一記憶體裝置獲得之位置資訊。
  26. 一種系統,其包括:一輸入/輸出(I/O)裝置,其包括用於自一計算主機接收一命令之構件,該命令包括一規格,該規格包括複數個非標準規格中之至少一者,該等非標準規格包括一或多個非標準命令修改符;其中該I/O裝置進一步包括用於回應於該規格包括該等非標準命令修改符中之一特定者而根據該特定非標準命令修改符執行該命令之構件;且其中該等非標準規格中之至少一者識別複數個資料目的地中之一特定者,該等資料目的地包括複數個資料頻帶。
  27. 如請求項26之系統,其中接收包括用以啟用一特定非標準修改符之一模式設定規格之一模式設定命令導致在根 據該特定非標準修改符視情況及/或選擇性地處理該模式設定命令之後接收之一標準命令。
  28. 如請求項26之系統,其中該等資料頻帶對應於一資料庫日誌資料頻帶、一熱資料頻帶及一冷資料頻帶中之一或多者。
  29. 如請求項28之系統,其中該資料庫日誌資料頻帶經保留而用於資料庫日誌類型資料。
  30. 如請求項29之系統,其中該資料庫日誌資料頻帶中之最舊資料視情況及/或選擇性地經自動刪除。
  31. 如請求項28之系統,其中該熱資料頻帶至少用於自該計算主機始發之資料。
  32. 如請求項31之系統,其中該計算主機係以下各項中之任何一者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一小筆電電腦,一個人數位助理(PDA),一媒體播放器,一媒體錄製器, 一數位相機,一蜂巢式手機,一無線手持電話,及一電子遊戲機。
  33. 如請求項31之系統,其中回應於該計算主機寫入一相對長順序串流,該熱資料頻帶之大小增長。
  34. 如請求項28之系統,其中該冷資料頻帶至少用於來自一回收器之資料。
  35. 如請求項26之系統,其中該等非標準規格中之至少一者規定以下各項中之一或多者:一資料類型;一資料存取類型;資料定序;資料關係;及一命令關係。
  36. 如請求項26之系統,其中該命令包括至少部分地由該計算主機自耦合至該計算主機之一I/O卡之一記憶體裝置獲得之位置資訊。
  37. 一種系統,其包括:一計算主機,其包括用於將一命令提供至一輸入/輸出(I/O)裝置之構件,該命令包括一規格,該規格包括複數個非標準規格中之至少一者,該等非標準規格包括一或多個非標準命令修改符;其中回應於該規格包括該等非標準命令修改符中之一 特定者,該I/O裝置根據該特定非標準命令修改符執行該命令;且其中該等非標準規格中之至少一者識別複數個資料目的地中之一特定者,該等資料目的地包括複數個資料頻帶。
  38. 如請求項37之系統,其中接收包括用以啟用一特定非標準修改符之一模式設定規格之一模式設定命令導致在根據該特定非標準修改符視情況及/或選擇性地處理該模式設定命令之後接收之一標準命令。
  39. 如請求項37之系統,其中該等資料頻帶對應於一資料庫日誌資料頻帶、一熱資料頻帶及一冷資料頻帶中之一或多者。
  40. 如請求項39之系統,其中該資料庫日誌資料頻帶經保留而用於資料庫日誌類型資料。
  41. 如請求項40之系統,其中該資料庫日誌資料頻帶中之最舊資料視情況及/或選擇性地經自動刪除。
  42. 如請求項39之系統,其中該熱資料頻帶至少用於自該計算主機始發之資料。
  43. 如請求項42之系統,其中該計算主機係以下各項中之任何一者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器, 一個人電腦(PC),一膝上型電腦,一筆記型電腦,一小筆電電腦,一個人數位助理(PDA),一媒體播放器,一媒體錄製器,一數位相機,一蜂巢式手機,一無線手持電話,及一電子遊戲機。
  44. 如請求項42之系統,其中回應於該計算主機寫入一相對長順序串流,該熱資料頻帶之大小增長。
  45. 如請求項39之系統,其中該冷資料頻帶至少用於來自一回收器之資料。
  46. 如請求項37之系統,其中該等非標準規格中之至少一者規定以下各項中之一或多者:一資料類型;一資料存取類型;資料定序;資料關係;及一命令關係。
  47. 如請求項37之系統,其中該命令包括至少部分地由該計算主機自耦合至該計算主機之一I/O卡之一記憶體裝置獲 得之位置資訊。
  48. 一種系統,其包括:一輸入/輸出(I/O)裝置,其包括用於自一計算主機接收一命令之構件,該命令包括一規格,該規格包括複數個非標準規格中之至少一者,該等非標準規格包括一或多個非標準命令修改符;其中該I/O裝置進一步包括用於回應於該規格包括該等非標準命令修改符中之一特定者而根據該特定非標準命令修改符執行該命令之構件,用於根據該特定非標準命令修改符執行該命令之該構件包括用於將該非標準命令修改符之一指示與該命令之資料一起儲存之構件;及用於存取該指示以判定修整而非回收該資料之全部或任何部分之構件。
  49. 如請求項48之系統,其中接收包括用以啟用一特定非標準修改符之一模式設定規格之一模式設定命令導致在根據該特定非標準修改符視情況及/或選擇性地處理該模式設定命令之後接收之一標準命令。
  50. 如請求項48之系統,其中該命令包括至少部分地由該計算主機自耦合至該計算主機之一I/O卡之一記憶體裝置獲得之位置資訊。
  51. 一種系統,其包括:用於在一輸入/輸出(I/O)裝置中經由一外部介面自一計算主機接收一命令之構件;用於確定該命令之一類型之構件; 用於回應於該類型係一讀取命令而存取一映射以轉譯該命令之一邏輯區塊位址(LBA)以獲得選擇性地包括一非揮發性記憶體(NVM)中之一位置之經轉譯LBA資訊之構件;用於回應於該類型係一預映射讀取命令而依據該預映射讀取命令之資訊且在不使用該映射之情況下判定該NVM中之該位置之構件;用於傳回對應於該位置之資料之構件;且其中該資訊包括該經轉譯LBA資訊之至少一部分。
  52. 如請求項51之系統,其中該位置係一第一位置,該資訊係第一資訊,且該系統進一步包括:用於回應於該類型係一寫入命令而將該寫入命令之資料寫入至該NVM中之一第二位置之構件;用於回應於該類型係一寫入命令而將該寫入命令之一LBA與該第二位置之間的一關聯性儲存於該映射中之構件;用於回應於該類型係一寫入命令而將包括根據該第二位置之第二資訊之一更新發送至該映射之一陰影複本之構件;且其中該第一資訊係至少部分地自該陰影複本獲得,且該陰影複本至少部分地儲存於耦合至該計算主機之一I/O卡之一記憶體裝置中。
  53. 一種系統,其包括:用於在一輸入/輸出(I/O)裝置處接收進入一低電力狀 態之一指示之構件;用於將該I/O裝置之內部狀態保存於一計算主機之一系統可存取記憶體中之構件;用於在該I/O裝置處接收退出該低電力狀態之一指示之構件;及用於自該系統可存取記憶體還原該I/O裝置之該內部狀態之構件。
  54. 如請求項53之系統,其中該系統可存取記憶體包括耦合至該計算主機之一I/O卡之一記憶體裝置,該I/O裝置之該內部狀態包括選擇性地使該I/O裝置之邏輯區塊位址(LBA)與該I/O裝置之一非揮發性記憶體(NVM)中之位置相關聯之一映射之至少一部分之一陰影複本,且該映射非揮發性地儲存於該NVM中。
  55. 一種系統,其包括:用於在一輸入/輸出(I/O)裝置處接收包括一標準命令及一非標準修改符之一規格之一經擴展命令之構件;用於根據該非標準修改符執行該標準命令之構件;且藉此由於使用該非標準修改符來修改該標準命令之該執行而改良系統級效能。
  56. 如請求項55之系統,其中該經擴展命令包括至少部分地由一計算主機自耦合至該計算主機之一I/O卡之一記憶體裝置獲得之位置資訊。
TW101128817A 2011-08-09 2012-08-09 輸入/輸出裝置及計算主機相互運作 TWI584125B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161521739P 2011-08-09 2011-08-09
US201161531551P 2011-09-06 2011-09-06
US201161543666P 2011-10-05 2011-10-05

Publications (2)

Publication Number Publication Date
TW201314464A true TW201314464A (zh) 2013-04-01
TWI584125B TWI584125B (zh) 2017-05-21

Family

ID=47668897

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101128817A TWI584125B (zh) 2011-08-09 2012-08-09 輸入/輸出裝置及計算主機相互運作

Country Status (7)

Country Link
US (4) US9389805B2 (zh)
EP (1) EP2742429A4 (zh)
JP (1) JP2014522066A (zh)
KR (2) KR101438716B1 (zh)
CN (1) CN103858116B (zh)
TW (1) TWI584125B (zh)
WO (1) WO2013022915A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI637316B (zh) * 2013-08-28 2018-10-01 威盛電子股份有限公司 多核心微處理器動態重新配置
TWI702500B (zh) * 2015-12-30 2020-08-21 南韓商三星電子股份有限公司 使用多串流的系統、方法以及製品
TWI746510B (zh) * 2016-04-01 2021-11-21 美商英特爾公司 用於在資料儲存裝置上管理不可變資料之技術

Families Citing this family (146)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
WO2013022915A1 (en) 2011-08-09 2013-02-14 Lsi Corporation I/o device and computing host interoperation
US8738866B2 (en) * 2012-05-02 2014-05-27 Hitachi, Ltd. Storage system and control method therefor
US20140047210A1 (en) * 2012-08-08 2014-02-13 Lsi Corporation Trim mechanism using multi-level mapping in a solid-state media
US9207749B2 (en) * 2012-08-28 2015-12-08 Intel Corporation Mechanism for facilitating efficient operations paths for storage devices in computing systems
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9071281B2 (en) * 2013-03-10 2015-06-30 Intel Corporation Selective provision of error correction for memory
US9585008B2 (en) * 2013-04-19 2017-02-28 Qualcomm Incorporated Apparatus and methods for signaling out-of-standard capability in wireless communication networks
US9882984B2 (en) * 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
KR101547317B1 (ko) * 2013-09-30 2015-08-26 주식회사 유니테스트 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템
TWI516921B (zh) * 2013-10-02 2016-01-11 群聯電子股份有限公司 資料處理方法、記憶體儲存裝置與記憶體控制電路單元
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
KR102103543B1 (ko) * 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
US10013344B2 (en) 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
US9509769B2 (en) * 2014-02-28 2016-11-29 Sap Se Reflecting data modification requests in an offline environment
US9990298B2 (en) 2014-05-12 2018-06-05 Western Digital Technologies, Inc System and method for caching solid state device read request results
EP3048775B1 (en) * 2014-05-29 2018-03-14 Huawei Technologies Co. Ltd. Service processing method, related device and system
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
TWI540582B (zh) * 2014-07-10 2016-07-01 群聯電子股份有限公司 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
KR102249810B1 (ko) * 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US20160034185A1 (en) * 2014-07-30 2016-02-04 Lsi Corporation Host-based device driver splitting of input/out for redundant array of independent disks systems
CN106575270B (zh) * 2014-08-21 2020-01-07 松下知识产权经营株式会社 记录介质、适配器以及信息处理装置
CN104281533B (zh) * 2014-09-18 2018-03-20 深圳市中博科创信息技术有限公司 一种存储数据的方法及装置
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9558125B2 (en) * 2014-10-27 2017-01-31 Sandisk Technologies Llc Processing of un-map commands to enhance performance and endurance of a storage device
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US10423339B2 (en) * 2015-02-02 2019-09-24 Western Digital Technologies, Inc. Logical block address mapping for hard disk drives
WO2016135618A1 (en) * 2015-02-26 2016-09-01 Strato Scale Ltd. Ordering schemes for network and storage i/o requests for minimizing workload idle time and inter-workload interference
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US9772796B2 (en) 2015-04-09 2017-09-26 Sandisk Technologies Llc Multi-package segmented data transfer protocol for sending sub-request to multiple memory portions of solid-state drive using a single relative memory address
US10437747B2 (en) * 2015-04-10 2019-10-08 Rambus Inc. Memory appliance couplings and operations
US9864545B2 (en) 2015-04-14 2018-01-09 Sandisk Technologies Llc Open erase block read automation
US9753653B2 (en) 2015-04-14 2017-09-05 Sandisk Technologies Llc High-priority NAND operations management
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US9959206B2 (en) 2015-05-19 2018-05-01 Toshiba Memory Corporation Memory system and method of controlling cache memory
US9690517B2 (en) * 2015-05-22 2017-06-27 Texas Instruments Incorporated Dual-mode error-correction code/write-once memory codec
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
US11983138B2 (en) 2015-07-26 2024-05-14 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US10127968B2 (en) 2015-08-03 2018-11-13 Intel Corporation Method and apparatus for completing pending write requests to volatile memory prior to transitioning to self-refresh mode
JP6460940B2 (ja) * 2015-08-06 2019-01-30 東芝メモリ株式会社 記憶装置およびデータ退避方法
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
US10055142B1 (en) * 2015-10-13 2018-08-21 Maxlinear Asia Singapore Pte Ltd. Apparatus and method for command processing for a fast block input/output device
US10108340B2 (en) * 2015-10-21 2018-10-23 Western Digital Technologies, Inc. Method and system for a common processing framework for memory device controllers
US9886196B2 (en) 2015-10-21 2018-02-06 Western Digital Technologies, Inc. Method and system for efficient common processing in memory device controllers
KR101728864B1 (ko) * 2015-10-30 2017-04-20 (주)에프씨아이 플래시 메모리 관리 방법, 장치 및 컴퓨터 프로그램
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US9760479B2 (en) * 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
CN105512007B (zh) * 2015-12-17 2018-12-04 英业达科技有限公司 一种pcie硬盘状态灯的控制方法及系统
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US9875811B2 (en) * 2016-01-13 2018-01-23 Macronix International Co., Ltd. Method and device for reading a memory
TWI621125B (zh) * 2016-01-26 2018-04-11 旺宏電子股份有限公司 記憶體之讀取方法與裝置
US10025727B2 (en) * 2016-02-05 2018-07-17 Honeywell International Inc. Relay mechanism to facilitate processor communication with inaccessible input/output (I/O) device
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
JP6444917B2 (ja) 2016-03-08 2018-12-26 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
KR102514388B1 (ko) 2016-03-25 2023-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10156999B2 (en) 2016-03-28 2018-12-18 Seagate Technology Llc Dynamic bandwidth reporting for solid-state drives
TWI622923B (zh) * 2016-05-04 2018-05-01 群聯電子股份有限公司 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置
CN107506135B (zh) * 2016-06-14 2022-05-06 杭州海康威视数字技术股份有限公司 一种数据处理方法、装置及系统
JP2017224113A (ja) 2016-06-14 2017-12-21 東芝メモリ株式会社 記憶装置
US11217286B2 (en) 2016-06-27 2022-01-04 SK Hynix Inc. Semiconductor memory device with power down operation
US10147471B2 (en) * 2016-08-02 2018-12-04 SK Hynix Inc. Semiconductor devices and semiconductor systems
US11133042B2 (en) 2016-06-27 2021-09-28 SK Hynix Inc. Semiconductor memory system and semiconductor memory device, which can be remotely initialized
US10181346B2 (en) 2016-08-02 2019-01-15 SK Hynix Inc. Semiconductor devices and operations thereof
KR102592359B1 (ko) 2016-06-27 2023-10-20 에스케이하이닉스 주식회사 반도체장치
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
US10346041B2 (en) 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US20190109720A1 (en) 2016-07-26 2019-04-11 Samsung Electronics Co., Ltd. Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd
US10372659B2 (en) 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US11461258B2 (en) 2016-09-14 2022-10-04 Samsung Electronics Co., Ltd. Self-configuring baseboard management controller (BMC)
US11144496B2 (en) 2016-07-26 2021-10-12 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US10210123B2 (en) 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
CN106708441B (zh) * 2016-12-29 2019-06-21 至誉科技(武汉)有限公司 一种用于降低固态存储读延迟的操作方法
JP2018120439A (ja) 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
US10579273B2 (en) * 2017-05-03 2020-03-03 International Business Machines Corporation Maintaining correct I/O statistics for altered data migrated within a tiered storage environment
US9905294B1 (en) * 2017-05-03 2018-02-27 Seagate Technology Llc Writing logically offset pages of data to N-level memory cells coupled to a common word line
US10191911B2 (en) * 2017-05-27 2019-01-29 Plesk International Gmbh Permanent website hosting on mobile devices
US10990291B2 (en) * 2017-06-12 2021-04-27 Dell Products, L.P. Software assist memory module hardware architecture
US10275162B2 (en) 2017-06-23 2019-04-30 Dell Products L.P. Methods and systems for managing data migration in solid state non-volatile memory
US10339073B2 (en) * 2017-06-29 2019-07-02 Keysight Technologies, Inc. Systems and methods for reducing write latency
CN109213425B (zh) * 2017-06-30 2023-10-31 北京忆恒创源科技股份有限公司 利用分布式缓存在固态存储设备中处理原子命令
US10908998B2 (en) 2017-08-08 2021-02-02 Toshiba Memory Corporation Managing function level reset in an IO virtualization-enabled storage device
US10446197B2 (en) 2017-08-31 2019-10-15 Micron Technology, Inc. Optimized scan interval
CN107391049B (zh) * 2017-09-08 2023-05-26 南宁磁动电子科技有限公司 存储连接设备及存储系统
CN109558271B (zh) * 2017-09-26 2023-02-24 深圳大心电子科技有限公司 数据备份方法、数据恢复方法以及存储控制器
CN118051268A (zh) * 2017-09-27 2024-05-17 北京忆芯科技有限公司 电子设备及其启动方法
US10754580B2 (en) 2017-10-23 2020-08-25 Micron Technology, Inc. Virtual partition management in a memory device
KR102543059B1 (ko) 2017-11-22 2023-06-14 삼성전자주식회사 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템
WO2019113729A1 (en) 2017-12-11 2019-06-20 Micron Technology, Inc. Scheme to improve efficiency of garbage collection in cached flash translation layer
KR20190090268A (ko) * 2018-01-24 2019-08-01 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10365854B1 (en) 2018-03-19 2019-07-30 Micron Technology, Inc. Tracking data temperatures of logical block addresses
KR102583592B1 (ko) * 2018-03-27 2023-10-06 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10534551B1 (en) * 2018-06-22 2020-01-14 Micron Technology, Inc. Managing write operations during a power loss
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10409511B1 (en) 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US11115490B2 (en) * 2018-07-31 2021-09-07 EMC IP Holding Company LLC Host based read cache for san supporting NVMEF with E2E validation
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
JP6995723B2 (ja) * 2018-09-19 2022-01-17 キオクシア株式会社 メモリシステム、ストレージシステム、および制御方法
US10726865B2 (en) 2018-10-11 2020-07-28 Western Digital Technologies, Inc. Zoned block command to stream command translator
US11221768B2 (en) 2018-10-29 2022-01-11 International Business Machines Corporation Safe shared volume access
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
KR20200049051A (ko) 2018-10-31 2020-05-08 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법
KR102672193B1 (ko) * 2018-12-12 2024-06-07 에스케이하이닉스 주식회사 전자 장치
KR20200073604A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
KR20200076531A (ko) 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20200088709A (ko) 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20200099882A (ko) 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102659832B1 (ko) * 2019-03-05 2024-04-22 삼성전자주식회사 데이터 저장 장치 및 시스템
US10698844B1 (en) * 2019-04-19 2020-06-30 EMC IP Holding Company LLC Intelligent external storage system interface
US11151063B2 (en) 2019-04-19 2021-10-19 EMC IP Holding Company LLC Host system directly connected to internal switching fabric of storage system
US11500549B2 (en) * 2019-04-19 2022-11-15 EMC IP Holding Company LLC Secure host access to storage system resources via storage system interface and internal switching fabric
US10782906B1 (en) * 2019-07-17 2020-09-22 Micron Technology, Inc. Memory subsystem interface to relate data and to retrieve related data
US11210010B2 (en) * 2019-07-30 2021-12-28 International Business Machines Corporation Data migration in a multi-tiered storage system
US11074182B2 (en) 2019-08-22 2021-07-27 Micron Technology, Inc. Three tiered hierarchical memory systems
US11295806B2 (en) 2019-08-28 2022-04-05 Micron Technology, Inc. Large file integrity techniques
US11210024B2 (en) 2019-12-16 2021-12-28 International Business Machines Corporation Optimizing read-modify-write operations to a storage device by writing a copy of the write data to a shadow block
TWI730600B (zh) * 2020-01-21 2021-06-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US11500747B2 (en) * 2020-01-30 2022-11-15 Dell Products L.P. Computer initialization debug message display system
KR20210097353A (ko) * 2020-01-30 2021-08-09 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
TWI760760B (zh) * 2020-04-13 2022-04-11 慧榮科技股份有限公司 控制閃存裝置存取的電腦程式產品及方法及裝置
CN111813345A (zh) * 2020-07-17 2020-10-23 济南浪潮数据技术有限公司 一种数据传输方法、装置、服务器及可读存储介质
US20220035663A1 (en) * 2020-07-31 2022-02-03 EMC IP Holding Company LLC Techniques for managing cores for storage
JP2022050018A (ja) 2020-09-17 2022-03-30 キオクシア株式会社 電子装置及び転送方法
US11775210B2 (en) * 2020-10-14 2023-10-03 Western Digital Technologies, Inc. Storage system and method for device-determined, application-specific dynamic command clustering
KR20220049215A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 호스트 장치 및 이들을 포함하는 메모리 시스템
TWI789650B (zh) * 2020-11-26 2023-01-11 神雲科技股份有限公司 整合控制管理系統
US11468202B2 (en) 2020-12-15 2022-10-11 Texas Instruments Incorporated Hardware-based security authentication
KR20220101349A (ko) 2021-01-11 2022-07-19 삼성전자주식회사 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
CN116897343A (zh) * 2021-02-16 2023-10-17 美光科技公司 用于管理多种类型的存储器的控制器
US11500548B2 (en) * 2021-03-04 2022-11-15 Micron Technology, Inc. Memory physical presence security identification
JP2022137811A (ja) * 2021-03-09 2022-09-22 キオクシア株式会社 情報処理システム、ストレージデバイスおよびホスト
CN113326001B (zh) * 2021-05-20 2023-08-01 锐掣(杭州)科技有限公司 数据处理方法、装置、设备、系统、介质及程序
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
JP2023045867A (ja) 2021-09-22 2023-04-03 キオクシア株式会社 メモリシステム
TWI818762B (zh) * 2022-10-11 2023-10-11 慧榮科技股份有限公司 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
TWI805505B (zh) * 2022-10-11 2023-06-11 慧榮科技股份有限公司 排程和執行主機資料更新命令的方法及電腦程式產品及裝置

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942552A (en) * 1986-11-20 1990-07-17 Allen-Bradley Company, Inc. Method and apparatus for saving and performing industrial control commands
US5210660A (en) 1990-01-17 1993-05-11 International Business Machines Corporation Sectored servo independent of data architecture
US5278703A (en) 1991-06-21 1994-01-11 Digital Equipment Corp. Embedded servo banded format for magnetic disks for use with a data processing system
JP3212787B2 (ja) 1993-12-02 2001-09-25 日本電気株式会社 転送データ管理方式およびホスト・端末間データ転送方式
JPH1153235A (ja) 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
KR100544177B1 (ko) * 2000-01-18 2006-01-23 삼성전자주식회사 컴퓨터를 통한 디지털 컨텐츠의 저장 및 재생 기능을구비한 개인 휴대 장치의 제어방법 및 이에 따른 개인휴대장치의 동작방법
US6427198B1 (en) * 2000-02-15 2002-07-30 International Business Machines Corporation Method, system, and program for determining system configuration
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
WO2003019393A1 (en) * 2001-08-24 2003-03-06 Intel Corporation A general intput/output architecture, protocol and related methods to implement flow control
JP2003087348A (ja) * 2001-09-14 2003-03-20 Matsushita Graphic Communication Systems Inc 通信制御方法及び通信制御装置並びにadsl通信装置
KR100445134B1 (ko) 2002-01-31 2004-08-21 삼성전자주식회사 플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법
US7406587B1 (en) * 2002-07-31 2008-07-29 Silicon Graphics, Inc. Method and system for renaming registers in a microprocessor
US6968439B2 (en) 2002-08-29 2005-11-22 Micron Technology, Inc. Single segment data object management
EP1465116A1 (en) * 2003-03-31 2004-10-06 STMicroelectronics Limited Computer graphics
JP4175185B2 (ja) 2003-06-06 2008-11-05 日本電気株式会社 ネットワーク情報記録装置
CN1670701A (zh) 2004-03-17 2005-09-21 德鑫科技股份有限公司 压缩数据存储方法
US20060174067A1 (en) 2005-02-03 2006-08-03 Craig Soules Method of caching data
US20060200612A1 (en) * 2005-03-02 2006-09-07 Laurence Hamid Method and protocol for transmitting extended commands to USB devices
CN101390043A (zh) 2005-07-01 2009-03-18 美国日本电气实验室公司 嵌入式系统用的存储器体系结构
CN100361094C (zh) 2005-07-01 2008-01-09 华为技术有限公司 一种节省全局变量内存空间的方法
US7159082B1 (en) 2005-10-03 2007-01-02 Hewlett-Packard Development Company, L.P. System and method for throttling memory accesses
US7844877B2 (en) 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US20070168668A1 (en) * 2005-12-08 2007-07-19 Chang Robert C Media card with command pass through mechanism
US7719983B2 (en) 2006-01-06 2010-05-18 International Business Machines Corporation Method for autonomic system management using adaptive allocation of resources
JP4855102B2 (ja) 2006-02-23 2012-01-18 株式会社日立製作所 計算機システム及び管理計算機とストレージシステム並びに記憶領域割当量制御方法
US7613043B2 (en) 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US7639531B2 (en) 2006-05-15 2009-12-29 Apple Inc. Dynamic cell bit resolution
US7594073B2 (en) 2006-09-29 2009-09-22 Intel Corporation Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state
CN100504830C (zh) * 2007-01-08 2009-06-24 中国信息安全产品测评认证中心 一种智能卡和u盘复合设备及其与计算机通信的方法
US7721040B2 (en) 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7596643B2 (en) * 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
JP2009026296A (ja) 2007-06-21 2009-02-05 Toshiba Corp 電子デバイス、メモリデバイス、ホスト装置
US8078787B2 (en) 2007-06-22 2011-12-13 Apple Inc. Communication between a host device and an accessory via an intermediate device
US8429358B2 (en) * 2007-08-14 2013-04-23 Samsung Electronics Co., Ltd. Method and data storage device for processing commands
US8473707B2 (en) 2008-03-27 2013-06-25 Open Invention Network, Llc Method for achieving sequential I/O performance from a random workload
US7769919B2 (en) 2008-05-15 2010-08-03 International Business Machines Corporation Protecting computer memory from simultaneous direct memory access operations using active and inactive translation tables
TW201007734A (en) 2008-08-06 2010-02-16 Genesys Logic Inc Flash memory control apparatus having signal-converting module
US7925925B2 (en) 2008-12-30 2011-04-12 Intel Corporation Delta checkpoints for a non-volatile memory indirection table
CN101576834B (zh) 2009-05-08 2012-05-30 西安蓝海本立信息科技有限公司 基于时间戳建立数据视图的连续数据保护系统及方法
TWI400707B (zh) 2009-07-09 2013-07-01 Phison Electronics Corp 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
JP5377182B2 (ja) * 2009-09-10 2013-12-25 株式会社東芝 制御装置
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8156304B2 (en) * 2009-12-04 2012-04-10 Oracle International Corporation Dynamic data storage repartitioning
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
JP2011128998A (ja) * 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
TWI484334B (zh) 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
US8327226B2 (en) 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
JP2011203916A (ja) 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
US8621141B2 (en) 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US8489855B2 (en) 2010-05-07 2013-07-16 Ocz Technology Group Inc. NAND flash-based solid state drive and method of operation
US8966176B2 (en) * 2010-05-27 2015-02-24 Sandisk Il Ltd. Memory management storage to a host device
US8368564B2 (en) 2010-08-24 2013-02-05 Allen Ku Wireless keyboard having waterproof mechanism
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US20120059976A1 (en) * 2010-09-07 2012-03-08 Daniel L. Rosenband Storage array controller for solid-state storage devices
US9063663B2 (en) 2010-09-21 2015-06-23 Hitachi, Ltd. Semiconductor storage device and data control method thereof
US8560648B2 (en) 2010-11-10 2013-10-15 Microsoft Corporation Location control service
CN102023818A (zh) 2010-12-06 2011-04-20 成都市华为赛门铁克科技有限公司 一种存储设备容量调整方法、装置及存储设备
CN103415844B (zh) 2011-01-18 2016-04-20 希捷科技有限公司 用于高级冗余信息计算的系统和方法
KR101467939B1 (ko) 2011-04-26 2014-12-02 엘에스아이 코포레이션 비휘발성 저장부에 대한 가변 오버­프로비저닝
US8793429B1 (en) * 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
WO2013022915A1 (en) 2011-08-09 2013-02-14 Lsi Corporation I/o device and computing host interoperation
US8661196B2 (en) 2011-08-15 2014-02-25 International Business Machines Corporation Optimizing locations of data accessed by client applications interacting with a storage system
KR101522848B1 (ko) 2011-10-05 2015-05-26 엘에스아이 코포레이션 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US9037820B2 (en) 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI637316B (zh) * 2013-08-28 2018-10-01 威盛電子股份有限公司 多核心微處理器動態重新配置
TWI702500B (zh) * 2015-12-30 2020-08-21 南韓商三星電子股份有限公司 使用多串流的系統、方法以及製品
TWI746510B (zh) * 2016-04-01 2021-11-21 美商英特爾公司 用於在資料儲存裝置上管理不可變資料之技術

Also Published As

Publication number Publication date
US20140181327A1 (en) 2014-06-26
US10936251B2 (en) 2021-03-02
EP2742429A1 (en) 2014-06-18
TWI584125B (zh) 2017-05-21
US20170322751A1 (en) 2017-11-09
KR20140044933A (ko) 2014-04-15
KR101798036B1 (ko) 2017-11-15
CN103858116A (zh) 2014-06-11
WO2013022915A1 (en) 2013-02-14
US20200081660A1 (en) 2020-03-12
KR101438716B1 (ko) 2014-09-11
JP2014522066A (ja) 2014-08-28
US10514864B2 (en) 2019-12-24
EP2742429A4 (en) 2015-03-25
CN103858116B (zh) 2015-09-02
US9389805B2 (en) 2016-07-12
KR20140061498A (ko) 2014-05-21
US20130297894A1 (en) 2013-11-07

Similar Documents

Publication Publication Date Title
TWI584125B (zh) 輸入/輸出裝置及計算主機相互運作
US10365920B2 (en) Management of device firmware update effects as seen by a host
US9971547B2 (en) Storage system with application to NVM address, span, and length
KR102155191B1 (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
KR101522848B1 (ko) 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US9461904B2 (en) Selective enablement of operating modes or features via host transfer rate detection
US9423977B2 (en) Lock-free communication storage request reordering
WO2012148828A2 (en) Variable over-provisioning for non-volatile storage
US9396104B1 (en) Accessing compressed data of varying-sized quanta in non-volatile memory

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees