TW201640358A - 資料儲存方法、記憶體模組以及資料儲存系統 - Google Patents
資料儲存方法、記憶體模組以及資料儲存系統 Download PDFInfo
- Publication number
- TW201640358A TW201640358A TW105109154A TW105109154A TW201640358A TW 201640358 A TW201640358 A TW 201640358A TW 105109154 A TW105109154 A TW 105109154A TW 105109154 A TW105109154 A TW 105109154A TW 201640358 A TW201640358 A TW 201640358A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- host
- storage device
- data
- input
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
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)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
Abstract
一種協定,其能夠無需知道或反向工程由主機應用的編碼即實現主機與諸如DRAM DIMM外觀尺寸固態硬碟的輸入/輸出通道儲存裝置之間的通信。藉由發送已知值的協定訓練序列及以與自主機接收的編碼格式相同的編碼格式將相關聯命令/狀態資料儲存於儲存裝置中,控制/狀態資料被寫入至儲存裝置。此等儲存值在執行階段用以執行自主機接收的經編碼命令且以主機可辨識方式將狀態資料報告至主機。基於記憶體組的緩衝組態亦在如接收時的條件下儲存使用者資料以保持主機特定編碼。此促進主機記憶體控制器與儲存裝置之間的經由DRAM通道的使用者資料交換。
Description
本揭露內容大體上與記憶體有關。更具體言之且非以限制方式,本揭露內容中所揭露的創造性態樣的特定實施例針對輸入/輸出(I/O)通道通信協定,其可與諸如以下各者的多種編碼方法合作:加擾、位元/位元組摻和/操控、基於錯誤校正碼(Error Correction Code;ECC)的寫碼以及其他資料保護/寫碼方案。
計算系統可使用許多不同類型的半導體記憶體,所述半導體記憶體經由不同類型的匯流排與中央處理單元(Central Processing Unit;CPU)或記憶體控制器通信。此等記憶體可包含揮發性記憶體及非揮發性記憶體。揮發性儲存器可由隨機存取記憶體(Random Access Memory;RAM)(諸如,一或多個DRAM模組)提供。另一方面,非揮發性儲存器可由固態硬碟(Solid State Drive;SSD)、通用串列匯流排(Universal Serial Bus;USB)硬碟上或安全數位(Secure Digital;SD)或microSD記憶卡上的快閃記憶體以及類似物提供。不同類型的匯流排可為計算系統的主機板的部分,且提供至各別記憶體的實體連接以允許相關資訊(諸如,命令、位址、資料以及狀態資訊)遍及系統的通信。
通常,不同輸入/輸出(I/O)匯流排大體上支援不同資料頻寬。舉例而言,將CPU連接至系統記憶體(諸如,DRAM模組)的主記憶體匯流排或系統記憶體I/O匯流排可支援明顯比由另一I/O匯流排(其亦可被稱為「擴充匯流排」)支援的資料頻寬高的資料頻寬。支援與DRAM模組的通信的系統匯流排可互換地被稱為「DRAM匯流排」、「DRAM介面」、「DRAM記憶體介面」或「DRAM通道」。計算系統中可能存在許多不同類型的其他I/O匯流排。某些I/O匯流排包含(例如)周邊組件互連(Peripheral Component Interconnect;PCI)匯流排、快速PCI(PCI-E或PCIe)匯流排、USB匯流排、串列進階附接技術(Serial Advanced Technology Attachment;SATA)匯流排等等。大體而言,非揮發性儲存裝置可連接至各別I/O匯流排。舉例而言,USB磁碟機可連接至USB匯流排,且SSD磁碟機可連接至SATA匯流排。
應理解,每一通信匯流排(無論系統記憶體匯流排或另一I/O匯流排)提供一介面,所述介面支援針對匯流排及連接至匯流排的記憶體特別定義且標準化的特定類型的通信協定。舉例而言,JEDEC固態技術協會(先前被稱為聯合電子裝置工程委員會(Joint Electron Device Engineering Council;JEDEC))是已經採用且建立針對DRAM(諸如,雙資料速率(Double Data Rate)2、3或4(DDR2/DDR3/DDR4)同步DRAM(SDRAM)記憶體的開放標準的獨立半導體工程貿易組織及標準化主體。此等標準可指定記憶體引出線及記憶體匯流排介面組態,包含位址及資料匯流排組態,以及經由相關DRAM介面的通信協定,諸如記憶體重設及初始化程序、各種記憶體操作的時序要求、各種記憶體命令及狀態資料的格式、不同的記憶體讀取及寫入模式等等。此標準化的一個優點在於,藉由第三方供應商製造的遵照相關標準的記憶體模組可用於任何計算系統中,只要計算系統中的對應記憶體匯流排經設計以支援各別標準化協定。然而,在另一方面,標準化記憶體介面可防止針對一個類型的通信匯流排設計的記憶體模組經安裝或與另一類型的通信匯流排連接。舉例而言,經設計以與USB匯流排操作的裝置(例如,USB記憶體)可不連接至SATA匯流排,且反之亦然。
在一個實施例中,本揭露內容針對一種方法,其包括:(i)偵測儲存裝置經附接至由主機支援的輸入/輸出(I/O)介面;(ii)回應於所述偵測,指導所述主機使用所述I/O介面將資料型樣的第一序列寫入至所述儲存裝置,其中所述序列中的資料型樣包含各別命令資料的經編碼版本,且其中所述序列中的所述資料型樣在將所述序列中的下一個資料型樣寫入至所述儲存裝置之前經寫入預定次數;(iii)將所述寫入資料型樣的含命令資料的部分儲存於所述儲存裝置中的可定址儲存器中;(iv)在所述儲存裝置處,經由所述I/O介面自所述主機接收控制位元型樣,其中所述控制位元型樣包含經編碼I/O命令;以及(v)使用所述可定址儲存器中的一或多個含命令資料的部分來解碼經由所述控制位元型樣接收的所述I/O命令。
在另一實施例中,本揭露內容針對一種方法,其包括:(i)將儲存裝置組態為可附接至由主機支援的I/O介面且經由所述介面可操作,其中所述儲存裝置經組態以將自所述主機接收的資料儲存於所述儲存裝置內的多個緩衝器中;在所述儲存裝置處,經由所述I/O介面自所述主機接收以下各者:所述多個緩衝器中的一者的經記憶體映射緩衝器位址,以及資料的記憶體頁的經編碼版本;(iii)將所述接收資料的所述經編碼版本儲存至具有所述經記憶體映射緩衝器位址的所述緩衝器中;(iv)自所述主機接收指令以讀取在所述經記憶體映射緩衝器位址儲存的內容;以及(v)回應於接收到所述指令,經由所述I/O介面將所述接收資料的所述儲存的經編碼版本提供至所述主機。
在另一個實施例中,本揭露內容針對一種記憶體模組,其包括:(i)第一儲存部分;(ii)介面單元;(iii)第二儲存部分;以及(iv)控制單元,其耦接至所述第一儲存部分、所述介面單元以及所述第二儲存部分。所述記憶體模組中的所述第一儲存部分包含多個記憶體單元以儲存內容。所述介面單元經組態以允許所述記憶體模組附接至由主機支援的I/O介面且經由所述介面可操作。在所述記憶體模組附接至所述I/O介面後,所述記憶體模組中的所述控制單元可操作以:(i)經由所述I/O介面自所述主機接收資料型樣的序列,其中所述序列中的資料型樣包含各別命令資料的經編碼版本,且其中所述序列中的所述資料型樣在接收所述序列中的下一個資料型樣之前自所述主機經接收預定次數;(ii)將所述寫入資料型樣的含命令資料的部分儲存於所述第二儲存部分中;(iii)經由所述I/O介面自所述主機接收控制位元型樣,其中所述控制位元型樣包含經編碼I/O命令;以及(iv)使用所述第二儲存部分中的一或多個含命令資料的部分來解碼經由所述控制位元型樣接收的所述I/O命令。
在又一實施例中,本揭露內容針對一種系統,其包括:(i)I/O介面,其以針對所述介面定義的傳輸格式支援電子內容經由所述介面的通信;(ii)處理器,其耦接至所述I/O介面且支援電子內容經由所述I/O介面的通信;(iii)耦接至所述I/O介面的儲存裝置;以及(iv)與所述儲存裝置相關聯的裝置驅動程式。在所述系統中,所述裝置驅動程式含有在由所述處理器執行時使所述處理器執行以下操作的程式指令:(i)偵測所述儲存裝置經附接至所述I/O介面;以及(ii)使用所述I/O介面將資料型樣的序列寫入至所述儲存裝置,其中所述序列中的資料型樣包含各別命令資料的經編碼版本,且其中所述序列中的所述資料型樣在將所述序列中的下一個資料型樣寫入至所述儲存裝置之前經寫入預定次數。此外,在所述系統中,所述儲存裝置經由所述裝置驅動程式可操作以執行以下操作:(i)將所述資料型樣的含命令資料的部分儲存於所述儲存裝置中的可定址儲存器中;(ii)經由所述I/O介面自所述處理器接收控制位元型樣,其中所述控制位元型樣包含經編碼I/O命令;以及(iii)使用所述可定址儲存器中的一或多個含命令資料的部分來解碼經由所述控制位元型樣接收的所述I/O命令。
在以下詳細描述中,闡述眾多特定細節以便提供對揭露內容的透徹理解。然而,熟習此項技術者將理解,所揭露的創造性態樣可在無此等特定細節的情況下實踐。在其他情況下,熟知方法、程序、組件以及電路尚未加以詳細描述以免混淆本揭露內容。另外,可用任何基於半導體的儲存系統來實施所描述的創造性態樣,所述儲存系統經組態以連接至DRAM記憶體介面,不管所述儲存系統是主要含有非揮發性記憶體抑或具有具揮發性及非揮發性記憶體單元的混合儲存組態。
貫穿於本說明書中的對「一個實施例」或「一實施例」的參考意謂結合實施例所描述的特定特徵、結構或特性包含於本揭露內容的至少一個實施例中。因此,片語「在一個實施例中」或「在一實施例中」或「根據一個具體實例」(或具有類似意思的其他片語)貫穿本說明書在各種位置的出現未必全部指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可以任何合適方式組合。又,視本文中的論述內容背景而定單數術語可包含其複數形式且複數術語可包含其單數形式。類似地,加連字符的術語(例如,「預定(pre-determined)」、「外觀尺寸(form-factor)」、「基於區塊的(block-based)」等)偶爾可與其未加連字符版本(例如,「預定(predetermined)」、「外觀尺寸(form factor)」、「基於區塊的(block based)」等)互換使用,且大寫字母輸入項(例如,「SSD」、「控制暫存器(Control Register)」、「非揮發性(Non-Volatile)」等)可與其非大寫字母版本(例如,「ssd」、「控制暫存器(control register)」、「非揮發性(non-volatile)」等)互換使用。此等偶然可互換使用不應被視為彼此不一致。
最初請注意,術語「耦接」、「以操作方式耦接」、「已連接」、「連接」、「以電氣方式連接」等在本文中可互換使用以大體上指以可操作方式以電氣方式/以電子方式連接的條件。類似地,當第一實體不管資訊信號(是否含有位址、資料或控制/狀態資訊)的類型(類比或數位)如何而以電氣方式(經由有線或無線手段)發送彼等信號至第二實體及/或自第二實體接收彼等信號時,認為第一實體與第二實體(或多個第二實體)「通信」。另外應注意,本文中所繪示及論述的各種圖式(包含組件圖)僅用於說明性目的,且未按比例繪製。
如本文中所使用,術語「第一」、「第二」等被用作所述術語在前的名詞的標記,且不暗示任何類型的排序(例如,空間、時間的、邏輯等),除非明確地如此定義。
如前面所指出,將CPU連接至系統記憶體(諸如,DRAM模組)的主記憶體匯流排或系統記憶體I/O匯流排可支援明顯比由另一I/O匯流排支援的資料頻寬高的資料頻寬。因此,對於能夠以高得多的速度操作的I/O儲存裝置,由較慢I/O匯流排支援的較低頻寬常常引起通信瓶頸。一個此儲存裝置為SSD,其為提供內容的非揮發性儲存的基於區塊的儲存裝置。SSD為能夠以較高頻寬操作的I/O裝置,且因此,可能需要將SSD連接至較快系統記憶體匯流排,與其他較慢I/O匯流排相反。結果,I/O能力及效能(輸送量及潛時兩者)可顯著增強。
然而,如較早亦提及,標準化記憶體介面可防止針對一個類型的I/O通信匯流排設計的記憶體模組經安裝或與另一類型的I/O通信匯流排連接。舉例而言,為了克服此等限制,基於SATA的SSD磁碟機的實體連接性可針對DDR記憶體通道連接性進行修改以遵照供附接至DRAM記憶體通道用的JEDEC-標準化雙列直插式記憶體模組(Dual In-Line Memory Module;DIMM)外觀尺寸。儘管此修改可使SSD磁碟機可插入至通常用於習知DRAM模組的標準DIMM記憶體槽中(或與標準DIMM記憶體槽相容),但仍然不足以單獨使用用於DRAM介面的JEDEC定義的通信協定使SSD磁碟機可操作。此不可操作性的一個原因在於,DRAM通道DIMM外觀尺寸SSD(為簡潔起見在本文中亦被稱為「基於DIMM的SSD」)為基於區塊的儲存裝置,其在主機的DRAM記憶體映像中可不顯露。即使主機將基於DIMM的SSD「辨識」為註冊DIMM(Registered DIMM;RDIMM)、未註冊DIMM(Unregistered DIMM;UDIMM)、負載減少DIMM(Load Reduced DIMM;LRDIMM)或任何其他類型的DIMM,基於DIMM的SSD仍然可能需要能夠「瞭解」主機所使用的DRAM通道通信協定。因此,基於DIMM的SSD可能需要「理解」以針對DRAM介面定義的傳輸格式自主機接收的資料(無論控制資料或使用者資料),且對應地亦以針對DRAM介面定義的傳輸格式產生回應(諸如,狀態資料)以建立與主機的全功能雙向通信「連結」。在此上下文中,基於DIMM的SSD可被視為「非標準化使用儲存裝置」,因為基於DIMM的SSD未經標準化以供不同類型的I/O通道(此處為DRAM通道)使用,即使所述裝置可實體上相容以用於附接至此其他類型的I/O通道。因此,一般而言,「非標準化使用儲存裝置」(如基於DIMM的SSD)可能已經標準化以供一個類型的I/O通道(如SATA匯流排或PCIe匯流排)使用,但可能未經標準化以供另一類型的I/O通道(如DRAM通道)使用。
問題可能在為了在I/O通道(諸如,DRAM通道)上進行資料通信在系統中使用編碼時出現。最初應注意,為簡潔及論述容易起見,術語「編碼」在本文中被用作涵蓋性術語(umbrella term)以指各種資料保護/寫碼方案,諸如,加擾、位元/位元組摻和/操控(其可重新組織或重新排序資料以用於較快處理或快速儲存)、基於錯誤校正碼(ECC)的寫碼、資料交錯等等。編碼可由主機或基於主機平台的記憶體控制器或主機中的任何其他處理實體來執行。應理解,單一系統可能未必使用所有此等寫碼方案。替代地,系統可使用除此處所提及的資料保護方案以外的資料保護方案。在任何情況下,如同術語「編碼」,術語「經編碼資料」(或類似意思的其他術語)在本文中亦可被用作涵蓋性術語以指使用上文所提及的資料保護/寫碼方案中的一或多者編碼且以針對I/O通道(如DRAM通道)定義/標準化的傳輸格式經由此I/O通道通信的資料,諸如,控制/命令資料、狀態資料以及使用者資料。
當編碼存在於標準化I/O通道(如DRAM通道)上時,未針對此I/O通道進行標準化但卻附接至此I/O通道的儲存裝置(如較早提及的基於DIMM的SSD)必須「意識到」基礎編碼方案,以便能夠解碼接收到的命令及使用者資料且以由主機(或主機記憶體控制器)所應用的相同編碼格式將狀態資訊正確地報告回至主機。然而,難以反向工程編碼演算法。此外,即使已知演算法,所述演算法的實施自一個電腦供應商/平台至另一電腦供應商/平台亦可能不同。舉例而言,某些平台可將在啟動時間所產生的隨機種子用於加擾器。除非平台允許停用此根據啟動的隨機化特徵,否則此隨機化加擾可能難以反向工程。在任何情況下,使用基於DIMM的SSD作為實例,觀察到的,提供意識到由每一可設想電腦供應商/平台實施的DRAM通道編碼方案的基於DIMM的SSD可能不可實行。
因此需要設計一機制,其用以在標準化I/O通道(如DDR DRAM通道)上實施非標準化使用儲存裝置(如DRAM記憶體通道 DIMM外觀尺寸SSD),而無需知道或反向工程由主機平台記憶體控制器針對此標準化I/O通道應用的編碼方法或演算法。使用基於DIMM的SSD作為實例,應注意,因為基於DIMM的SSD不同於標準DRAM,所以另外需要主機能夠將控制資訊發送至基於DIMM的SSD,以及以主機可辨識方式自SSD接收狀態資訊,不管DDR通道上所使用的編碼或資料保護方案如何。
在特定實施例中,本揭露內容提供一協定,其能夠無需反向工程由主機應用的編碼方法或演算法即實現主機系統與DDR外觀尺寸SSD之間的通信。因此,本文中所描述的協定可與多種加擾、ECC以及其他資料保護方案合作。因此,所述協定可大體上應用於任何經編碼I/O介面,包含(例如)基於DIMM的儲存裝置附接在DDR通道上且需要與主機交換資訊的任何應用。
在下文提供根據本揭露內容的特定實施例的通信協定的簡潔概述。稍後在圖3至圖8的論述期間給出更多細節。在進一步繼續之前,此處應注意,為論述簡單及容易起見,在本文中的論述中始終僅使用基於DIMM的SSD作為一實例來說明本揭露內容的教示的創造性態樣,而無普遍性損失。換言之,本揭露內容的教示適用於主機與I/O儲存裝置之間的經編碼通信是經由連結主機及儲存裝置的標準化I/O介面進行的應用,但儲存裝置未針對此特定I/O介面進行標準化。因此,在編碼存在的情況下,本揭露內容的教示允許非標準化使用儲存裝置附接至標準化I/O通信通道且經由標準化I/O通信通道可操作。舉例而言,基於PCIe的SSD磁碟機在連接至PCIe介面時可被視為「標準化儲存裝置」。然而,此SSD磁碟機在連接至另一I/O介面(如JEDEC定義的DRAM介面)時可為「非標準化使用儲存裝置」。在此情況下,除修改SSD磁碟機的實體連接性以使磁碟機可使用標準DIMM槽附接至DRAM通道以外,亦可能需要使基於DIMM的SSD能夠與其主機通信,而SSD無需知道或反向工程由主機應用的編碼方法或加擾演算法。
本揭露內容提供用以促進經由標準化I/O通道的非標準化使用I/O儲存裝置與其主機之間的此經編碼通信的例示性機制。因此,在本文中的論述中,使用DRAM介面(或DRAM通道)(如圖1中的DRAM記憶體介面16)作為標準化I/O介面(或I/O通道)的實例,且經由此DRAM介面通信的經編碼DRAM命令為經編碼I/O命令的實例,非標準化使用儲存裝置(諸如圖1中的儲存裝置18)可能需要按照本揭露內容的教示「解譯」從而能夠與主機(如圖1中的主機14)通信。為簡潔起見,在下文不論述具有各別(標準化)I/O介面的非標準化使用儲存裝置的所有可能實施。然而,使用基於DIMM的SSD的實例的下文所提供的細節保持可適用於各種此等配置。因此,在本文中的論述中,更特定術語(如「DRAM介面」、「DRAM通道」以及「DRAM命令」)替代對應一般術語(如「I/O介面」、「I/O通道」以及「I/O命令」)的頻繁使用不應被認作限制本揭露內容的教示僅適用於連接至標準化DRAM通道的基於DIMM的SSD。實情為,本揭露內容的參考圖1至圖9中的例示性實施例所論述的通信協定及資料儲存組態(具有合適修改(若需要))亦可適用於其他類型的I/O儲存裝置及其他類型的標準化I/O介面。
與基於DIMM的SSD的資料交換可分成兩個類別:(i)控制/狀態資料,及(ii)使用者資料。若基於主機的編碼存在,則控制資料可能需要由基於DRAM記憶體通道的SSD「解碼」以及理解。另一方面,狀態資料可能需要以適當編碼格式由SSD產生以使主機能夠解碼狀態資料。在特定實施例中,為了實現控制/狀態資料的傳送,主機可以:(i)將命令描述符或值寫入至基於DIMM的SSD中的一或多個,以及(ii)自一或多個暫存器讀回狀態指示器。在特定實施例中,使用者資料(包含任何主機供應的編碼,諸如加擾及/或ECC)可直接儲存於SSD中的快閃記憶體中。因為使用者資料是在如接收時的條件下儲存於SSD中且對主機的編碼無任何修改,所以只要記憶體讀取操作是由主機執行,稍後即可無更改地讀回使用者資料。此未更改資料反過來容易由主機「辨識」且根據主機的編碼演算法進行解碼。
更一般而言,在特定實施例中,藉由發送已知值的協定訓練序列及將相關聯命令/狀態資料(以自主機接收的形式)儲存於基於DIMM的SSD處的CAM/暫存器中,可將控制/狀態資料寫入至基於DIMM的SSD磁碟機。為解譯訓練之後的未來控制資料,基於DIMM的SSD可利用所接收資料的CAM查找對先前經訓練的值來判定(作為控制資料的部分)自主機接收的當前經編碼命令的意義。SSD亦可使用暫存器索引查找來擷取儲存於其暫存器中的一者中的適當狀態資料,且接著將所述狀態資料報告至主機。在一個實施例中,在訓練階段期間,可自主機發送多個控制資料序列以在基於DIMM的SSD中產生完整命令描述符。在另一個實施例中,在訓練階段期間亦可發送多個狀態資料序列。
SSD中的基於區塊的資料儲存方法完全不同於習知DDR通道DRAM中的基於記憶體組(memory bank-based)選擇的儲存。因此,可使用稍微不同的方法將使用者資料寫入至基於DIMM的SSD/自基於DIMM的SSD讀取使用者資料。在一個實施例中,由於主機記憶體控制器的資料加擾演算法中的位址分量,因此給定邏輯區塊位址(Logical Block Address ;LBA)的寫入及讀取可能需要在DRAM記憶體通道SSD中的經相同實體定址的區域中進行。可藉由關聯LBA與給定的經實體定址的緩衝器及僅在所述給定緩衝器中寫入及讀取此LBA來完成此操作。另一方面,當主機記憶體控制器使用無位址相依性的加擾方案時,可將使用者資料寫入至基於DIMM的SSD中的任何緩衝器位址及自基於DIMM的SSD中的任何緩衝器位址讀取使用者資料。
圖1繪示根據本揭露內容的一個實施例的系統10的高度簡化的部分佈局。如所示,系統10可包含系統記憶體單元12,其經由I/O介面(諸如DRAM記憶體介面16)連接至處理器或主機14且與所述處理器或主機通信。系統10可為具有I/O介面(如DRAM記憶體介面16)的電腦系統(桌上型或膝上型)、平板電腦、行動裝置、視訊遊戲單元或控制台或任何其他類型的計算或資料處理裝置。在各種實施例中,系統10可為架可安裝伺服器系統、獨立系統或具有任何其他合適外觀尺寸。在一些實施例中,系統10可組態為用戶端系統而非伺服器系統。
在本文中的論述中,術語「系統記憶體」用以指經由DRAM記憶體介面16與主機14通信的記憶體模組。因此,系統記憶體模組可區別於經由I/O匯流排(諸如USB匯流排、SATA匯流排、PCIe匯流排以及類似物)連接至處理器14的另一I/O記憶體裝置/模組(諸如USB磁碟機、硬碟機、SATA磁碟機以及類似物)。然而,應注意,術語「系統記憶體」未必暗示系統記憶體比另一非系統I/O記憶體實體上更接近於主機14而定位。在任何情況下,為論述及繪圖容易起見,將系統記憶體及其他I/O記憶體連接至處理器14的各種匯流排橋接器或匯流排控制器未繪示於圖1中或其他圖式中的任一者中。然而,應理解,系統記憶體單元12與處理器14之間可存在額外控制單元,如匯流排橋接器或匯流排仲裁器。如所示,在一個實施例中,系統記憶體單元12可包含儲存裝置18及一或多個DRAM記憶體模組20。在DRAM記憶體模組20的情況下,諸如DRAM記憶體的類型、DRAM記憶體模組的數目、每個DRAM模組的記憶體晶片的數目、每個晶片的記憶體組(memory bank)的數目以及晶片中的記憶體組的內部組態的細節並不相關,且因此,本文中不提供此等細節。在特定實施例中,本揭露內容的創造性態樣可在儲存裝置18中且參考所述儲存裝置實施。因此,在下文且參看圖2更詳細地論述儲存裝置18。
此處應注意,如本文中所使用,術語「儲存裝置」指具有插腳組態或實體連接性的任何半導體記憶體裝置,插腳組態或實體連接性允許裝置可插入至通常用於習知DRAM模組(諸如DDR DRAM)的基於DRAM匯流排的標準DIMM記憶體槽中。因此,根據本揭露內容的特定實施例的儲存裝置18可包含(例如)較早提及的DRAM記憶體通道DIMM外觀尺寸SSD(基於DIMM的SSD或DDR外觀尺寸SSD)、具有DIMM外觀尺寸的任何基於區塊的儲存裝置、經組態以經由DRAM記憶體介面16操作的儲存裝置以及類似物。在某些實施例中,儲存裝置18可僅提供非揮發性儲存器,且因此,可主要包含非揮發性記憶體單元,諸如快閃記憶體或基於快閃記憶體的儲存單元、磁性RAM(Magnetic RAM;MRAM)、自旋傳送力矩MRAM(Spin-Transfer Torque MRAM;STT-MRAM)、相變隨機存取記憶體(Phase-Change Random Access Memory;PRAM或PCRAM)、電阻性隨機存取記憶體(Resistive Random Access Memory;RRAM或ReRAM)、導電性橋接RAM(Conductive-Bridging RAM;CBRAM)以及類似物。替代地,在某些其他實施例中,儲存裝置18可提供混合儲存器(揮發性以及非揮發性的),且因此,可包含揮發性記憶體單元及非揮發性記憶體單元兩者。此混合儲存裝置的實例為含有DRAM以及快閃記憶體單元的非揮發性DIMM(Non-Volatile DIMM;NVDIMM)。在另外其他實施例中,儲存裝置18可為習知DDR2/DDR3/DDR4 DRAM模組,或基於DRAM的三維堆疊(Three Dimensional Stack;3DS)記憶體模組,諸如高頻寬記憶體(High Bandwidth Memory;HBM)模組或混合記憶體立方體(Hybrid Memory Cube;HMC)記憶體模組。在特定實施例中,組成「儲存裝置」18的記憶體模組的類型可不相關,因為根據本揭露內容的教示的協定可用可附接至由主機14支援的DRAM記憶體通道16且經由所述DRAM通道可操作的任何記憶體模組來實施。
此處應注意,在一個實施例中,僅儲存裝置18可包括系統記憶體單元12。在此實施例中可能不存在任何額外DRAM記憶體模組20。在另一個實施例中,儲存裝置18可包含一個以上記憶體模組,在處理器14的操作控制下,所有記憶體模組可為相同類型或可為不同類型。此外,應理解,在圖1至圖2中或在圖9中繪示為系統10的部分的單元本身可含有其他複雜組件。然而,此等組件在此等圖式中未加以說明,因為此等組件缺少與本揭露內容的關聯性。
系統記憶體單元12與外部主機14之間的系統記憶體匯流排或DRAM記憶體介面16可為系統記憶體單元12與主機14之間的資料移動提供寬、高速區域I/O匯流排。在特定實施例中,DRAM匯流排或DRAM記憶體介面16可提供在處理器14與系統記憶體單元12之間傳輸控制、狀態以及使用者資料的發信通道,其遵照由主機14支援的相關JEDEC定義的DRAM通道通信協定。在特定實施例中,在訓練階段期間以及此後,DRAM記憶體介面16的資料匯流排部分可用以在儲存裝置18與主機14之間交換命令、狀態以及使用者資料,如下文所論述。
圖2繪示圖1中的系統10的另一實施例,具有圖1中所描繪的儲存裝置18及主機(處理器)14的例示性架構細節。應理解,在某些實施例中,儲存裝置18可包含多於或少於圖2中所繪示的組件的組件。然而,為了易於參考,參看圖2繪示及論述更相關的組件中的一些。如所示,主機14可包含與記憶體控制器24通信的CPU 22。在一個實施例中,CPU可為通用微處理器。在本文中的論述中,為了易於論述,術語「處理器」及「CPU」可互換使用。然而,應理解,替代CPU 22或除CPU 22以外,處理器/主機14可含有任何其他類型的處理器,諸如微控制器、數位信號處理器(Digital Signal Processor;DSP)、圖形處理單元(Graphics Processing Unit;GPU)、專用特殊應用積體電路(Application Specific Integrated Circuit;ASIC)處理器、場可程式化閘陣列(Field Programmable Gate Array;FPGA)以及類似物。此外,在一個實施例中,處理器/主機14可包含一個以上CPU。處理器14可經組態以特定指令集架構(Instruction Set Architecture;ISA)來執行指令以及處理資料,特定指令集架構諸如x86指令集架構(32位元或64位元版本)、PowerPC® ISA或依賴於精簡指令集電腦(Reduced Instruction Set Computer;RISC)ISA的無互鎖管線級的微處理器(Microprocessor without Interlocked Pipeline Stages;MIPS)指令集架構。在一個實施例中,主機14可為具有除處理器或CPU功能性以外的功能性的系統單晶片(System on Chip;SoC)。舉例而言,在此實施例中,記憶體控制器功能性可整合至SoC中。替代地,在特定實施例中,記憶體控制器可與CPU 22整合。
一般而言,記憶體控制器24可管理主機/處理器14與系統記憶體單元12之間的資料交換。因此,在特定實施例中,資料及控制資訊在儲存裝置18與主機14之間的所有傳送可通過記憶體控制器24且由所述記憶體控制器來控制。在一個實施例中,記憶體控制器24可經組態以編碼將經由DRAM記憶體介面16發送至儲存裝置18的資料。此編碼可包含(例如)加擾、ECC、位元/位元組摻和/操控及/或實施於系統10中的任何其他資料保護方案。類似地,記憶體控制器24亦可解碼接收自儲存裝置18的資料,隨後將經解碼資料發送至CPU 22以供進一步處理。在替代性實施例中,此編碼及解碼可由CPU 22本身執行,在此情況下,記憶體控制器24可僅管理記憶體選擇、經CPU編碼資料至儲存裝置18的傳輸、經編碼資料自儲存裝置18的接收、記憶體映射,以及有助於CPU與系統記憶體單元12中的各種記憶體模組的通信的其他控制操作。
如圖2中所示,主機14可儲存與作業系統(Operating System;OS)相關聯的程式碼或對所述程式碼進行操作,作業系統是藉由虛線區塊繪示且使用參考數字「26」來識別。作業系統26可為基於Microsoft® Windows®的作業系統、基於Apple® Mac OS®或OS X®的作業系統、基於開放原始碼的作業系統(如Linux®)以及類似物。作業系統軟體26的儲存、執行、類型以及管理的細節不與本揭露內容相關,且因此,在本文中不提供。
在一個實施例中,儲存裝置18與主機14之間的互動可經由與儲存裝置18相關聯的裝置驅動程式28應用程式或軟體促進。驅動程式軟體28可由作業系統26管理且由CPU 22執行。在一個實施例中,在裝置驅動程式軟體28由CPU 22執行時,主機14可經組態以執行稍後參看圖3至圖4以及圖7所論述的各種方法步驟。因此,根據本揭露內容的教示的通信協定可經由藉由主機14執行裝置驅動程式28來實施。在一個實施例中,裝置驅動程式28可作為作業系統軟體26的部分而提供。在另一個實施例中,驅動程式軟體28可自外部來源(諸如,自儲存裝置18的製造商/開發者的網站下載。在又一實施例中,裝置驅動程式28可為系統基本輸入輸出系統(Basic Input Output System;BIOS)的部分。在又一實施例中,裝置驅動程式28可由儲存裝置18本身提供至主機14,例如,當儲存裝置18最初安裝於系統10中時,諸如在通電時或當使用BIOS啟動系統10時。在此情況下,裝置驅動程式可在儲存裝置18上儲存/供應。如圖2中所象徵性地說明,當儲存裝置18最初安裝時,應用程式設計介面(Application Programming Interface;API)可經由DRAM記憶體介面16提供至主機14。主機14可將API用於起始裝置訓練階段(稍後論述)以及執行驅動程式軟體28以管理儲存裝置18上的記憶體操作。在一個實施例中,此訓練及其他操作可經由對儲存裝置18中的一或多個預定義儲存位置的寫入及讀取來執行,如稍後將論述。舉例而言,在一個實施例中,API可暴露儲存裝置18中的控制暫存器及狀態暫存器以作為兩個此等預定義儲存位置。在任何情況下,如圖2中所示,儲存裝置18亦可含有裝置驅動程式軟體的至少某一部分(使用虛線區塊30指示)以促進儲存裝置與主機14的經由基於主機的裝置驅動程式28的通信及互動。
儲存裝置18可包含主機介面單元32,其提供與高速、大頻寬DRAM記憶體通道16的電介接以促進儲存裝置18與主機14之間的資料傳送/移動。在特定實施例中,儲存裝置18與主機14之間的基本定址及「交握」可在裝置驅動程式28及/或裝置驅動程式30的操作控制下使用主機介面單元32在硬體中進行。如先前所提及,即使儲存裝置18可具有DIMM外觀尺寸,主機介面單元32亦可在操作上不同於習知DRAM模組中的介面單元,因為儲存裝置可為基於區塊的非揮發性記憶體裝置,其不同於具有多個記憶體組的典型DRAM模組。然而,如稍後在下文參看圖8所論述,在特定實施例中,基於記憶體組的組態可針對儲存裝置18來設計,即使裝置18基本上為基於區塊的儲存裝置。亦可類似地組態其他類型的I/O儲存裝置。
當儲存裝置18為非揮發性記憶體時,來自主機14的所述可儲存於非揮發性儲存部分34中,在一個實施例中,所述非揮發性儲存部分可包括多個快閃記憶體單元。如之前所指出,在一個實施例中,儲存裝置18可視情況支援提供揮發性及非揮發性儲存的混合儲存模型。在此情況下,儲存裝置18亦可包含如虛線區塊36所指示的DRAM記憶體單元。然而,即使存在DRAM記憶體單元36,儲存裝置18仍然可能並非習知DRAM模組,如圖1中的DRAM記憶體模組20。儲存裝置18中的額外半導體儲存元件可包含可定址儲存器(諸如CAM 38)及暫存器及緩衝器單元(Register and Buffer Unit;RBU)40。在一個實施例中,CAM可為靜態RAM(SRAM)。CAM 38的額外操作細節將稍後參考圖6的論述提供。在特定實施例中,CAM 38可由提供內容儲存及擷取的功能性的其他類型的可定址儲存器替換。RBU 40可包含一或多個控制暫存器42、一或多個狀態暫存器44以及其他雜項暫存器及/或緩衝器46。下文的論述主要關注控制暫存器42及狀態暫存器44,且因此,暫存器/緩衝器46的額外論述在本文中不提供。然而,應理解,暫存器及緩衝器46在儲存裝置18的操作期間可提供各種參數的額外執行階段儲存或充當「便簽式(scratchpad)」記憶體。在一個實施例中,區塊46中的儲存緩衝器可不同於稍後參看圖8所論述的非揮發性儲存部分34的緩衝組態。
如圖2的實施例中所示,儲存裝置18亦可包含用於儲存裝置18中的各種組件的操作控制的裝置控制器48。裝置控制器48可包含:用以管理對RBU 40中的各種緩衝器及暫存器的讀取及寫入的緩衝器管理器50;及用以管理對非揮發性儲存部分34的讀取及寫入的非揮發性記憶體(Non-Volatile Memory;NVM)控制器52。在一個實施例中,NVM控制器52可提供快閃記憶體介面(未圖示),其含有內部位址匯流排、資料匯流排以及控制匯流排以管理非揮發性儲存部分34中的一或多個快閃記憶體單元。在一個實施例中,裝置控制器48中的處理單元54可執行韌體層級軟體以控制緩衝器管理器50及NVM控制器52的操作且亦管理儲存裝置18中的裝置控制器48及其他電路組件(諸如CAM 38及主機介面單元32)的總操作。在一個實施例中,裝置控制器48可以硬體、韌體及/或軟體的組合來實施。因此,儲存裝置18的功能性的特定態樣可在執行階段可程式化。儘管圖2中未圖示,但裝置控制器48亦可包含電可抹除可程式化唯讀記憶體(Electrically Erasable Programmable Read Only Memory;EEROM)以儲存供儲存裝置18用的韌體。在一個實施例中,EEPROM亦可儲存裝置驅動程式軟體30的至少某一部分。在另一個實施例中,裝置控制器48可包含內部RAM(未圖示),其充當便簽式/緩衝器記憶體以供處理單元54在程式執行期間用及用於儲存便簽值。若DRAM記憶體組件(如DRAM記憶體單元36)亦存在於儲存裝置18中,則裝置控制器48亦可包含DRAM控制器(未圖示),其含有內部定址、資料匯流排以及控制介面以管理一或多個DRAM記憶體單元。
圖3說明根據本揭露內容的一個實施例的通信協定的實例流程圖58,其繪示可如何訓練儲存裝置(諸如圖1至圖2中的儲存裝置18)以「解碼」經由標準化I/O介面(諸如圖1至圖2中的DRAM記憶體介面16)自主機(諸如圖1至圖2中的主機14)接收的經編碼命令。一些例示性JEDEC定義的DRAM通道命令包含記憶體讀取命令、記憶體寫入命令、非操作命令、叢發終止命令、列啟動命令等等。圖3中所說明的方法提供一機制,儲存裝置18藉此可「理解」經由DRAM記憶體通道16自主機14接收的經編碼命令,而無需執行主機14所使用的編碼演算法的任何反向工程或無需自行施加任何主機特定編碼。圖3中的流程圖58及圖4中的流程圖72(稍後論述)提供根據本揭露內容的特定實施例的通信協定的概述。稍後參考圖5至圖6的論述提供所述協定的更多細節。在一個實施例中,圖3的流程圖58及圖4中的流程圖72中所說明的各種步驟可藉由儲存裝置18及主機14的組合來執行,儲存裝置及主機兩者可在由主機14執行的裝置驅動程式28的操作控制下。替代地,在另一個實施例中,圖3至圖4中的所有步驟可被視為由儲存裝置18執行,因為裝置驅動程式28與儲存裝置18相關聯且儲存裝置的操作由裝置驅動程式28管理。在任何情況下,在特定實施例中,可能不必識別執行特定方法步驟的精確實體(在系統10中)或根據本揭露內容的教示的通信協定的態樣。因此,此識別偶爾可在以下論述中省略。
此處應注意,僅參考數字「28」在圖3至圖9的論述中用以指裝置驅動程式,其與儲存裝置18相關聯且經組態以在驅動程式軟體由CPU 22執行時可操作地控制儲存裝置18,以及主機CPU 22及/或記憶體控制器24的某些操作。儘管在一些實施例中,可能存在駐留於儲存裝置18上的裝置驅動程式的互逆部分(如圖2中所示的裝置驅動程式模組30),且儘管裝置驅動程式30可與主機駐留驅動程式模組28通信/交互以共同地實施根據本揭露內容的教示的通信協定,但為了易於論述,僅參考數字「28」在本文中用以指驅動應用程式28、30的此組合。
參考圖3至圖4以及圖7中的方法步驟所使用且亦在其他圖式的論述期間的術語「區塊」不應與用於如「基於區塊的儲存器」、「基於區塊的儲存裝置」以及類似者的片語中所使用的術語「區塊」混淆。片語「基於區塊的儲存器」(及類似意思的其他片語)中的術語「區塊」為技術術語且不可與術語「區塊」在論述本文中的各種圖式的情況下的其他非相關出現互換地使用。術語「區塊」(如在「基於區塊的儲存裝置」中)保持相異,如自本文中的論述的內容背景可顯而易見。
現參看圖3,最初,在區塊60處,裝置驅動程式28或主機14(在裝置驅動程式28的操作控制下)可偵測儲存裝置18經附接至由主機14支援的標準化I/O介面(諸如DRAM記憶體介面16)。此偵測可(例如)在系統10通道時或當啟動系統10時發生,其中儲存裝置18安裝在DRAM通道DIMM槽中。如區塊62處所指出,在一個實施例中,儲存裝置18可為基於DIMM的SSD。在區塊60處,例如,回應於偵測,協定訓練可開始。如區塊64處所指出,作為協定訓練的部分,裝置驅動程式28可指示主機14使用I/O介面(諸如DRAM記憶體介面16)將資料型樣的序列寫入至儲存裝置18。因此,在特定實施例中,主機14(或,更具體言之,記憶體控制器24)可以用於DRAM記憶體介面16的JEDEC定義的傳輸格式將資料型樣發送至儲存裝置18。當主機14使用編碼時,序列中的資料型樣可包含各別命令資料的經編碼版本。在本揭露內容的通信協定中,序列中的資料型樣(在區塊64處)在將序列中的下一個資料型樣寫入至儲存裝置18之前可(例如,由主機的記憶體控制器24)經重複地寫入預定次數(例如,四次)。儲存裝置18中的裝置控制器48可經組態(例如,藉由裝置驅動程式28)以將序列中的寫入資料型樣的含命令資料的部分儲存於儲存裝置18中的可定址儲存器(諸如CAM 38)中,如區塊66處所指出。因此,儲存於CAM 38中的含資料命令的部分可含有對應I/O命令(諸如,例如由主機14中的記憶體控制器24發出的DRAM命令)的經編碼版本。此經編碼版本是以如接收時的方式儲存於CAM 38中,亦即,無需任何反向工程或無需主機特定編碼的任何修改。如稍後所論述,裝置控制器48中的韌體可關聯對應記憶體操作與儲存於CAM 38中的每一經編碼命令。在特定實施例中,區塊64及66處的訓練可針對自主機接收的資料型樣序列中的每一資料型樣執行。在此訓練之後,儲存裝置18中的裝置控制器48可經由主機介面單元32自(例如)主機14中的記憶體控制器24接收控制位元型樣。此控制位元型樣可在執行階段且經由I/O介面(諸如DRAM記憶體介面16)接收(區塊68)。接收的控制位元型樣可包含經編碼I/O命令(諸如DRAM命令),裝置控制器48可需要「解碼」所述經編碼I/O命令以供執行。此「解碼」可如區塊70處所指出地執行,亦即,裝置控制器48可使用可定址儲存器(諸如CAM 38)中的較早所儲存的含命令資料的部分來解碼在區塊68處經由控制位元型樣接收的I/O命令(諸如DRAM命令)。因此,基於CAM查找的「解碼」允許裝置控制器48識別接收的I/O命令(諸如DRAM命令)且作用於接收的I/O命令。
圖4描繪根據本揭露內容的一個實施例的通信協定的實例流程圖72,其繪示可如何訓練儲存裝置(諸如圖1至圖2中的儲存裝置18)以經由I/O介面(諸如圖1至圖2中的DRAM記憶體介面16)將與記憶體操作相關聯的狀態資料提供至主機(諸如圖1至圖2中的主機14)。針對回應於在圖3中在區塊68處所接收的經編碼I/O命令(諸如DRAM命令)所執行的記憶體操作,在圖4中的方法與訓練儲存裝置18以將相關狀態資料提供至主機14有關的意義上,圖4中的流程圖72可被視為與圖3中的流程圖58互補。當基於主機的CPU 22或記憶體控制器24執行經由DRAM記憶體介面16發送的記憶體命令的編碼時,CPU 22或記憶體控制器24「理解」接收自儲存裝置18的對應狀態資料且進一步處理對應狀態資料是必要的。因此,需要儲存裝置18能夠以藉由主機14辨識的編碼格式將狀態資料供應至主機14。在特定實施例中,此可使用圖4中所說明的協定訓練來實現。
如較早參看圖3中的區塊60所指出,裝置驅動程式28或主機14(在裝置驅動程式28的操作控制下)可偵測儲存裝置18經附接至由主機14支援的標準化I/O介面(諸如DRAM記憶體介面16)。在此偵測後,裝置驅動程式28可起始協定訓練。如區塊74處所指示,作為協定訓練的部分,裝置驅動程式28可指導主機14使用I/O介面(諸如DRAM記憶體介面16)將資料型樣的序列寫入至儲存裝置18。因此,在特定實施例中,主機14(或,更具體言之,記憶體控制器24)可以用於DRAM記憶體介面16的JEDEC定義的傳輸格式將資料型樣發送至儲存裝置18。當主機14使用編碼時,序列中的資料型樣可包含與命令資料相關聯的各別狀態資料的經編碼版本。在本揭露內容的通信協定中,序列中的資料型樣(在區塊74處)在將序列中的下一個資料型樣寫入至儲存裝置18之前可(例如,由主機的記憶體控制器24)經重複地寫入預定次數(例如,四次)。如區塊75處所指出,在一個實施例中,儲存裝置18可為基於DIMM的SSD。儲存裝置18中的裝置控制器48可經組態(例如,藉由裝置驅動程式28)以將序列中的資料型樣的含狀態資料的部分儲存於儲存裝置18中的暫存器中,如區塊77處所指出。此暫存器可為狀態暫存器44或如稍後所論述的其他暫存器46中的任一者。因此,在特定實施例中,每一狀態資料是以其經主機編碼的版本儲存,亦即,無需任何反向工程或無需主機特定編碼的任何修改。裝置控制器48中的韌體可聯合對應DRAM命令與在區塊77處儲存於暫存器中的每一經編碼狀態資料。在特定實施例中,區塊74及77處的訓練可針對自主機接收的資料型樣序列中的每一資料型樣執行。在區塊74及77處的此訓練之後,儲存裝置18中的裝置控制器48可經由主機介面單元32自(例如)主機14中的記憶體控制器24接收經編碼I/O命令(諸如DRAM命令)(區塊79)。此命令可在執行階段且經由DRAM記憶體介面16接收。接收的經編碼命令可由裝置控制器48使用可定址儲存器(如CAM 38)「解碼」,如圖3的實施例中的方法的內容背景中所解釋。因此,裝置控制器48可執行與接收的DRAM命令的經解碼版本相關聯的記憶體操作(諸如,記憶體讀取操作、記憶體寫入操作以及類似操作)(區塊79)。在一個實施例中,裝置控制器48可使用緩衝器管理器50存取含狀態資料的部分在區塊77處儲存所在的暫存器。此態樣在圖4中的區塊81處說明。基於記憶體操作的結果(例如,「成功」、「失敗」、「已執行」、「未執行」、「擱置」以及類似結果),裝置控制器48可自暫存器擷取對應含狀態資料的部分,如區塊83處所指出。在一個實施例中,緩衝器管理器50可由控制器48組態以使用(例如)暫存器索引查找來擷取適當的含狀態資料的部分。此後,在區塊85處,裝置控制器48可使用主機介面單元32將擷取的含狀態資料的部分提供至主機14(例如,主機中的記憶體控制器24)以作為對在區塊79處所接收的經編碼I/O命令(此處,DRAM命令)的回應。因為擷取的狀態資料相對於其主機供應的經編碼版本未改變,所以記憶體控制器24可容易地「辨識」其編碼格式且相應地解碼/處理所述資料。
圖3至圖4簡要地說明可如何依據根據本揭露內容的教示的通信協定的部分訓練儲存裝置18以自主機14接收控制及狀態資訊的經編碼版本以用於解碼未來記憶體命令及以主機可辨識的編碼格式產生相關狀態資訊。此訓練允許主機14能夠經由標準化I/O介面(諸如標準化DRAM記憶體介面16)將控制資訊發送至儲存裝置18以及自儲存裝置18接收狀態資訊。協定訓練允許儲存裝置18「解碼」接收自主機14的控制資料以執行由主機14發送的經編碼記憶體命令,且亦允許「產生」對應狀態資料以將記憶體命令的執行狀態報告至主機14。如上文參看圖3至圖4所簡要概述,經編碼記憶體命令可使用圖3的流程圖58中所示的基於CAM的查找方法來解碼,而狀態資料可使用圖4的流程圖72中所示的暫存器擷取方法以主機可辨識的編碼格式產生。因此,基於儲存裝置18的訓練,主機14與儲存裝置18之間的通信可使用DRAM通道特定的控制及狀態資料格式經由標準化DRAM記憶體介面16經促進。
在論述圖5至圖6的內容背景中的協定訓練之前,現在給出特定額外實施細節的簡明概述。如之前所提及,在特定實施例中,儲存裝置18可為DRAM記憶體通道DIMM外觀尺寸SSD,其為基於區塊的裝置。因此,儲存裝置18在主機14的DRAM記憶體映像中不顯露,即使經插入至DRAM記憶體介面16上的DIMM槽(未圖示)中。然而,例如裝置驅動程式28有可能實體地定址儲存裝置的某一部分,諸如RBU 40中的暫存器及緩衝器。因此,裝置驅動程式28可將存取磁碟機18的請求轉譯成對RBU 40中的控制/狀態/資料暫存器(及/或緩衝器)的寫入及讀取。在特定實施例中,裝置驅動程式28可自作業系統26或系 統BIOS接收此等請求。然而,主機的記憶體控制器24的DRAM記憶體通道相關的晶片選擇、組選擇以及列/行定址的實施特定映射可將RBU 40中的暫存器/緩衝器的實體定址複雜化。然而,裝置控制器48中的韌體可經設計以發現(例如,經由其在系統啟動時間在記憶體測試期間與系統BIOS的互動)記憶體控制器24的相關記憶體通道(儲存裝置18安裝於其上)、晶片選擇、組選擇以及列/行定址方案的映射。裝置控制器48接著可重新映射所發現的位址,使得儲存裝置18的內部記憶體(諸如,RBU 40中的暫存器/緩衝器、非揮發性記憶體34以及揮發性記憶體36(若存在))經組織成鄰接位址區域,如裝置驅動程式28所見。因此,典型DRAM通道特定信號(如晶片選擇、組選擇、列/行位址選通以及類似信號)可經「混疊」以定址儲存裝置18中的適當記憶體區域(非揮發性及揮發性的(若存在))(映射至適當記憶體區域上)。在以下論述中,因此假定發現記憶體控制器的位址映射及重新映射儲存裝置18的所發現的位址空間的步驟在起始協定訓練階段之前已進行。
在此觀察到,對於BIOS改變以適應儲存裝置18並非所要的或不可能的系統,發現啟動載入程式應用程式可安裝於主機14處以針對與儲存裝置18的操作正確地組態作業系統26及裝置驅動程式28。在一個實施例中,發現啟動載入程式指令可在BIOS指令之後執行,但在傳統啟動載入程式指令之前執行。發現啟動載入程式可執行系統發現程序以使記憶體控制器24能夠正確地將儲存裝置18「辨識」為有效記憶體裝置。此發現的作用可為判定儲存裝置18適合於記憶體控制器24的記憶體映像,且判定此映射是否可由裝置驅動程式28使用以操作儲存裝置18。發現啟動載入程式可修改BIOS記憶體映像表(由OS 26使用以用於理解記憶體映像)以指導OS特定記憶體空間將為儲存裝置18保留。一旦發現啟動載入程式已完成其操作且已對BIOS記憶體映像表做出恰當修改,傳統啟動載入程式即可啟動。在一個實施例中,BIOS可使用諸如進階組態與電源介面(Advanced Configuration and Power Interface;ACPI)的機制將記憶體映像資訊傳達至OS 26及裝置驅動程式28。
在特定實施例中,圖3至圖4中所示且參看圖5至圖6更詳細論述的控制/狀態協定訓練可在以下條件下開始:在「連結」主機14及儲存裝置18的DRAM記憶體通道16已「經過訓練」之後,且在如裝置驅動程式28所見的主機14的邏輯位址空間(例如由OS 26使用)至基於儲存裝置的實體位址區域的映射已判定(如較早所論述)之後。在特定實施例中,DRAM記憶體通道16的「訓練」可包含以下兩者:(i)DDR4 JEDEC定義的訓練,及(ii)針對DRAM介面的延伸記憶體實體層(Physical Layer;PHY)的訓練。在一個實施例中,系統BIOS可執行此訓練及主機14與儲存裝置18之間的DDR資料路徑/DRAM記憶體通道16的校準。
為使儲存裝置18為根據本揭露內容的教示的控制/狀態協定訓練做準備,亦可使用特定額外設計考慮因素。舉例而言,可能存在必要「交握」參數(稍後論述)及映射資訊在儲存裝置18本身上的非揮發性儲存。此外,在系統10中儲存裝置18存在下的系統BIOS、啟動載入程式或裝置驅動程式28的初始化可使用旁頻帶通信方法(諸如,在開機自我測試(Power-On Self-Test;POST)期間或在串列存在偵測(Serial Presence Detect;SPD)(若實施)期間自主機14至DIMM系統管理匯流排(System Management Bus;SMBus)的通信)來執行。在一個實施例中,BIOS、啟動載入程式或裝置驅動程式28可組態裝置控制器48中的可程式化邏輯以使儲存裝置18為後續控制/狀態協定訓練做準備。
裝置偵測、初始化以及位址空間映射的前述程序可在儲存裝置18最初經偵測為附接至DRAM記憶體介面16時進行。自Takefman等的在2014年8月21日公開的美國專利申請案公開案第US 2014/0237176號可獲得額外程序細節。
在特定實施例中,裝置控制器48可以硬體/韌體預先組態以期望來自主機的記憶體控制器24的呈特定序列/次序的協定訓練資料(控制及狀態資料)。裝置控制器48亦可經預先組態以期望主機14將每一協定訓練資料的傳輸重複預定次數(稍後論述)。此預先組態可為基於狀態機的實施,其使裝置控制器48為自主機14期望什麼及以什麼序列/次序做準備。因為亦可使裝置控制器48意識到I/O命令/狀態資訊的類型及I/O命令/狀態資訊(諸如DRAM命令/狀態資訊)在協定訓練階段期間將由主機14發送至裝置控制器的次序,所以此預先組態允許控制器48在訓練階段期間在內部「解譯」每一接收的經編碼命令及狀態資料。舉例而言,若硬體預先組態指示記憶體讀取命令將為在訓練階段起始時自主機14接收的第一命令,則裝置控制器48可以硬體/韌體組態以在訓練階段期間藉由將適當內部記憶體提取操作指派至儲存於可定址儲存器(如CAM 38)中的記憶體讀取命令的經編碼版本來「解譯」此命令。在所述訓練之後,當經編碼命令在執行階段自主機14接收且「經解碼」為記憶體讀取命令時,裝置控制器48可僅執行在協定訓練階段期間較早在內部指派的命令特定記憶體提取操作。記憶體提取操作可包含(例如)位址轉譯、存取內部非揮發性記憶體部分34中的特定記憶體單元、自所存取的記憶體單元擷取所儲存內容以及類似操作。以此方式,可執行接收的命令而無需執行編碼演算法的任何反向工程。可類似地處理在協定訓練期間自主機14接收的每一經編碼命令及狀態資料。結果,在協定訓練結束時,儲存裝置18即將經由DRAM記憶體介面16與主機14通信,與經由DRAM記憶體介面16進行的通信的主機特定編碼無關。
在儲存裝置18為基於區塊的非揮發性記憶體(諸如SSD)的情況下,可能不需要在訓練階段期間(尤其當此資訊特別唯一可適用於習知的基於DRAM的DIMM時)將特定DRAM通道命令或狀態資訊發送至此基於區塊的儲存裝置。在此情況下,在一個實施例中,可在訓練階段期間將JEDEC定義的DRAM通道特定的控制/狀態資訊的子集發送至儲存裝置18,且稍後在執行階段期間交換。
圖5繪示根據本揭露內容的一個實施例的在協定訓練階段期間用於控制及狀態資料的例示性的基於暫存器的儲存組態。在圖5中,圖2的RBU 40中的各種暫存器經繪示為包含控制暫存器42、狀態暫存器44以及多個其他暫存器46。如較早所提及,在特定實施例中,裝置驅動程式28與儲存裝置18之間的「交握」可使所述裝置為協定訓練模式做準備。舉例而言,在I/O儲存裝置(諸如,基於DIMM的SSD)的情況下,「交握」可允許裝置驅動程式28將SSD在訓練階段期間置於「全域組態」模式下。在一個實施例中,RBU 40中的每一暫存器可儲存64位元組的DRAM叢發(非ECC)且可具有與其相關聯的偏移位址,如圖5中所示。舉例而言,裝置控制器48中的緩衝器管理器50可在內部關聯十六進位的偏移位址「0x0」與控制暫存器42,關聯偏移位址「0x40」與狀態暫存器44等等。然而,當ECC存在於系統10中時,每一暫存器可經組態以接收且儲存最多72個位元組以容納隨附對應的8位元組的ECC(每個8位元的原始資料1位元的ECC)的主機ECC資料(64位元組的「原始」資料)。舉例而言,在圖5的64位元組暫存器儲存組態中的控制暫存器42的情況下,緩衝器管理器50可經組態以將64位元組的原始控制資料儲存於控制暫存器42中,而8位元組的ECC資料可儲存於RBU 40中的其他暫存器46(諸如具有偏移位址0x80、0xC0、0x100等等的暫存器)中的任一者中。在此情況下,術語「控制暫存器」可共同地指控制暫存器42以及儲存ECC部分的暫存器。在訓練期間,亦可類似地儲存72位元組的狀態資料。因此,在特定實施例中,ECC資料可能不需要進行映射。
在特定實施例中,暫存器特定偏移位址可在驅動程式-裝置交握期間輸送(由裝置控制器48)至裝置驅動程式28。此外,儲存裝置18本身可使基底位址與其相關聯,例如,在主機的BIOS中所產生的記憶體映像。在一個實施例中,記憶體控制器24可由裝置驅動程式28可操作地組態以結合基底位址使用偏移位址來存取RBU 40中的特定暫存器。因此,協定訓練中的第一步驟可為設置/建立至少一個控制暫存器42且使記憶體位址(=儲存裝置的基底位址+0x0)與控制暫存器關聯,且亦可為設置至少一個狀態暫存器44且使對應的記憶體位址(=儲存裝置的基底位址+0x40)與狀態暫存器關聯,使得通信可在剩餘協定訓練期間在主機14與基於DIMM的儲存裝置18之間發生。此後,在協定訓練階段期間,裝置驅動程式28可指導主機的記憶體控制器24(例如,經由CPU執行運作裝置驅動程式28的OS 26)將多個控制/狀態位元型樣(如下文所論述)寫入至與控制/狀態暫存器相關聯的記憶體位址。
此處應注意,因為儲存裝置18並非習知DRAM記憶體模組(如圖1中的DRAM記憶體模組20),所以傳統上經由DRAM記憶體介面16的位址/命令匯流排發送的記憶體命令及其他控制信號不可由儲存裝置18辨識。因此,在本揭露內容的特定實施例中,DRAM記憶體介面16的資料匯流排部分可由記憶體控制器24使用以將此等信號以二進位形式輸送至儲存裝置18(在協定訓練器件及此後在執行階段期間)。然而,在習知DRAM通道通信中,資料通常作為DRAM叢發(諸如,64位元組(或72位元組,在ECC的情況下)的DRAM叢發)在資料匯流排上發送。因此,協定訓練期間的每一資料(控制或狀態)寫入操作亦可作為64位元組DRAM叢發由記憶體控制器24發送。然而,通常,僅64位元組叢發的第一位元組可含有實際命令或狀態資訊;其他位元組可含有(例如)不相關資料或藉由記憶體控制器24填補的虛設資料位元(例如,在編碼方案下視需要)以產生64位元組叢發以用於控制/狀態寫入操作。因此,視加擾、位元/位元組摻和/操控、資料交錯、ECC或任何其他類型的編碼而定,在自主機14接收的64個位元組中,小至一個位元組可為控制/狀態暫存器中的有用部分。此使用相同參考數字「88」象徵性地說明以共同地指圖5中所示的每一暫存器中的一個位元組的儲存空間。然而,在特定實施例中,資料叢發中的一個以上位元組可用以輸送「原始」命令/狀態資料。
此處應注意,含有控制或狀態資料的每一DRAM叢發在本文中可被稱為「資料型樣」。在控制資料的內容背景中,每一資料型樣可被稱為「控制位元型樣」,其可包含各別DRAM命令的經編碼版本。如下文所論述,儲存裝置18中的裝置控制器48可選擇將接收的控制位元型樣的「含命令資料的部分」儲存於可定址儲存器(如CAM 38)中以供隨後在執行階段查找。因此,儘管術語「控制資料」及「命令資料」在本文中通常可被互換地使用,但偶爾區分所述兩者僅用以說明DRAM命令資料(無論是否經編碼)實際上可組成自主機接收的整個控制資料型樣的小部分。類似地,在狀態資料訓練的內容背景中,來自主機14的每一資料型樣可包含各別狀態資料的經編碼版本。裝置控制器48接著可選擇適當「含狀態資料的部分」且將其儲存於RBU 40中的暫存器中以供隨後在執行階段查找。
現參看控制協定訓練階段,應注意,相關的JEDEC定義的(或標準化)DRAM命令可使用每個命令唯一的8-位元資料型樣來輸送。因此,訓練階段期間的第一步驟為裝置驅動程式28可操作地組態記憶體控制器24(或CPU 22)以將單一位元組的命令資料(具有範圍介於0至255的值)依序寫入至具有偏移位址0x0的控制暫存器42。如上文所指出,此單一位元組可使用64位元組(非ECC)或72位元組(ECC)DRAM叢發來發送。在圖5的實施例中,可使用/定址同一控制暫存器42以儲存每一依序接收的控制位元型樣。在特定實施例中,每一位元組值可重複地寫入預定次數。在一個實施例中,預定數目可經由裝置驅動程式28使用者可程式化。舉例而言,在一個實施例中,命令資料的每一位元組可以如下次序依序寫入四(4)次:0、0、0、0、1、1、1、1、2、2、2、2、……、254、254、254、254、255、255、255、255。在一個實施例中,除控制暫存器42之外,RBU 40中的其他暫存器46亦可藉由緩衝器管理器50在內部使用以儲存同一控制位元型樣的反覆傳輸,即使當所有控制位元型樣經定址至同一控制暫存器42時。如較早所指出,在編碼由主機14使用的情況下,每一「原始」命令位元組可附加ECC及/或經加擾(亦可能及那個位元/位元組摻和/操控),且接著作為控制位元型樣藉由記憶體控制器24重複地發送至儲存裝置18,控制位元型樣可為64位元組(不具ECC)或72位元組(具有ECC)的DRAM叢發。每一(命令)位元組值(呈對應控制位元型樣的形式)可發送(例如)四次,以免於罕見的位元錯誤。因此,同一控制位元型樣的反覆傳輸可提供對資料完整性的檢查。若四個控制位元型樣不相同,則裝置控制器48可針對每一位元位置在四個型樣中尋找三個匹配型樣。另一方面,若位元位置具有兩個1及兩個0,則裝置控制器48可將錯誤狀態報告至裝置驅動程式28。錯誤狀態可指示I/O通道(如DRAM通道16)可能不可使用或可表示I/O通道需要再訓練。
在編碼存在下,每一控制位元型樣包含對應命令資料位元組的經編碼版本。然而,由於編碼(諸如,加擾、位元/位元組摻和/操控、資料交錯以及類似操作),接收的控制位元型樣中的含命令資料的部分在長度上可大於位元組。舉例而言,記憶體控制器24所使用的加擾粒度可為實施特定的,且可導致命令資料位元分佈在64位元組(或72位元組)控制位元型樣的較小或較大區段上。因此,在接收控制位元型樣後,裝置控制器48中的邏輯可能需要判定控制位元型樣中的含命令資料的部分。在一些實施例中,基於對期望什麼命令資料及什麼次序的瞭解,裝置控制器48可評估各別控制位元型樣(在藉由記憶體控制器24發送的控制位元型樣的序列中)中的命令資料的經編碼版本的位置的統計分佈,且亦可視情況估計分佈的隨機性的位準(諸如當加擾存在時)。基於評估及估計(若存在),裝置控制器48可識別經評估位元位置內的命令資料位元。含有此等經識別命令位元的資料部分可被視為各別控制位元型樣的含命令資料的部分。在特定實施例中,僅含命令資料的部分(包含經識別的資料位元)可儲存於CAM 38中,如下文參看圖6所論述。因此,將儲存於CAM 38中的位元的數目可取決於主機的記憶體控制器24所使用的加擾的位準。
含命令資料的部分在控制協定訓練階段期間可被視為將儲存於儲存裝置18(更具體言之,圖2及圖7的實施例中的CAM 38)中的「經訓練值」。在特定實施例中,(控制位元型樣的)每一DRAM叢發的經訓練值視加擾及其他編碼(如之前所指出)的位準可包括以下位元數目中的一者:64位元(無ECC)或72位元(ECC存在),或128位元(無ECC)或144位元(ECC存在),或256位元(無ECC)或288位元(ECC存在)等等。與自主機14接收的每一控制位元型樣相關聯的經訓練值可儲存於CAM 38中。
相同步驟可針對狀態協定訓練重複,且因此,此處僅提供狀態協定訓練的簡明論述。含有狀態資料的「訓練」資料型樣可寫入至具有偏移位址0x40的狀態暫存器44。如在控制位元型樣的情況下,每一資料型樣可重複預定次數,如四次。如較早所指出,同一資料型樣的反覆傳輸的預定數目可(例如)經由裝置驅動程式28使用者可程式化。在狀態協定訓練的情況下,所取得值(或含狀態資料的部分)可能可不同於與控制協定訓練相關聯的所取得值,即使訓練序列在兩種情況下是相同的:0、0、0、0、1、1、1、1、2、2、2、2、……、254、254、254、254、255、255、255、255。所述值可能不同,因為資料加擾可具有位址相依性,且控制暫存器及狀態暫存器具有與其相關聯的不同記憶體位址。此外,ECC(若存在)可提供發送至儲存裝置18的狀態資料型樣中的額外差異。因此,可能需要針對每一暫存器42及44分開地執行資料取得步驟。換言之,控制協定訓練應與狀態協定訓練分開進行。在此觀察到,在一個實施例中,「狀態暫存器」可包含暫存器44及RBU 40中的其他暫存器(藉由緩衝器管理器50在內部存在)。在特定實施例中,所有含狀態資料的部分可儲存於單一狀態暫存器44中,所述單一狀態暫存器可經組態以儲存256個輸入項,每一輸入項具有64位元(非ECC)/72位元(ECC)或更多位元。替代地,在其他實施例中,狀態暫存器44可僅接收基於DRAM叢發的狀態資料型樣(64或72位元組);含狀態資料的部分可儲存於RBU 40中的其他暫存器46中的一或多個暫存器中。緩衝器管理器50可按需要在內部管理對RBU 40中的各種暫存器的存取以及對暫存器儲存的內容的擷取。
若前述控制/狀態訓練中的任一者失敗,則可能需要等待相對長的時間(諸如10 ms),接著重新起始訓練。在特定實施例中,儲存裝置18可經組態以於在訓練階段期間無值被接收持續2 ms的情況下「逾時」,且所述裝置可接著假定訓練將重新開始。
一旦針對控制暫存器及狀態暫存器的協定訓練結束,現在存在供主機14及儲存裝置18用來經由標準化I/O通道進行通信的機制,與主機特定編碼方案無關。舉例而言,在執行階段,主機14(執行裝置驅動程式28)可(使用控制資料型樣的DRAM叢發)將命令位元組寫入至儲存裝置18上的偏移位址0x0(表示控制暫存器42)。在一個實施例中,裝置控制器48可首先判定接收的控制資料型樣中的含命令資料的部分,接著執行所有256個72位元經編碼值(或用於儲存的含命令資料的部分的任何其他位元大小,如較早所論述)的CAM查找以「解碼」接收的含命令資料的部分,以判定與經解碼部分相關聯的各別命令位元組。如之前所提及,裝置控制器48中的韌體可識別命令位元組及執行所述命令所需的相關聯記憶體操作。下文參看圖6描述CAM查找。類似地,儲存裝置18可寫入/產生主機14可讀取的適當的含狀態資料的部分。舉例而言,在命令執行結束後(或當需要將狀態資訊報告至主機14時,在執行階段期間的任何時間),裝置控制器48中的韌體可基於用於命令執行的記憶體操作的結果而判定用以報告命令執行的結果的適當狀態位元組。此後,裝置控制器48可執行狀態暫存器44或任何其他暫存器(其中含狀態資料的部分已在狀態協定訓練階段期間儲存)的索引查找,以識別/產生正確的72位元經編碼值(或用於儲存的含狀態資料的部分的任何其他位元大小,如較早所論述)以報告回至主機14。在執行階段,經識別的含狀態資料的部分可寫入至狀態暫存器44或RBU 40中的(充當「狀態暫存器」的)任何其他暫存器。因為經識別值是以與在狀態訓練階段期間最初自記憶體控制器24接收相同的編碼格式儲存,所以記憶體控制器24可正確地解碼經識別值(解擾、ECC檢查以及類似者)且將狀態資訊報告至CPU 22。記憶體控制器24可由裝置驅動程式28組態以讀取適當暫存器以擷取正由儲存裝置18報告的狀態值。與比較解碼接收的控制資料型樣所需的兩個資料值相比,狀態資料產生不需要此比較,且因此,在特定實施例中,可不存在對使用用於含狀態資料的部分的基於CAM的儲存器的需要。
此處應注意,通常一個位元組的DRAM叢發可含有控制或狀態資料。因此,在控制/狀態協定訓練期間可使用總共256個資料型樣。相關位元組可為DRAM叢發中的第一位元組。然而,情況不可始終如此。舉例而言,在一些實施例中,可能需要DRAM叢發中的一個以上位元組來輸送控制/狀態資料。因此,上文的基於256資料型樣的論述僅為實例。在特定實施例中,用於控制及狀態協定訓練的資料型樣的總數目可大於或小於256。此外,用於控制協定訓練的資料型樣的總數目可不同於用於狀態協定訓練的資料型樣的總數目。另外,在特定實施例中,可能存在多個控制暫存器42及多個狀態暫存器44,此情況可使訓練頻寬增加。舉例而言,在多個暫存器組態中,每一暫存器可與特定集合或類型的控制/狀態資訊相關聯以使訓練資料的頻寬增加。每一暫存器亦可經指派其自身的記憶體位址且可由記憶體控制器24獨立地定址。
圖6說明根據本揭露內容的一個實施例的圖2的儲存裝置18中的CAM 38的簡化架構。不同於使用者供應記憶體位址且記憶體傳回儲存於此位址處的資料字的標準電腦記憶體(諸如RAM或DRAM),CAM 38經設計以使得使用者供應資料字且CAM搜尋其整個記憶體以查看此資料字是否儲存於其中的任何位置處。若發現資料字,則CAM 38可傳回CAM 38中的發現所述字的一或多個儲存位址的清單。在一些實施例中,CAM 38亦可傳回資料字或其他相關聯資料片段。基於由CAM 38傳回的儲存位址,裝置控制器48可存取CAM 38內的此位址且擷取對應資料。因此,在圖6的實施例中,CAM 38可接收待搜尋的內容(此處為含命令資料的部分)作為輸入90。如之前所指出,至CAM 38的輸入90可為自在執行階段自主機14接收的控制資料型樣提取的含命令資料的部分。接收的輸入可儲存於CAM 38中的搜尋暫存器92中。CAM 38中的邏輯電路(未圖示)接著可對CAM儲存的內容94(表示在控制協定訓練階段期間所產生的「經訓練資料」的含命令資料的部分全部儲存於其中)執行搜尋操作93。在較早所論述的控制協定訓練實例的內容背景中,CAM儲存的內容94可包含256個輸入項,每一輸入項具有64位元(無ECC)或72位元(具ECC)或更多位元。若搜尋暫存器92中的內容與存在於CAM儲存的內容94中的任何輸入項匹配,則CAM 38可產生輸出96,所述輸出可提供CAM儲存的內容部分94中的匹配位置的位址及/或匹配內容本身。如較早所提及,匹配內容將為在控制協定訓練階段期間儲存且匹配CAM輸入90的含命令資料的部分。亦如較早所論述,CAM輸出96可由裝置控制器48使用以「解碼」(在CAM輸入90)接收的含命令資料的部分以判定與經解碼部分相關聯的各別命令位元組,且隨後執行命令。此處應注意,CAM查找可不必在單一時脈週期中發生。此外,具有適當資料結構的硬體支援(諸如,在控制協定訓練之後,但在查找開始之前的CAM內容至樹型結構的預先組織)可減小來自匹配內容的擷取的效能影響。
圖7為根據本揭露內容的一個實施例的說明使用者資料可如何儲存於圖1至圖2的儲存裝置18中的實例流程圖100。如參看圖7至圖8中的實施例論述,使用者資料的儲存及擷取可不同於較早參看圖3至圖6所論述的控制/狀態資料的儲存及擷取。圖7中的流程圖100與當編碼由主機14使用時的使用者資料的儲存有關。在特定實施例中,流程圖100中所說明的各種操作態樣可由儲存裝置18(例如,由儲存裝置中的裝置控制器48在裝置驅動程式28、30的操作控制下)執行。然而,為論述簡單及容易起見,偶爾可省略執行特定方法步驟的實體/多個實體的特定識別。再次參看圖7,在區塊101處,儲存裝置18最初可經組態為可附接至由主機(諸如主機14)支援的I/O介面(如DRAM記憶體介面16)且經由I/O介面可操作。儲存裝置18亦可經組態以將自主機14接收的使用者資料儲存於儲存裝置18內的多個緩衝器中。在圖8中繪示例示性緩衝器組態,稍後將論述所述例示性緩衝器組態。在特定實施例中,所述緩衝器組態可具有多個相同大小的緩衝器。如前所述,在特定實施例中,儲存裝置18可為基於DIMM的SSD,如圖7中的區塊102處所指出。在區塊104處,儲存裝置18可經由I/O介面(諸如DRAM記憶體介面16)自主機14接收(例如,作為記憶體寫入操作的部分)以下各者:(i)儲存裝置中的多個緩衝器中的一者的經記憶體映射緩衝器位址,及(ii)使用者資料的記憶體頁的經編碼版本。如之前所提及,加擾、ECC、位元/位元組摻和/操控及/或任何其他類型的資料編碼/保護可存在於自主機14接收的使用者資料的經編碼版本中。在特定實施例中,資料的每一記憶體頁的大小可為4千位元組(kilobyte;KB)。在區塊106處,儲存裝置18可將接收的使用者資料的經編碼版本儲存至具有經記憶體映射緩衝器位址(在區塊104處自主機14接收)的緩衝器中。因此,使用者資料是在如接收時的條件(包含藉由主機14的任何編碼且無需修改主機特定編碼格式)下儲存。此後,在區塊108處,儲存裝置18可接收來自主機14的用以讀取儲存在與較早在區塊104處所接收的緩衝器位址相同的經記憶體映射緩衝器位址處的內容的指令。作為回應,儲存裝置18可存取適當緩衝器(此處為在區塊106處選擇的緩衝器)且經由I/O介面(諸如DRAM記憶體介面16)將較早接收的使用者資料的所儲存經編碼版本(在區塊104、106處)提供至主機14,如區塊110處所指出。因為擷取的資料是在未對其編碼格式作任何修改的情況下儲存(在區塊106處),所以主機的記憶體控制器24可「辨識」在區塊110處發送至其的經編碼資料且能夠按需要解碼所述經編碼資料。因此,藉由保持儲存於儲存裝置18中的使用者資料中的主機特定編碼,有效的基於DRAM通道的使用者資料通信(儲存及擷取)機制可在儲存裝置18與主機14之間建立,與主機14所使用的特定編碼方案無關且沒有在儲存裝置18處執行反向工程的任何需要。
圖8根據本揭露內容的特定實施例說明可如何使用適當的位址映射及集合-結合性來「組織」圖1至圖2的儲存裝置18中的非揮發性記憶體(諸如,圖2中的NVM儲存部分)以儲存使用者資料。為論述及易於解釋起見,在圖8的內容背景中假定:儲存裝置18為基於區塊的儲存裝置,諸如基於DIMM的SSD。參考圖8的實施例所論述的儲存組態亦可適用於其他類型的儲存裝置,具有合適修改(若需要)。圖8的例示性實施例中的儲存部分34經繪示分別「組織」成兩個「記憶體組」115、117(記憶體組0及記憶體組1),藉此有效地將SSD的基於區塊的儲存組態「轉換」成基於記憶體組的儲存配置(性質上類似於習知DRAM模組中的記憶體組),但不實體地修改儲存部分34中的非揮發性/快閃記憶體單元的組態/架構/佈局。換言之,儲存裝置18及儲存部分34保持基於區塊;圖8中的基於記憶體「組」的配置僅為用以「對準」儲存裝置18中的非揮發性儲存器34與典型的基於DRAM模組的儲存組態以提供使用者資料的儲存的靈活性的內部機制/設計(由NVM控制器52或裝置控制器48操作性地管理),如下文所論述。當記憶體控制器24希望經由DRAM記憶體介面16讀取/寫入使用者資料時,此等記憶體組115、117可充當儲存裝置18中的記憶體映射位置。因為圖8的實施例中的儲存裝置18為基於區塊的SSD,所以每一記憶體映射位置(或記憶體組)可具有與之相關聯的一對I/O緩衝器。每一I/O緩衝器可經組態以充當寫入緩衝器及讀取緩衝器。此基於緩衝器的組態可使主機14能夠在相同位置/緩衝器位址處讀取或寫入資料,以使加擾、ECC及/或任何其他基於主機的編碼方案正確地工作,尤其在編碼方案(諸如加擾)具有位址相依性時。如圖8中所示,每一記憶體組115、117可由兩個不同的相同大小的實體「緩衝器」(緩衝器0及緩衝器1)「形成」。結果,在圖8中繪示總共兩個記憶體組115、117及四個緩衝器119至120、122至123。每一緩衝器119至120、122至123可充當讀取緩衝器(用於在記憶體讀取操作期間將資料發送至主機)及寫入緩衝器(用於在記憶體寫入操作期間自主機接收資料)。
此處應注意,圖8中所示的記憶體組115、117基本上可為邏輯分區,其可藉由裝置控制器48(或,圖2中的NVM控制器52)在內部管理,以使主機的記憶體控制器24能夠分開定址每一記憶體組115、117,如同記憶體組115、117為連接至DRAM記憶體介面16的DRAM記憶體組,如圖1中的DRAM記憶體模組20中的記憶體組(未圖示)。因此,圖8中的邏輯分割允許記憶體控制器24處理NVM儲存部分34,其類似於典型的基於DIMM的DRAM記憶體模組(如DRAM記憶體模組20)中的基於記憶體組的儲存組態。
此外,經由上述配置所建立的「緩衝器」119至120及122至123可不同於圖2中的RBU 40中的緩衝器46。舉例而言,圖8的實施例中的每一「緩衝器」119至120、122至123實體上可由非揮發性儲存器34中的多個快閃記憶體單元的各別部分形成。另外,每一緩衝器119至120、122至123中的記憶體單元可被有效地分割成多個相同大小的「區塊」或「磁區」125至140以提供SSD 18的必需的基於區塊的儲存器。如圖8中所示,區塊125至128與緩衝器119有關,區塊129至132與緩衝器120有關,區塊133至136與緩衝器122有關,且區塊137至140與緩衝器123有關。在圖8的實施例中,假定每一區塊等於自主機的記憶體控制器24接收的使用者資料的DRAM記憶體頁的大小。在一個實施例中,每一記憶體頁可具有4千位元組(KB)的大小。記憶體頁大小可為固定的且在系統10中預定義,但在不同系統中可以不同。因此,每一I/O緩衝器119至120、122至123可具有16 KB的大小(針對使用者資料),且可操作以儲存ECC位元(若存在)。因此,所有四個I/O緩衝器119至120、122至123可跨總共64 KB的位址空間(16 KB/緩衝器×4個緩衝器)記憶體映射(藉由主機OS 26及記憶體控制器24)。在一個實施例中,來自主機的記憶體控制器24的經記憶體映射緩衝器位址(在圖7中的區塊104處)不僅可識別與給定I/O緩衝器相關聯的記憶體組,而且可識別經識別記憶體組內的緩衝器本身。舉例而言,若存在由主機14執行的對記憶體組115中的緩衝器119的記憶體寫入操作,則來自主機14的經記憶體映射緩衝器位址不僅可包含識別與緩衝器119相關聯的記憶體組115的位址,而且包含緩衝器119的偏移位址0x0。藉由主機的記憶體控制器24在DRAM記憶體通道16上傳輸的此經記憶體映射緩衝器位址亦可包含用於基於DIMM的SSD 18的系統基底位址以在DRAM通道上識別SSD 18。
在圖8的實施例中,緩衝器中的每一區塊可使用對應的邏輯區塊位址(LBA)可存取,且多個LBA可使用集合結合性指派給每一各別實體區塊。每一LBA可與區塊/磁區中的資料的4KB記憶體頁相關聯。舉例而言,如圖8中所示,LBA 0至LBA 3可指派給記憶體「組」115中的緩衝器119(偏移位址0x0)中的區塊0至3(分別使用參考數字125至128識別),LBA 4至LBA 7可指派給記憶體「組」115中的緩衝器120(偏移位址0x4000)中的區塊4至7(分別使用參考數字129至132識別),LBA 8至LBA 11 可指派給記憶體「組」117中的緩衝器122(偏移位址0x8000)中的區塊8至11(分別使用參考數字133至136識別),且 LBA 12至LBA 15 可指派給記憶體「組」117中的緩衝器123(偏移位址0xC000)中的區塊12至15(分別使用參考數字137至140識別)。集合結合性可允許多個不同LBA指代緩衝器中的同一實體區塊。舉例而言,在圖8的實施例中的在兩個記憶體組115、117中分割的總共十六個區塊的情況下,LBA可使用用於集合結合性的模16操作來指派給特定區塊。因此,LBA 16可與緩衝器119中的區塊0(16模16=0)相關聯,LBA 17可與緩衝器119中的區塊1(17模16=1)相關聯等等,如圖8中所示。換言之,使用集合結合性,LBA 0、16、32、48等等可指派給緩衝器119中的同一區塊0;LBA 1、17、33、49等可指派給緩衝器119中的同一區塊1,諸如此類,如圖8中所示。在特定實施例中,集合結合性可能僅在主機14所使用的編碼方案(諸如,加擾)具有位址相依性時需要。若主機加擾方案不具有位址相依性,則可不需要集合結合性。在此情況下,與區塊/磁區相關聯的多個LBA值可不符合模16操作。
觀察到,在圖8的實施例中,使用者資料可藉由使用用於讀取及寫入操作的不同LBA同時地自同一位置/緩衝器寫入及讀取。然而,在特定實施例中鑒於集合結合性,每一特定LBA仍可能需要寫入至指派給LBA的同一緩衝器位址或自指派給LBA的同一緩衝器位址讀取。如較早所論述,來自主機14的使用者資料可儲存於SSD 18上,正如所述使用者資料自主機的記憶體控制器24接收,亦即,以經加擾形式且包含ECC(若存在)。即使加擾具有位址相依性,較早參考圖8的實施例所論述的資料儲存方法亦可起作用,因為資料始終自同一實體記憶體緩衝器位置讀回。因為自主機14接收的使用者資料經儲存而無任何修改,所以此確保記憶體控制器24將能夠正確地解加擾擷取的資料且針對回讀資料檢查ECC。
此處觀察到,自主機14接收的使用者資料中的額外ECC位元可能影響圖8的基於區塊的儲存組態中的資料區塊的「對準」。此外,ECC位元可能影響基於DIMM的SSD 18的隨機寫入/讀取效能。然而,在特定實施例中,裝置/SSD控制器48(或NVM控制器52)可經組態(諸如,在韌體中或在執行階段經由裝置驅動程式28、30)以管理此含ECC的資料跨緩衝器中的不同區塊的儲存以促進隨機讀取/寫入效能。
圖8的例示性實施例中所說明的記憶體組態可經擴展以涵蓋8個組(類似於DDR3 DRAM)或16個組(類似於DDR4 DRAM)或任何其他現存或未來的DRAM記憶體組組態(或儲存容量),以促進藉由記憶體控制器24進行的經由DRAM記憶體通道16上的基於記憶體組的定址的使用者資料的儲存/擷取,即使儲存裝置18並非習知DRAM模組。
圖9描繪根據本揭露內容的一個實施例的圖1中的系統10(併有儲存裝置18)的總體佈局。因此,為了易於參考及論述,相同參考數字在圖1及圖9中用於共同系統組件/單元。
在圖9中,主機處理器單元14經繪示耦接至系統記憶體單元12(經由DRAM記憶體介面16),亦耦接至周邊儲存器144、一或多個輸入裝置146、一或多個輸出裝置147以及網路介面149。在一些實施例中,系統10可包含所繪示的裝置或單元的一個以上實例。系統10的一些實例包含電腦系統(桌上型或膝上型)、平板電腦、行動裝置、視訊遊戲單元或控制台、機器間(machine-to-machine;M2M)通信單元、無狀態「精簡型」用戶端系統,或具有DRAM記憶體介面(如DRAM記憶體介面16)的任何其他類型的計算或資料處理裝置。在各種實施例中,系統10可經組態為架可安裝伺服器系統、獨立系統或具有任何其他合適外觀尺寸。在一些實施例中,系統10可組態為用戶端系統而非伺服器系統。
在特定實施例中,主機處理器單元14可包含一個以上CPU,及/或系統10可包含一個以上主機處理器單元14(例如,以分散式處理組態)。主機14的額外細節已經較早參考圖1至圖2的論述提供,且因此,出於簡潔起見,在此不重複彼等細節。當系統10為多處理器系統時,可能存在CPU或處理器的一個以上實例。如較早所提及,主機14可為系統單晶片(SoC)。
系統記憶體單元12可包含至少一個基於DIMM的儲存裝置,如圖1至圖2中的儲存裝置18。儲存裝置18可(以硬體及/或軟體)組態以執行如圖3至圖8中的實施例的控制/狀態/使用者資料的儲存及擷取。在特定實施例中,系統記憶體單元12亦可包含一或多個DRAM模組,如圖1中的DRAM記憶體模組20。可包括儲存裝置18的記憶體單元的各種實例亦在參考圖1至圖2的論述給出。DRAM記憶體模組20可包含習知DDR2/DDR3/DDR4 DRAM模組,或基於DRAM的3DS記憶體模組,諸如HBM模組或HMC記憶體模組。又,在一些實施例中,系統記憶體單元12可包含多個不同類型的半導體記憶體,與單一類型的記憶體對照。
在各種實施例中,周邊儲存器144可包含對磁性、光學、磁光學或諸如硬碟機的固態儲存媒體、光碟(諸如CD或DVD)、非揮發性RAM裝置等的支援。在一些實施例中,周邊儲存器144可包含更複雜的儲存裝置/系統,諸如磁碟陣列(其可為合適的獨立磁碟冗餘陣列(Redundant Array of Independent Disks;RAID)組態),或儲存區域網路(Storage Area Network;SAN),其可經由標準小型電腦系統介面(Small Computer System Interface;SCSI)、光線通道介面、Firewire®(IEEE 1394)介面或另一合適介面耦接至處理器14。在一個實施例中,周邊儲存器144可經由標準周邊介面耦接至處理器14,標準周邊介面諸如基於快速周邊組件介面(Peripheral Component Interface Express;PCI Express™)標準的介面、基於通用串列匯流排(Universal Serial Bus;USB)協定的介面或基於IEEE 1394(Firewire®)協定的介面。
在特定實施例中,輸入裝置146可包含標準輸入裝置,諸如電腦鍵盤、滑鼠或其他指標裝置、觸控板、操縱桿或任何其他類型的資料輸入裝置。輸出裝置147可包含圖形/顯示裝置、電腦螢幕、音訊揚聲器、警報系統、電腦輔助設計/電腦輔助機械加工(Design/Computer Aided Machining;CAD/CAM)系統、視訊遊戲台或任何其他類型的資料輸出或程序控制裝置。在一些實施例中,輸入裝置146及輸出裝置147可經由I/O或周邊介面耦接至主機處理器單元14。
在一個實施例中,網路介面149可與主機處理器單元14通信以使系統10能夠耦接至網路(未圖示)。在另一實施例中,網路介面149可完全不存在。網路介面149可包含任何合適的裝置、媒體及/或協定內容以用於將系統10連接至網路(無論有線或無線)。在各種實施例中,網路可包含區域網路(Local Area Network;LAN)、廣域網路(Wide Area Network;WAN)、網際網路、有線或無線乙太網路、電信網路或其他合適類型的網路。
系統10可包含機載電源供應器單元150以將電力提供至圖9中所說明的各種系統組件。電源供應器單元150可收納電池組或可為可連接至AC電力插座。在一個實施例中,電源供應器單元150可將太陽能轉換成電力。
在前述描述中,出於解釋目的而非限制,闡述特定細節(諸如特定架構、介面、技術等)以便提供對所揭露技術的透徹理解。然而,熟習此項技術者將顯而易見,所揭露技術可在脫離此等特定細節的其他實施例中實踐。亦即,熟習此項技術者將能夠設計各種配置,儘管未在本文中明確地描述或繪示,但所述配置體現所揭露技術的原理。在一些情況下,省略熟知裝置、電路以及方法的詳細描述以免所揭露技術的描述與不必要細節混淆。本文中引述所揭露技術的原理、態樣以及實施例以及其特定實例的所有陳述意欲涵蓋其結構上及功能上的等效物。另外,希望此等等效物包含當前已知的等效物以及未來開發的等效物兩者,例如,不管結構如何,所開發的執行相同功能的任何元件。
因此,舉例而言,熟習此項技術者應瞭解,本文中(諸如,圖1至圖2、圖5至圖6以及圖8至圖9中)的方塊圖可表示體現技術的原理的說明性電路系統或其他功能單元的概念視圖。類似地,應瞭解,本文中(諸如,圖3至圖4以及圖7中)的流程圖可表示基本上可(例如)由儲存裝置18結合裝置驅動程式28、30且在涉及與主機單元14的通信的操作環境中執行的各種程序或創新態樣。主機14亦可經合適組態(以硬體及/或軟體)以支援本文中所論述的各種協定訓練及資料儲存方法。在特定實施例中,主機14可包含(例如)通用處理器、專用處理器、習知處理器、數位信號處理器(digital signal processor;DSP)、多個微處理器、與DSP核心相關聯的一或多個微處理器、微控制器、特定應用積體電路(Application Specific Integrated Circuit;ASIC)、場可程式化閘陣列(Field Programmable Gate Array;FPGA)電路、任何其他類型的積體電路(integrated circuit;IC)及/或狀態機。
當特定發明性態樣需要基於軟體的處理時,此軟體或程式碼可駐留於電腦可讀資料儲存媒體(未圖示)中。此資料儲存媒體可為周邊儲存器144的部分,或可為主機14及儲存裝置18的內部記憶體的部分(如前所述)。主機14及/或裝置控制器48(在儲存裝置18中)可執行儲存於此媒體上的相關指令以進行基於軟體的處理。此等相關指令可包含(例如)較早所論述的不同的API所提供的功能,以及實現本文中所論述的協定訓練及後續的基於DRAM通道的控制/狀態/使用者資料通信可能需要的任何輔助程式碼。電腦可讀資料儲存媒體可為非暫時性資料儲存媒體,其含有電腦程式、軟體、韌體或微碼以供通用電腦或上文所提及的處理器執行。電腦可讀儲存媒體的實例包含唯讀記憶體(Read Only Memory;ROM)、隨機存取記憶體(Random Access Memory;RAM)、數位暫存器、快取記憶體、半導體記憶體裝置、磁性媒體(諸如內部硬碟、磁帶以及抽取式磁碟)、磁光學媒體以及光學媒體(諸如CD-ROM磁碟及數位多功能光碟(Digital Versatile Disk;DVD))。
根據本揭露內容的發明性態樣的通信模型的替代實施例可包含負責提供額外功能性(包含上文所識別的功能性及/或支援根據本揭露內容的教示的解決方案所必需的任何功能性中所任一者)的額外組件。儘管特徵及元件在上文以特定組合來描述,但每一特徵或元件可不具另一特徵及元件而單獨使用或以具有或不具其他特徵的各種組合使用。如之前所提及,系統10中的元件中的一些(諸如,儲存裝置18及主機14)的功能可經由使用硬體(諸如邏輯電路)及/或能夠執行呈儲存於電腦可讀資料儲存媒體(上文所提及)上的經寫碼指令或微碼的形式的軟體/韌體的硬體來提供。因此,此等功能及所說明的功能區塊將被理解為經硬體實施及/或經電腦實施,且因此為經機器實施。
前述內容描述實現主機系統與DRAM記憶體通道DIMM外觀尺寸儲存裝置(諸如基於DDR外觀尺寸的SSD)之間的通信的訓練協定,而不需要知道或反向工程由主機平台記憶體控制器應用的編碼方法或演算法。協定可與多種加擾、ECC以及其他資料保護方案合作,且可大體上應用於非標準化使用I/O儲存裝置(諸如基於DIMM的儲存裝置)附接在標準化I/O通道或I/O介面(諸如DRAM通道)上且需要與主機交換資訊的任何應用。使用協定,主機可以主機可辨識方式將控制資訊發送至基於DIMM的儲存裝置及自基於DIMM的儲存裝置接收狀態資訊,與DDR I/O通道上所使用的編碼或資料保護方案無關。在協定訓練階段期間,藉由發送已知值的協定訓練序列及以與自主機接收的編碼格式相同的編碼格式將相關聯命令/狀態資料儲存於儲存裝置中,控制/狀態資料可寫入至基於DIMM的儲存裝置。此等儲存值接著可在執行階段使用以執行自主機接收的經編碼命令且亦以主機可辨識的編碼格式將狀態資料報告至主機。基於記憶體組的緩衝組態是針對使用者資料的儲存而描述,使用者資料亦在如接收時的條件下儲存以保持主機特定編碼,且因此促進主機記憶體控制器與基於DIMM的儲存裝置之間的經由DRAM通道的資料交換。
如熟習此項技術者將認識到,本申請案中所描述的創新概念可在大範圍應用中修改及改變。因此,專利標的物的範疇不應限於上文所論述的特定例示性教示中的任一者,而實際上由以下申請專利範圍界定。
10‧‧‧系統
12‧‧‧系統記憶體單元
14‧‧‧處理器/主機/主機處理器單元
16‧‧‧DRAM記憶體介面/DRAM記憶體通道
18‧‧‧儲存裝置/SSD
20‧‧‧DRAM記憶體模組
22‧‧‧中央處理單元(CPU)
24‧‧‧記憶體控制器
26‧‧‧作業系統/作業系統軟體
28‧‧‧裝置驅動程式/驅動程式軟體/裝置驅動程式軟體/驅動程式模組/驅動應用程式
30‧‧‧裝置驅動程式/裝置驅動程式模組/驅動應用程式
32‧‧‧主機介面單元
34‧‧‧非揮發性儲存部分/非揮發性記憶體/非揮發性記憶體部分/儲存部分/非揮發性儲存器
36‧‧‧DRAM記憶體單元/揮發性記憶體
38‧‧‧內容可定址記憶體(CAM)
40‧‧‧暫存器及緩衝器單元(RBU)
42‧‧‧暫存器/控制暫存器
44‧‧‧暫存器/狀態暫存器
46‧‧‧其他暫存器/緩衝器
48‧‧‧裝置控制器
50‧‧‧緩衝器管理器
52‧‧‧非揮發性記憶體(NVM)控制器
54‧‧‧處理單元
58、72、100‧‧‧流程圖
60、62、64、66、68、70、74、75、77、79、81、83、85、101、102、104、106、108、110‧‧‧區塊
88‧‧‧一個位元組的儲存空間
90‧‧‧輸入
92‧‧‧搜尋暫存器
93‧‧‧搜尋操作
94‧‧‧CAM儲存的內容
96‧‧‧輸出
115、117‧‧‧記憶體組
119、120、122、123‧‧‧緩衝器
125~140‧‧‧區塊/磁區
144‧‧‧周邊儲存器
146‧‧‧輸入裝置
147‧‧‧輸出裝置
149‧‧‧網路介面
150‧‧‧電源供應器單元
12‧‧‧系統記憶體單元
14‧‧‧處理器/主機/主機處理器單元
16‧‧‧DRAM記憶體介面/DRAM記憶體通道
18‧‧‧儲存裝置/SSD
20‧‧‧DRAM記憶體模組
22‧‧‧中央處理單元(CPU)
24‧‧‧記憶體控制器
26‧‧‧作業系統/作業系統軟體
28‧‧‧裝置驅動程式/驅動程式軟體/裝置驅動程式軟體/驅動程式模組/驅動應用程式
30‧‧‧裝置驅動程式/裝置驅動程式模組/驅動應用程式
32‧‧‧主機介面單元
34‧‧‧非揮發性儲存部分/非揮發性記憶體/非揮發性記憶體部分/儲存部分/非揮發性儲存器
36‧‧‧DRAM記憶體單元/揮發性記憶體
38‧‧‧內容可定址記憶體(CAM)
40‧‧‧暫存器及緩衝器單元(RBU)
42‧‧‧暫存器/控制暫存器
44‧‧‧暫存器/狀態暫存器
46‧‧‧其他暫存器/緩衝器
48‧‧‧裝置控制器
50‧‧‧緩衝器管理器
52‧‧‧非揮發性記憶體(NVM)控制器
54‧‧‧處理單元
58、72、100‧‧‧流程圖
60、62、64、66、68、70、74、75、77、79、81、83、85、101、102、104、106、108、110‧‧‧區塊
88‧‧‧一個位元組的儲存空間
90‧‧‧輸入
92‧‧‧搜尋暫存器
93‧‧‧搜尋操作
94‧‧‧CAM儲存的內容
96‧‧‧輸出
115、117‧‧‧記憶體組
119、120、122、123‧‧‧緩衝器
125~140‧‧‧區塊/磁區
144‧‧‧周邊儲存器
146‧‧‧輸入裝置
147‧‧‧輸出裝置
149‧‧‧網路介面
150‧‧‧電源供應器單元
在以下章節中,將參看圖式中所說明的例示性實施例來描述本揭露內容的創造性態樣,其中: 圖1繪示根據本揭露內容的一個實施例的系統的高度簡化的部分佈局。 圖2繪示圖1中的系統的另一實施例,具有圖1中所描繪的儲存裝置及主機處理器的例示性架構細節。 圖3說明根據本揭露內容的一個實施例的通信協定的實例流程圖,其繪示可如何訓練儲存裝置以「解碼」經由DRAM介面自主機接收的經編碼命令。 圖4描繪根據本揭露內容的一個實施例的通信協定的實例流程圖,其繪示如何訓練儲存裝置以經由DRAM介面將與記憶體操作相關聯的狀態資料提供至主機。 圖5繪示根據本揭露內容的一個實施例的在協定訓練階段期間用於控制及狀態資料的例示性的基於暫存器的儲存組態。 圖6說明根據本揭露內容的一個實施例的圖2的儲存裝置中的CAM的簡化架構。 圖7為根據本揭露內容的一個實施例的說明使用者資料可如何儲存於圖1至圖2的儲存裝置中的實例流程圖。 圖8根據本揭露內容的特定實施例說明可如何使用適當位址映射及集合結合性來「組織」圖1至圖2的儲存裝置中的非揮發性記憶體以儲存使用者資料。 圖9描繪根據本揭露內容的一個實施例的圖1中的系統的總體佈局。
58‧‧‧流程圖
60、62、64、66、68、70‧‧‧區塊
Claims (21)
- 一種方法,包括: 偵測儲存裝置經附接至由主機支援的輸入/輸出介面; 回應於所述偵測,指導所述主機使用所述輸入/輸出介面將資料型樣的第一序列寫入至所述儲存裝置,其中所述第一序列中的資料型樣包含各別命令資料的經編碼版本,且其中所述第一序列中的所述資料型樣在將所述第一序列中的下一個資料型樣寫入至所述儲存裝置之前經寫入預定次數; 將所述寫入資料型樣的含命令資料的部分儲存於所述儲存裝置中的可定址儲存器中; 在所述儲存裝置處,經由所述輸入/輸出介面自所述主機接收控制位元型樣,其中所述控制位元型樣包含經編碼輸入/輸出命令;以及 使用所述可定址儲存器中的一或多個含命令資料的部分來解碼經由所述控制位元型樣接收的所述輸入/輸出命令。
- 如申請專利範圍第1項所述的方法,其中所述輸入/輸出介面為動態隨機存取記憶體介面,所述經編碼輸入/輸出命令為經編碼動態隨機存取記憶體命令,且所述儲存裝置經組態以經由所述動態隨機存取記憶體介面操作。
- 如申請專利範圍第1項所述的方法,其中指導所述主機寫入資料型樣的所述第一序列包含: 在所述儲存裝置內建立控制暫存器,其中所述控制暫存器經組態以至少儲存所述第一序列中的所述資料型樣的所述含命令資料的部分; 關聯記憶體位址與所述控制暫存器;以及 指導所述主機將所述第一序列中的所述資料型樣寫入至與所述控制暫存器相關聯的所述記憶體位址。
- 如申請專利範圍第1項所述的方法,更包括: 進一步指導所述主機使用所述輸入/輸出介面將資料型樣的第二序列寫入至所述儲存裝置,其中所述第二序列中的資料型樣包含各別狀態資料的經編碼版本,且其中所述第二序列中的所述資料型樣在將所述第二序列中的下一個資料型樣寫入至所述儲存裝置之前經寫入所述預定次數; 將所述第二序列中的所述資料型樣的含狀態資料的部分儲存於所述儲存裝置中的暫存器中; 使用所述可定址儲存器來解碼所述接收的輸入/輸出命令; 存取所述儲存裝置中的所述暫存器; 基於操作的結果,自所述暫存器擷取對應的含狀態資料的部分;以及 作為對所述接收的輸入/輸出命令的回應,將所述擷取的含狀態資料的部分提供至所述主機。
- 如申請專利範圍第4項所述的方法,其中所述第一序列中的所述資料型樣及所述第二序列中的所述資料型樣是以所述儲存裝置已知的預定義次序寫入。
- 如申請專利範圍第4項所述的方法,其中指導所述主機寫入資料型樣的所述第二序列包含: 在所述儲存裝置內建立狀態暫存器器,其中所述狀態暫存器經組態以至少儲存所述第二序列中的所述資料型樣的所述含狀態資料的部分; 關聯記憶體位址與所述狀態暫存器;以及 指導所述主機將所述第二序列中的所述資料型樣寫入至與所述狀態暫存器相關聯的所述記憶體位址。
- 如申請專利範圍第4項所述的方法,其中所述第一序列及所述第二序列中的所述資料型樣是以針對所述輸入/輸出介面定義的傳輸格式由所述主機發送至所述儲存裝置。
- 一種方法,包括: 將儲存裝置組態為可附接至由主機支援的輸入/輸出介面且經由所述輸入/輸出介面可操作,其中所述儲存裝置經組態以將自所述主機接收的資料儲存於所述儲存裝置內的多個緩衝器中; 在所述儲存裝置處,經由所述輸入/輸出介面自所述主機接收以下各者: 所述多個緩衝器中的一者的經記憶體映射緩衝器位址,以及 資料的記憶體頁的經編碼版本; 將所述接收資料的所述經編碼版本儲存至具有所述經記憶體映射緩衝器位址的所述緩衝器中; 自所述主機接收指令以讀取在所述經記憶體映射緩衝器位址儲存的內容;以及 回應於接收到所述指令,經由所述輸入/輸出介面將所述接收資料的所述儲存的經編碼版本提供至所述主機。
- 如申請專利範圍第8項所述的方法,其中所述組態包含: 在附接至所述輸入/輸出介面後,訓練所述儲存裝置以辨識經主機編碼的記憶體命令以便使所述儲存裝置能夠不管由所述主機用來編碼所述記憶體命令的第一編碼方案而執行接收自所述主機的所述記憶體命令;以及 進一步訓練所述儲存裝置以將狀態資訊的經編碼版本提供至所述主機,其中所述狀態資訊是經由所述輸入/輸出介面發送且與對應記憶體命令的執行相關聯,且其中所述狀態資訊的所述經編碼版本是基於由所述主機用來處理所述狀態資訊的第二編碼方案。
- 如申請專利範圍第8項所述的方法,其中所述輸入/輸出介面為動態隨機存取記憶體介面,且其中組態所述儲存裝置包含: 將每一緩衝器分割成多個區塊,其中每一區塊可使用對應邏輯區塊位址存取,且其中每一區塊的大小等於接收自所述主機的資料的所述記憶體頁的大小;以及 將所述多個緩衝器組織成多個記憶體組,其中每一記憶體組含有相同數目個不同緩衝器且可單獨地由所述主機定址,如同所述記憶體組是連接至所述動態隨機存取記憶體介面的動態隨機存取記憶體記憶體組,且 其中,自所述主機接收所述多個緩衝器中的給定緩衝器的經記憶體映射緩衝器位址包含: 接收識別與所述給定緩衝器相關聯的記憶體組以及所述經識別記憶體組內的所述給定緩衝器的經記憶體映射緩衝器位址。
- 如申請專利範圍第10項所述的方法,更包括: 使用集合結合性將各別多個邏輯區塊位址指派至所述多個區塊中的每一區塊。
- 一種記憶體模組,包括: 第一儲存部分,其包含多個記憶體單元以儲存內容; 介面單元,其經組態以允許所述記憶體模組附接至由主機支援的輸入/輸出介面且經由所述輸入/輸出介面可操作; 第二儲存部分;以及 控制單元,其耦接至所述第一儲存部分、所述介面單元以及所述第二儲存部分,其中,在所述記憶體模組附接至所述輸入/輸出介面後,所述控制單元可操作以: 經由所述輸入/輸出介面自所述主機接收資料型樣的第一序列,其中所述第一序列中的資料型樣包含各別命令資料的經編碼版本,且其中所述第一序列中的所述資料型樣在接收所述第一序列中的下一個資料型樣之前自所述主機經接收預定次數; 將所述寫入資料型樣的含命令資料的部分儲存於所述第二儲存部分中; 經由所述輸入/輸出介面自所述主機接收控制位元型樣,其中所述控制位元型樣包含經編碼輸入/輸出命令;以及 使用所述第二儲存部分中的一或多個含命令資料的部分來解碼經由所述控制位元型樣接收的所述輸入/輸出命令。
- 如申請專利範圍第12項所述的記憶體模組,其中所述記憶體模組為以下各者中的一者: 具有雙列直插式記憶體模組外觀尺寸的固態硬碟; 具有所述雙列直插式記憶體模組外觀尺寸的基於區塊的儲存裝置; 經組態以經由動態隨機存取記憶體介面操作的儲存裝置;以及 經組態以經由所述輸入/輸出介面操作的儲存裝置。
- 如申請專利範圍第12項所述的記憶體模組,其中所述控制單元進一步可操作以: 存取所述第二儲存部分; 比較所述接收的輸入/輸出命令的位元型樣與所述第二儲存部分中的一或多個含命令資料的部分的位元以偵測匹配; 自所述第二儲存部分擷取匹配的含命令資料的部分;以及 使用所述擷取的含命令資料的部分作為所述接收的輸入/輸出命令的經解碼版本。
- 如申請專利範圍第12項所述的記憶體模組,更包括: 狀態暫存器,其耦接至所述控制單元,且 其中所述控制單元進一步可操作以: 經由所述輸入/輸出介面自所述主機接收資料型樣的第二序列,其中所述第二序列中的資料型樣包含各別狀態資料的經編碼版本,且其中所述第二序列中的所述資料型樣在接收所述第二序列中的下一個資料型樣之前自所述主機經接收所述預定次數; 將所述第二序列中的所述資料型樣的含狀態資料的部分儲存於所述狀態暫存器中; 使用所述第二儲存部分來解碼所述接收的輸入/輸出命令; 存取所述狀態暫存器; 基於操作的結果,自所述狀態暫存器擷取對應的含狀態資料的部分;以及 作為對所述接收的輸入/輸出命令的回應,將所述擷取的含狀態資料的部分提供至所述主機。
- 如申請專利範圍第15項所述的記憶體模組,其中所述儲存部分包含: 多個實體緩衝器,其中每一緩衝器是由所述多個記憶體單元的各別部分形成,且 其中所述控制單元進一步可操作以: 經由所述輸入/輸出介面自所述主機接收以下各者: 所述多個緩衝器中的一者的經記憶體映射緩衝器位址,以及 使用者資料的記憶體頁的經編碼版本; 將所述接收的使用者資料的所述經編碼版本儲存至具有所述經記憶體映射緩衝器位址的所述緩衝器中; 自所述主機接收指令以讀取在所述經記憶體映射緩衝器位址儲存的內容;以及 回應於接收到所述指令,經由所述輸入/輸出介面將所述接收的使用者資料的所述儲存的經編碼版本提供至所述主機。
- 如申請專利範圍第16項所述的記憶體模組,其中所述多個實體緩衝器經組織成多個記憶體組,其中每一記憶體組含有各別數目個不同實體緩衝器且可單獨地藉由所述主機定址,且 其中每一實體緩衝器經分割成多個區塊,其中每一區塊可使用對應的邏輯區塊位址存取,其中每一區塊的大小等於接收自所述主機的使用者資料的所述記憶體頁的大小,且其中各別多個邏輯區塊位址是使用集合結合性指派至所述多個區塊中的每一區塊,且 其中所述多個緩衝器中的給定緩衝器的所述經記憶體映射緩衝器位址識別與所述給定緩衝器相關聯的記憶體組以及所述經識別記憶體組內的所述給定緩衝器。
- 一種系統,包括: 輸入/輸出介面,其以針對所述輸入/輸出介面定義的傳輸格式支援電子內容經由所述輸入/輸出介面的通信; 處理器,其耦接至所述輸入/輸出介面且支援電子內容經由所述輸入/輸出介面的通信; 與所述輸入/輸出介面相容的儲存裝置;以及 與所述儲存裝置相關聯的裝置驅動程式,其中所述裝置驅動程式含有在由所述處理器執行時使所述處理器執行以下操作的程式指令: 偵測所述儲存裝置經附接至所述輸入/輸出介面;以及 使用所述輸入/輸出介面將資料型樣的第一序列寫入至所述儲存裝置,其中所述第一序列中的資料型樣包含各別命令資料的經編碼版本,且其中所述第一序列中的所述資料型樣在將所述第一序列中的下一個資料型樣寫入至所述儲存裝置之前經寫入預定次數,且 其中所述儲存裝置經由所述裝置驅動程式可操作以執行以下操作: 將所述資料型樣的含命令資料的部分儲存於所述儲存裝置中的可定址儲存器中; 經由所述輸入/輸出介面自所述處理器接收控制位元型樣,其中所述控制位元型樣包含經編碼輸入/輸出命令;以及 使用所述可定址儲存器中的一或多個含命令資料的部分來解碼經由所述控制位元型樣接收的所述輸入/輸出命令。
- 如申請專利範圍第18項所述的系統,其中所述儲存裝置為以下各者中的一者: 具有雙列直插式記憶體模組外觀尺寸的固態硬碟; 具有所述雙列直插式記憶體模組外觀尺寸的基於區塊的儲存裝置; 經組態以經由動態隨機存取記憶體介面操作的儲存裝置;以及 經組態以經由所述輸入/輸出介面操作的儲存裝置。
- 如申請專利範圍第18項所述的系統,其中所述程式指令在由所述處理器執行時使所述處理器進一步執行以下操作: 進一步使用所述輸入/輸出介面將資料型樣的第二序列寫入至所述儲存裝置,其中所述第二序列中的資料型樣包含各別狀態資料的經編碼版本,且其中所述第二序列中的所述資料型樣在將所述第二序列中的下一個資料型樣寫入至所述儲存裝置之前經寫入所述預定次數,且 其中所述儲存裝置經由所述裝置驅動程式可操作以進一步執行以下操作: 將所述第二序列中的所述資料型樣的含狀態資料的部分儲存於所述儲存裝置中的暫存器中; 解碼所述接收的輸入/輸出命令; 存取所述儲存裝置中的所述暫存器; 基於操作的結果,自所述狀態暫存器擷取對應的含狀態資料的部分;以及 作為對所述接收的輸入/輸出命令的回應,將所述擷取的含狀態資料的部分提供至所述處理器。
- 如申請專利範圍第18項所述的系統,其中所述儲存裝置包含: 用以儲存使用者資料的多個相同大小的實體緩衝器,其中所述多個實體緩衝器經組織成多個記憶體組以使得每一記憶體組含有相同數目個不同實體緩衝器且可單獨地由所述處理器定址, 其中每一實體緩衝器經分割成多個相同大小的區塊,其中每一區塊可基於集合結合性使用對應多個邏輯區塊位址存取,且其中每一區塊的大小等於接收自所述處理器的使用者資料的記憶體頁的大小,且 其中所述儲存裝置經由所述裝置驅動程式可操作以進一步執行以下操作: 經由所述輸入/輸出介面自所述處理器接收以下各者: 經記憶體映射緩衝器位址,其識別與所述多個實體緩衝器中的給定緩衝器相關聯的記憶體組以及所述經識別記憶體組內的所述給定緩衝器,以及 使用者資料的所述記憶體頁的經編碼版本; 將所述接收的使用者資料的所述經編碼版本儲存至具有所述經記憶體映射緩衝器位址的所述給定緩衝器中; 自所述處理器接收指令以讀取在所述經記憶體映射緩衝器位址儲存的內容;以及 回應於所述指令,經由所述輸入/輸出介面將所述接收的使用者資料的所述儲存的經編碼版本提供至所述處理器。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201562158420P | 2015-05-07 | 2015-05-07 | |
| US62/158,420 | 2015-05-07 | ||
| US14/967,258 | 2015-12-11 | ||
| US14/967,258 US10025747B2 (en) | 2015-05-07 | 2015-12-11 | I/O channel scrambling/ECC disassociated communication protocol |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201640358A true TW201640358A (zh) | 2016-11-16 |
| TWI699649B TWI699649B (zh) | 2020-07-21 |
Family
ID=57222009
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105109154A TWI699649B (zh) | 2015-05-07 | 2016-03-24 | 資料儲存方法、記憶體模組以及資料儲存系統 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US10025747B2 (zh) |
| KR (1) | KR102312648B1 (zh) |
| CN (1) | CN106126447B (zh) |
| TW (1) | TWI699649B (zh) |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10193711B2 (en) | 2017-06-22 | 2019-01-29 | Micron Technology, Inc. | Timing based arbitration methods and apparatuses for calibrating impedances of a semiconductor device |
| US10205451B1 (en) | 2018-01-29 | 2019-02-12 | Micron Technology, Inc. | Methods and apparatuses for dynamic step size for impedance calibration of a semiconductor device |
| TWI660578B (zh) * | 2016-12-09 | 2019-05-21 | 美商美光科技公司 | 用於校準半導體裝置之可調節阻抗之設備及方法 |
| US10394473B2 (en) | 2015-10-14 | 2019-08-27 | Micron Technology, Inc. | Apparatuses and methods for arbitrating a shared terminal for calibration of an impedance termination |
| US10615798B2 (en) | 2017-10-30 | 2020-04-07 | Micron Technology, Inc. | Apparatuses and methods for identifying memory devices of a semiconductor device sharing an external resistance |
| US11237579B2 (en) | 2019-11-19 | 2022-02-01 | Micron Technology, Inc. | Apparatuses and methods for ZQ calibration |
| US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
| US11693601B2 (en) | 2018-08-07 | 2023-07-04 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
| TWI814975B (zh) * | 2019-01-11 | 2023-09-11 | 新加坡商馬維爾亞洲私人有限公司 | 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片 |
| TWI914520B (zh) | 2021-05-07 | 2026-02-11 | 南韓商三星電子股份有限公司 | 同調記憶體系統及其操作方法 |
Families Citing this family (80)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
| US10324832B2 (en) * | 2016-05-25 | 2019-06-18 | Samsung Electronics Co., Ltd. | Address based multi-stream storage device access |
| US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
| US10282324B2 (en) | 2015-07-13 | 2019-05-07 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes |
| US10169242B2 (en) * | 2015-10-16 | 2019-01-01 | SK Hynix Inc. | Heterogeneous package in DIMM |
| US11138120B2 (en) | 2015-10-16 | 2021-10-05 | SK Hynix Inc. | Memory system |
| US10558468B2 (en) | 2015-10-22 | 2020-02-11 | American Megatrends International, Llc | Memory channel storage device initialization |
| US10203893B2 (en) * | 2015-10-22 | 2019-02-12 | American Megatrends, Inc. | Memory channel storage device detection |
| US20170206165A1 (en) * | 2016-01-14 | 2017-07-20 | Samsung Electronics Co., Ltd. | Method for accessing heterogeneous memories and memory module including heterogeneous memories |
| US10055368B2 (en) * | 2016-02-26 | 2018-08-21 | Sandisk Technologies Llc | Mobile device and method for synchronizing use of the mobile device's communications port among a plurality of applications |
| US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
| KR20180033676A (ko) * | 2016-09-26 | 2018-04-04 | 에스케이하이닉스 주식회사 | 메모리 모듈 및 이를 포함하는 메모리 시스템 |
| US20180097839A1 (en) * | 2016-10-01 | 2018-04-05 | Neeraj S. Upasani | Systems, apparatuses, and methods for platform security |
| US10585624B2 (en) * | 2016-12-01 | 2020-03-10 | Micron Technology, Inc. | Memory protocol |
| KR102776518B1 (ko) * | 2016-12-01 | 2025-03-07 | 삼성전자주식회사 | 호스트와 양방향 통신을 수행하도록 구성된 스토리지 장치 및 그것의 동작 방법 |
| US10318423B2 (en) * | 2016-12-14 | 2019-06-11 | Macronix International Co., Ltd. | Methods and systems for managing physical information of memory units in a memory device |
| US10490239B2 (en) * | 2016-12-27 | 2019-11-26 | Intel Corporation | Programmable data pattern for repeated writes to memory |
| KR102649318B1 (ko) * | 2016-12-29 | 2024-03-20 | 삼성전자주식회사 | 상태 회로를 포함하는 메모리 장치와 그것의 동작 방법 |
| US10282094B2 (en) * | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
| US10437482B2 (en) * | 2017-07-25 | 2019-10-08 | Samsung Electronics Co., Ltd. | Coordinated near-far memory controller for process-in-HBM |
| KR102395190B1 (ko) * | 2017-07-31 | 2022-05-06 | 삼성전자주식회사 | 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법 |
| WO2019061227A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | FIRST PRIMING WITH A MEMORY CHANNEL |
| US10936221B2 (en) | 2017-10-24 | 2021-03-02 | Micron Technology, Inc. | Reconfigurable memory architectures |
| US11636014B2 (en) | 2017-10-31 | 2023-04-25 | SK Hynix Inc. | Memory system and data processing system including the same |
| KR102455880B1 (ko) | 2018-01-12 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
| KR102714157B1 (ko) * | 2019-01-15 | 2024-10-08 | 에스케이하이닉스 주식회사 | 메모리 시스템, 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법 |
| US10534555B2 (en) * | 2017-11-29 | 2020-01-14 | International Business Machines Corporation | Host synchronized autonomous data chip address sequencer for a distributed buffer memory system |
| US10489069B2 (en) * | 2017-11-29 | 2019-11-26 | International Business Machines Corporation | Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system |
| US10395698B2 (en) | 2017-11-29 | 2019-08-27 | International Business Machines Corporation | Address/command chip controlled data chip address sequencing for a distributed memory buffer system |
| US11281608B2 (en) * | 2017-12-11 | 2022-03-22 | Micron Technology, Inc. | Translation system for finer grain memory architectures |
| US11099760B2 (en) * | 2017-12-14 | 2021-08-24 | Intel Corporation | Background data refresh using a system timestamp in storage devices |
| CN110008147B (zh) * | 2018-01-04 | 2021-11-19 | 澜起科技股份有限公司 | 存储器控制器以及用于对存储模块进行访问的方法 |
| US10929029B2 (en) | 2018-01-04 | 2021-02-23 | Montage Technology Co., Ltd. | Memory controller and method for accessing memory modules and processing sub-modules |
| US11226768B2 (en) | 2018-01-04 | 2022-01-18 | Montage Technology Co., Ltd. | Memory controller and method for accessing memory module |
| GB2570143B (en) * | 2018-01-12 | 2020-04-08 | Garrison Tech Ltd | Secure sharing of storage resources |
| US11099789B2 (en) | 2018-02-05 | 2021-08-24 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
| US10782908B2 (en) * | 2018-02-05 | 2020-09-22 | Micron Technology, Inc. | Predictive data orchestration in multi-tier memory systems |
| US12135876B2 (en) | 2018-02-05 | 2024-11-05 | Micron Technology, Inc. | Memory systems having controllers embedded in packages of integrated circuit memory |
| US10838637B2 (en) * | 2018-02-08 | 2020-11-17 | Micron Technology, Inc. | Status management in storage backed memory package |
| US10403351B1 (en) * | 2018-02-22 | 2019-09-03 | Advanced Micro Devices, Inc. | Save and restore scoreboard |
| US10585819B2 (en) | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
| KR102505913B1 (ko) * | 2018-04-04 | 2023-03-07 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템 |
| CN110310691B (zh) * | 2018-03-27 | 2023-06-30 | 爱思开海力士有限公司 | 存储器系统中的工作负载预测及其方法 |
| TWI660267B (zh) * | 2018-03-28 | 2019-05-21 | 和碩聯合科技股份有限公司 | 開機檢測裝置、系統及其方法 |
| US10714159B2 (en) | 2018-05-09 | 2020-07-14 | Micron Technology, Inc. | Indication in memory system or sub-system of latency associated with performing an access command |
| KR102091524B1 (ko) | 2018-07-23 | 2020-03-23 | 삼성전자주식회사 | 어드레스를 스크램블하는 메모리 장치 |
| US11249919B2 (en) * | 2018-07-31 | 2022-02-15 | SK Hynix Inc. | Apparatus and method for managing meta data for engagement of plural memory system to store data |
| US11221768B2 (en) | 2018-10-29 | 2022-01-11 | International Business Machines Corporation | Safe shared volume access |
| KR102601143B1 (ko) * | 2018-10-29 | 2023-11-13 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
| KR102567108B1 (ko) * | 2018-11-05 | 2023-08-14 | 삼성전자주식회사 | 데이터 스토리지 디바이스 및 데이터 스토리지 시스템 |
| KR102599188B1 (ko) | 2018-11-09 | 2023-11-08 | 삼성전자주식회사 | 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법 |
| CN109614148B (zh) * | 2018-12-11 | 2020-10-02 | 中科驭数(北京)科技有限公司 | 数据逻辑运算方法、监测方法及装置 |
| US10748606B2 (en) * | 2018-12-14 | 2020-08-18 | Western Digital Technologies, Inc. | Multi-state programming for memory devices |
| KR102745459B1 (ko) * | 2018-12-18 | 2024-12-20 | 에스케이하이닉스 주식회사 | 스마트 카 시스템 |
| KR102686380B1 (ko) * | 2018-12-20 | 2024-07-19 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법 |
| CN109582508B (zh) * | 2018-12-29 | 2023-12-26 | 西安紫光国芯半导体股份有限公司 | 用于nvdimm的数据备份和恢复方法、nvdimm控制器以及nvdimm |
| US10764455B2 (en) | 2018-12-31 | 2020-09-01 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
| US10579318B1 (en) * | 2018-12-31 | 2020-03-03 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
| KR102774284B1 (ko) * | 2019-02-19 | 2025-03-04 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이를 포함하는 데이터 처리 시스템 |
| CN109992539B (zh) * | 2019-03-13 | 2023-03-10 | 苏州盛科通信股份有限公司 | 双主机协同工作装置 |
| US10852949B2 (en) | 2019-04-15 | 2020-12-01 | Micron Technology, Inc. | Predictive data pre-fetching in a data storage device |
| KR102772896B1 (ko) * | 2019-09-19 | 2025-02-27 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
| US11650925B2 (en) * | 2019-12-17 | 2023-05-16 | Micron Technology, Inc. | Memory interface management |
| US11269645B2 (en) * | 2020-03-11 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array |
| KR20210136480A (ko) * | 2020-05-07 | 2021-11-17 | 삼성전자주식회사 | 프로세싱 장치가 실장된 메모리 모듈을 포함하는 컴퓨팅 시스템의 부팅 방법 |
| US11500559B2 (en) * | 2020-06-10 | 2022-11-15 | Western Digital Technologies, Inc. | Systems and methods for configuring a data storage device |
| US11657489B2 (en) * | 2020-07-20 | 2023-05-23 | Omron Corporation | Segmentation of continuous dynamic scans |
| US12007929B2 (en) | 2020-10-09 | 2024-06-11 | Altera Corporation | Low-latency optical connection for CXL for a server CPU |
| US12093258B2 (en) | 2020-12-14 | 2024-09-17 | Samsung Electronics Co., Ltd. | Storage device adapter to accelerate database temporary table processing |
| US11742007B2 (en) * | 2021-02-02 | 2023-08-29 | Nvidia Corporation | Techniques for performing write training on a dynamic random-access memory |
| US11861229B2 (en) | 2021-02-02 | 2024-01-02 | Nvidia Corporation | Techniques for transferring commands to a dynamic random-access memory |
| US11742006B2 (en) * | 2021-02-02 | 2023-08-29 | Nvidia Corporation | Techniques for performing command address in interface training on a dynamic random-access memory |
| US11809719B2 (en) | 2021-02-02 | 2023-11-07 | Nvidia Corporation | Techniques for performing write training on a dynamic random-access memory |
| US12008265B2 (en) * | 2021-05-05 | 2024-06-11 | Micron Technology, Inc. | Quality-of-service information for a multi-memory system |
| US11494126B1 (en) * | 2021-05-07 | 2022-11-08 | Western Digital Technologies, Inc. | Toggle mode (TM) coding with circuit bounded array memory |
| US12437827B2 (en) * | 2021-12-29 | 2025-10-07 | Advanced Micro Devices, Inc. | DRAM specific interface calibration via programmable training sequences |
| US12524356B2 (en) | 2022-03-25 | 2026-01-13 | Seagate Technology Llc | Memory tunneling interface |
| CN116909474B (zh) * | 2022-04-12 | 2024-07-02 | 荣耀终端有限公司 | 器件识别方法和相关装置 |
| US12072761B2 (en) * | 2022-06-02 | 2024-08-27 | Micron Technology, Inc. | Memory sub-system addressing for data and additional data portions |
| KR20250051882A (ko) | 2023-10-11 | 2025-04-18 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
Family Cites Families (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6212585B1 (en) * | 1997-10-01 | 2001-04-03 | Micron Electronics, Inc. | Method of automatically configuring a server after hot add of a device |
| CA2527685A1 (en) * | 2003-06-30 | 2005-01-06 | International Business Machines Corporation | Vector equalizer and vector sequence estimator for block-coded modulation schemes |
| US7761774B2 (en) * | 2005-10-28 | 2010-07-20 | Qualcomm Incorporated | High speed CAM lookup using stored encoded key |
| US7506084B2 (en) * | 2006-10-17 | 2009-03-17 | International Business Machines Corporation | Method for communicating with an I/O adapter using cached address translations |
| US7778020B2 (en) * | 2006-12-06 | 2010-08-17 | Fusion Multisystems, Inc. | Apparatus, system, and method for a modular blade |
| JP5018074B2 (ja) * | 2006-12-22 | 2012-09-05 | 富士通セミコンダクター株式会社 | メモリ装置,メモリコントローラ及びメモリシステム |
| US7831849B2 (en) * | 2007-03-28 | 2010-11-09 | Intel Corporation | Platform communication protocol |
| US7644216B2 (en) * | 2007-04-16 | 2010-01-05 | International Business Machines Corporation | System and method for providing an adapter for re-use of legacy DIMMS in a fully buffered memory environment |
| US8874831B2 (en) * | 2007-06-01 | 2014-10-28 | Netlist, Inc. | Flash-DRAM hybrid memory module |
| US8261159B1 (en) | 2008-10-30 | 2012-09-04 | Apple, Inc. | Data scrambling schemes for memory devices |
| US8468285B2 (en) * | 2009-05-18 | 2013-06-18 | Stmicroelectronics, Inc. | Operation of video source and sink with toggled hot plug detection |
| US9575908B2 (en) | 2011-02-08 | 2017-02-21 | Diablo Technologies Inc. | System and method for unlocking additional functions of a module |
| US9785470B2 (en) * | 2011-06-20 | 2017-10-10 | Microsoft Technology Licensing, Llc | Memory management model and interface for unmodified applications |
| US8639918B2 (en) * | 2011-08-31 | 2014-01-28 | Dell Products L.P. | Memory compatibility system and method |
| US8738852B2 (en) * | 2011-08-31 | 2014-05-27 | Nvidia Corporation | Memory controller and a dynamic random access memory interface |
| KR101628929B1 (ko) * | 2011-12-29 | 2016-06-21 | 인텔 코포레이션 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
| US20140101370A1 (en) * | 2012-10-08 | 2014-04-10 | HGST Netherlands B.V. | Apparatus and method for low power low latency high capacity storage class memory |
| US9099173B2 (en) | 2012-12-14 | 2015-08-04 | Virtium Technology, Inc. | Classifying flash devices using ECC |
| US9026725B2 (en) * | 2012-12-27 | 2015-05-05 | Intel Corporation | Training for command/address/control/clock delays under uncertain initial conditions and for mapping swizzled data to command/address signals |
| US9042188B2 (en) * | 2013-04-01 | 2015-05-26 | Arm Limited | Memory controller and method of calibrating a memory controller |
| US20140310534A1 (en) | 2013-04-15 | 2014-10-16 | Apple Inc. | Data scrambling in memory devices using combined sequences |
| US9021154B2 (en) * | 2013-09-27 | 2015-04-28 | Intel Corporation | Read training a memory controller |
| US9665513B2 (en) * | 2013-12-30 | 2017-05-30 | Intel Corporation | Systems and methods for automatic root port to non-transparent bridge switching for a PCI express interconnect architecture |
-
2015
- 2015-12-11 US US14/967,258 patent/US10025747B2/en active Active
-
2016
- 2016-03-07 KR KR1020160027108A patent/KR102312648B1/ko active Active
- 2016-03-24 TW TW105109154A patent/TWI699649B/zh active
- 2016-05-06 CN CN201610297080.0A patent/CN106126447B/zh active Active
Cited By (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10394473B2 (en) | 2015-10-14 | 2019-08-27 | Micron Technology, Inc. | Apparatuses and methods for arbitrating a shared terminal for calibration of an impedance termination |
| US11482989B2 (en) | 2016-12-09 | 2022-10-25 | Micron Technology, Inc. | Apparatuses and methods for calibrating adjustable impedances of a semiconductor device |
| US12249969B2 (en) | 2016-12-09 | 2025-03-11 | Lodestar Licensing Group Llc | Apparatuses and methods for calibrating adjustable impedances of a semiconductor device |
| TWI660578B (zh) * | 2016-12-09 | 2019-05-21 | 美商美光科技公司 | 用於校準半導體裝置之可調節阻抗之設備及方法 |
| US10348270B2 (en) | 2016-12-09 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for calibrating adjustable impedances of a semiconductor device |
| US12231106B2 (en) | 2016-12-09 | 2025-02-18 | Lodestar Licensing Group Llc | Apparatuses and methods for calibrating adjustable impedances of a semiconductor device |
| US11916527B2 (en) | 2016-12-09 | 2024-02-27 | Lodestar Licensing Group Llc | Apparatuses and methods for calibrating adjustable impedances of a semiconductor device |
| US10868519B2 (en) | 2016-12-09 | 2020-12-15 | Micron Technology, Inc. | Apparatuses and methods for calibrating adjustable impedances of a semiconductor device |
| US10530613B2 (en) | 2017-06-22 | 2020-01-07 | Micron Technology, Inc. | Timing based arbitration methods and apparatuses for calibrating impedances of a semiconductor device |
| US10855495B2 (en) | 2017-06-22 | 2020-12-01 | Micron Technology, Inc. | Timing based arbitration methods and apparatuses for calibrating impedances of a semiconductor device |
| US10193711B2 (en) | 2017-06-22 | 2019-01-29 | Micron Technology, Inc. | Timing based arbitration methods and apparatuses for calibrating impedances of a semiconductor device |
| US11212142B2 (en) | 2017-06-22 | 2021-12-28 | Micron Technology, Inc. | Timing based arbitration methods and apparatuses for calibrating impedances of a semiconductor device |
| US11121714B2 (en) | 2017-10-30 | 2021-09-14 | Micron Technology, Inc. | Apparatuses and methods for identifying memory devices of a semiconductor device sharing an external resistance |
| US11728812B2 (en) | 2017-10-30 | 2023-08-15 | Micron Technology, Inc. | Apparatuses and methods for identifying memory devices of a semiconductor device sharing an external resistance |
| US10615798B2 (en) | 2017-10-30 | 2020-04-07 | Micron Technology, Inc. | Apparatuses and methods for identifying memory devices of a semiconductor device sharing an external resistance |
| US12184280B2 (en) | 2017-10-30 | 2024-12-31 | Lodestar Licensing Group, Llc | Apparatuses and methods for identifying memory devices of a semiconductor device sharing an external resistance |
| US10396787B2 (en) | 2018-01-29 | 2019-08-27 | Micron Technology, Inc. | Methods and apparatuses for dynamic step size for impedance calibration of a semiconductor device |
| US10205451B1 (en) | 2018-01-29 | 2019-02-12 | Micron Technology, Inc. | Methods and apparatuses for dynamic step size for impedance calibration of a semiconductor device |
| US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
| US11693601B2 (en) | 2018-08-07 | 2023-07-04 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
| TWI814975B (zh) * | 2019-01-11 | 2023-09-11 | 新加坡商馬維爾亞洲私人有限公司 | 用於利用自我調整寫緩衝區釋放的存儲介質編程方法與裝置、以及其系統單晶片 |
| US11237579B2 (en) | 2019-11-19 | 2022-02-01 | Micron Technology, Inc. | Apparatuses and methods for ZQ calibration |
| TWI914520B (zh) | 2021-05-07 | 2026-02-11 | 南韓商三星電子股份有限公司 | 同調記憶體系統及其操作方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN106126447B (zh) | 2020-09-22 |
| CN106126447A (zh) | 2016-11-16 |
| US20160328156A1 (en) | 2016-11-10 |
| TWI699649B (zh) | 2020-07-21 |
| US10025747B2 (en) | 2018-07-17 |
| KR20160131870A (ko) | 2016-11-16 |
| KR102312648B1 (ko) | 2021-10-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI699649B (zh) | 資料儲存方法、記憶體模組以及資料儲存系統 | |
| CN103946814B (zh) | 计算机系统中的非易失性随机存取存储器的自主初始化 | |
| US9342453B2 (en) | Memory channel that supports near memory and far memory access | |
| US11038749B2 (en) | Memory resource allocation in an end-point device | |
| US11893247B2 (en) | Data storage device and method of operating the same | |
| US20160034683A1 (en) | Memory card and storage system having authentication program and method for operating thereof | |
| TW201716980A (zh) | 資料儲存設備及其操作方法 | |
| TWI637270B (zh) | 混合式記憶體驅動器,電腦系統,及用於操作多重模式混合式驅動器之相關方法 | |
| CN104115230B (zh) | 基于高效pcms刷新机制的计算装置、方法和系统 | |
| US12254190B2 (en) | Data storage device and method of operating the same | |
| US11907587B2 (en) | Managing persistent memory regions across multiple protocols | |
| TW202319903A (zh) | 儲存設備、計算系統及其操作方法 | |
| CN107479938B (zh) | 电子设备及其启动方法 | |
| CN112242176B (zh) | 具有测试接口的存储装置 | |
| US9778864B2 (en) | Data storage device using non-sequential segment access and operating method thereof | |
| US20210181978A1 (en) | Memory sub-system log synchronization | |
| US12487748B2 (en) | Storage device and host device | |
| US12367090B2 (en) | Storage controllers performing reset operations using setting data, operating methods of storage controllers, and operating methods of storage devices including storage controllers | |
| US20240256175A1 (en) | Storage device, operation method of storage device, and operation method of storage controller | |
| TWI911281B (zh) | 儲存裝置、主機裝置、包括兩者的電子裝置 | |
| EP4310846A1 (en) | Storage controllers, operating methods of storage controllers, and operating methods of storage devices including storage controllers | |
| EP4180997A1 (en) | Storage device and operation method thereof | |
| KR20230064526A (ko) | 스토리지 장치, 컴퓨팅 시스템 및 그 동작 방법 | |
| KR20230064538A (ko) | 메모리 컨트롤러 및 스토리지 장치 | |
| KR20250131495A (ko) | 비휘발성 메모리 장치, 이의 동작 방법 및 이를 포함하는 메모리 시스템 |