TW202040367A - 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 - Google Patents
記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 Download PDFInfo
- Publication number
- TW202040367A TW202040367A TW109121231A TW109121231A TW202040367A TW 202040367 A TW202040367 A TW 202040367A TW 109121231 A TW109121231 A TW 109121231A TW 109121231 A TW109121231 A TW 109121231A TW 202040367 A TW202040367 A TW 202040367A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- address
- exposed
- host
- line
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 28
- 230000009977 dual effect Effects 0.000 claims abstract description 161
- 238000013507 mapping Methods 0.000 claims description 33
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 7
- 230000009466 transformation Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 241000699666 Mus <mouse, genus> Species 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Memory System (AREA)
Abstract
本發明揭露一種非揮發性雙列直插記憶體模組(NVDIMM)。所述非揮發性雙列直插記憶體模組可安裝於雙列直插記憶體模組(DIMM)插口中。所述非揮發性雙列直插記憶體模組可包括非揮發性記憶體。裝置驅動器可攔截對目的地為主機記憶體控制器的記憶體位址的請求,將所述記憶體位址替換為預先映射的記憶體位址或預先映射的記憶體位址的別名,並將所述預先映射的記憶體位址發送至所述主機記憶體控制器,使得所述主機記憶體控制器產生傳送至所述非揮發性雙列直插記憶體模組的目標記憶體位址。
Description
本發明概念是有關於記憶體,且更具體而言,是有關於存取安裝於雙列直插記憶體模組(DIMM)插槽中的非揮發性記憶體(NVM)裝置。
[相關申請案資料]
本申請案主張於2015年10月7日提出申請的美國臨時專利申請案第62/238,660號的權利,所述美國臨時專利申請案併入本案供參考。
對雙列直插記憶體模組(Dual In-Line Memory Module,DIMM)的要求已被良好地確立達多年。最初成立於1944年並在1958年被給予當前名稱的電子裝置工程聯合委員會(Joint Electron Device Engineering Council,JEDEC)提供了雙列直插記憶體模組裝置的規範。由於存在雙列直插記憶體模組裝置的諸多不同變型,因此電子裝置工程聯合委員會已為雙列直插記憶體模組如何運作起草了諸多不同的標準。
雙列直插記憶體模組連接至雙列直插記憶體模組插槽連接器並經由記憶體通道位址訊號線而與主機處理器通訊。主機處理器(更具體而言,記憶體控制器)與雙列直插記憶體模組通訊的方式亦已得到很好地確立。
雙列直插記憶體模組通常為揮發性記憶體。亦即,記憶體胞元中的值需要週期性地再新(雙列直插記憶體模組必須能夠支援仍舊由電子裝置工程聯合委員會確立的最小再新率),否則記憶體胞元將丟失儲存於其中的值。
與雙列直插記憶體模組(更一般而言與揮發性記憶體)形成對比,存在非揮發性記憶體(Non-Volatile Memory,NVM)格式。非揮發性記憶體格式能夠保持儲存於其中的資料值而無需週期性再新。非揮發性記憶體格式的實例是反及(NAND)快閃記憶體,其常見於通用串列匯流排(Universal Serial Bus,USB)密鑰及固態裝置(Solid State Device,SSD)中。
已開發出可配合至雙列直插記憶體模組插槽中的非揮發性記憶體格式。但非揮發性記憶體格式根據與雙列直插記憶體模組不同的原理運作。對於插入雙列直插記憶體模組插口中的非揮發性記憶體格式而言,所述非揮發性記憶體格式對主機處理器及記憶體控制器而言必須看起來為雙列直插記憶體模組。此產生了某些必須解決的問題,乃因在雙列直插記憶體模組中定址的記憶體與在非揮發性記憶體格式中定址的記憶體以不同方式運作。
仍需一種在雙列直插記憶體模組插槽中使用非揮發性記憶體格式時解決記憶體定址及其他問題的方式。
一種裝置可包括非揮發性雙列直插記憶體模組(NVDIMM)及裝置驅動器。非揮發性雙列直插記憶體模組(NVDIMM)可安裝於雙列直插記憶體模組(DIMM)插口中。非揮發性雙列直插記憶體模組可包括記憶體及暴露的記憶體。暴露的記憶體可包括所述暴露的記憶體的第一大小及所述暴露的記憶體的基礎位址。裝置驅動器可運作於主機處理器上。所述裝置驅動器可能夠運作以攔截目的地為主機記憶體控制器的記憶體位址並將所述記憶體位址替換為預先映射的記憶體位址。預先映射的記憶體位址不同於所述記憶體位址。
現在將詳細參照本發明概念的實施例,所述實施例的實例說明於附圖中。在以下詳細說明中,闡述大量的具體細節,以幫助徹底理解本發明概念。然而,應理解,此項技術中具有通常知識者可不使用該些具體細節來實踐本發明概念。在其他情形中,未對眾所習知的方法、程序、組件、電路、及網路予以詳細闡述,以免不必要地使實施例的態樣模糊不清。
應理解,儘管本文中可能使用用語「第一」、「第二」等來闡述各種元件,然而該些元件不應受限於該些用語。使用該些用語僅用於區分各個元件。舉例而言,第一模組可被稱為第二模組,且相似地,第二模組可被稱為第一模組,而此並不背離本發明概念的範圍。
本文中在闡述本發明概念時所使用的術語僅用於闡述特定實施例,而並非旨在限制本發明概念。除非上下文中清楚地另外指明,否則在對本發明概念及隨附申請專利範圍的說明中所使用的單數形式「一(a、an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文中所使用的用語「及/或(and/or)」指代並囊括相關列出項其中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。圖式所示組件及特徵未必按比例繪製。
使用反及快閃記憶體作為儲存媒體(例如,固態裝置(或SDD))的固態電腦儲存裝置提供持久性資料儲存服務並可使用各種方法連接至主機電腦。自操作視角來看,重要的組件為:主機介面邏輯、處理及媒體控制邏輯、以及供儲存裝置用於實現持久性儲存能力的反及快閃記憶體電路。
一種重要的主機介面方法被稱為快速非揮發性記憶體(Non-Volatile Memory Express,NVMe)。主機可使用多個標準化記憶體映射提交隊列及完成隊列對(standardized memory-mapped Submission Queue and Completion Queue pairs)經由快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)通道而與快速非揮發性記憶體儲存裝置介接。
主機處理器藉由將命令及任何相關聯的資料移動至位於主機的動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)位址空間內的指定記憶體位置而將資料輸入/輸出(I/O)請求郵寄至快速非揮發性記憶體儲存裝置。該些指定的位置位址經主機記憶體映射至快速非揮發性記憶體提交隊列(NVMe Submission Queue)。快速非揮發性記憶體裝置可偵測所郵寄的請求並保持所述請求直至裝置處理邏輯將所述請求移動至裝置中進行執行。
當快速非揮發性記憶體裝置執行請求時,快速非揮發性記憶體裝置可在完成隊列(Completion Queue)中郵寄回應,所述完成隊列與主機將請求放置於其中的提交隊列相關聯。完成隊列如同提交隊列一樣經主機記憶體映射。主機有方法偵測回應的存在,使用記憶體映射資料移動方法(memory-mapped data movement methods)存取所述回應,並指示其已經接收到所述回應。
與快速非揮發性記憶體形成對比,非揮發性雙列直插記憶體模組(NVDIMM)可使用主機動態隨機存取記憶體通道來連接至主機。非揮發性雙列直插記憶體模組可比使用快速非揮發性記憶體的固態裝置明顯更快地與主機處理器交互作用,此乃因非揮發性雙列直插記憶體模組使用明顯更快的主機處理器連接方法:記憶體通道的轉移速率明顯快於(相對)較慢的快速周邊組件互連連接。但存在另一難題:由於非揮發性雙列直插記憶體模組位於主機記憶體通道上,因此非揮發性雙列直插記憶體模組對於主機記憶體控制器而言必須看起來為標準電子裝置工程聯合委員會(JEDEC)依順性動態隨機存取記憶體雙列直插記憶體模組,且必須使用標準動態隨機存取記憶體雙列直插記憶體模組插口連接至主機記憶體通道。具體而言,非揮發性雙列直插記憶體模組必須完全遵循電子裝置工程聯合委員會雙列直插記憶體模組規範。
為遵循電子裝置工程聯合委員會雙列直插記憶體模組規範,非揮發性雙列直插記憶體模組必須向主機報告其為具有某一記憶體容量的動態隨機存取記憶體雙列直插記憶體模組,且必須在行為上與其報告的動態隨機存取記憶體雙列直插記憶體模組類型不可區分。對於記憶體映射操作,非揮發性雙列直插記憶體模組也必須向主機提供可以記憶體通道速度運作的介面,並與系統記憶體不可區分地運作。通常,非揮發性雙列直插記憶體模組暴露出可在記憶體通道上存取的少量記憶體(其可為揮發性記憶體(例如,動態隨機存取記憶體、靜態隨機存取記憶體等)或可為非揮發性雙列直插記憶體模組內的非揮發性記憶體的一部分),所述記憶體通道用於記憶體映射主機資料轉移。
圖1示出根據本發明概念的實施例,與主機處理器通訊的非揮發性雙列直插記憶體模組(NVDIMM)。在圖1中,非揮發性雙列直插記憶體模組(NVDIMM)105被示出為經由主機記憶體控制器115及記憶體訊號線120而與主機處理器110通訊。主機記憶體控制器115可處理自記憶體(其由非揮發性雙列直插記憶體模組105提供)進行的讀取及對記憶體的寫入。非揮發性雙列直插記憶體模組105經由雙列直插記憶體模組插口125與主機記憶體控制器115(及主機處理器110)介接,雙列直插記憶體模組插口125可為安裝於包括主機處理器110及非揮發性雙列直插記憶體模組105的電腦中的標準雙列直插記憶體模組插口。非揮發性雙列直插記憶體模組105可包括非揮發性記憶體130、主機介面邏輯135、處理及媒體控制邏輯140、內部動態隨機存取記憶體145、及暴露的記憶體150。非揮發性記憶體130可為任意形式的非揮發性儲存器。在本發明概念的一個示例性實施例中,非揮發性記憶體130可包括反及快閃儲存器;本發明概念的其他實施例可包括其他形式的非揮發性記憶體,例如反或快閃儲存器、相變記憶體(Phase Change Memory,PCM)、自旋轉移力矩(Spin-Transfer Torque,STT)及磁性隨機存取記憶體(Magnetic RAM,MRAM)。主機介面邏輯135負責管理主機處理器110與非揮發性雙列直插記憶體模組105之間的通訊。處理及媒體控制邏輯140負責管理非揮發性記憶體130的使用。
圖1亦示出與主機記憶體控制器115介接的動態隨機存取記憶體雙列直插記憶體模組(DRAM DIMM)155。與非揮發性雙列直插記憶體模組105形成對比,動態隨機存取記憶體雙列直插記憶體模組155可為傳統雙列直插記憶體模組,且可提供支援記憶體。舉例而言,動態隨機存取記憶體雙列直插記憶體模組155與非揮發性雙列直插記憶體模組105中的一者可用以為另一者提供快取(cache)。
暴露的記憶體150包括暴露至主機處理器110以用於進行記憶體映射活動的記憶體。暴露的記憶體150可為內部動態隨機存取記憶體145的一部分、非揮發性記憶體130的一部分、或非揮發性雙列直插記憶體模組105的單獨組件。舉例而言,在本發明概念的一個實施例中,非揮發性記憶體130可包括8十億位元組(GB)的總記憶體,所述總記憶體中的1百萬位元組(MB)可被預留用於暴露的記憶體150。本發明概念的其他實施例可在非揮發性記憶體130中包括更多或更少的總記憶體、包括更多或更少的暴露的記憶體150、或同時包括所述兩者。
使用非揮發性雙列直插記憶體模組105來模擬雙列直插記憶體模組時出現的一個問題是主機處理器110(更具體而言運行於主機處理器110上的程式)具有特殊的記憶體視像(special view of memory)。此特殊的視像容許不同應用程式如同各自具有所有可用(或可視)記憶體供其自身使用般運作。主機記憶體控制器115藉由執行記憶體位址的邏輯-實體變換而達成此種記憶體視像。亦即,當應用程式請求存取記憶體位置(自記憶體讀取或寫入至記憶體)時,應用程式提供其所知曉的記憶體位址。此記憶體位址常常並非所需記憶體胞元在裝置上所處的實際記憶體位址。主機記憶體控制器115處理記憶體的該些邏輯視像(因每一應用程式具有其自身的邏輯視像)與記憶體模組的實體位址之間的轉換。
困難之處在於非揮發性雙列直插記憶體模組105中的暴露的記憶體150為可直接定址記憶體,且不需要由主機記憶體控制器115執行此種邏輯-實體轉換。當主機記憶體控制器115執行此邏輯-實體轉換時,主機記憶體控制器115以無法對所需記憶體胞元進行正確定位的方式對位址進行迴旋運算(convolve)。
對此困難之處的解決方案涉及裝置驅動器160。裝置驅動器160可「預先映射」所請求的記憶體位址,以使得在主機記憶體控制器115執行其邏輯-實體變換之後,非揮發性雙列直插記憶體模組105接收其所預期的直接記憶體位址。
裝置驅動器160如何執行此預先映射取決於多個因素。圖2示出在對圖1所示裝置驅動器160的設計中的各種考慮因素。裝置驅動器160的運作中考慮的因素是:暴露的記憶體150的大小205、暴露的記憶體150的基礎位址210、暴露的記憶體150的邏輯區段的大小215(以下參照圖5及圖8進一步論述邏輯區段)、主機記憶體控制器115的運作模式220、以及主機記憶體控制器115使用的邏輯-實體變換225。裝置驅動器160可探測下伏機器的匯流排以確定主機記憶體控制器115的運作模式220及邏輯-實體變換225;其他因素構建於圖1所示非揮發性雙列直插記憶體模組105的設計中且將被裝置驅動器160預先知曉。
在本發明概念的一個實施例中,主機記憶體控制器115的運作模式220可以頁面打開控制器模式(page open controller mode)運作,在所述頁面打開控制器模式中,主機記憶體控制器115假定各記憶體存取位址在空間上緊密地間隔開。此類請求常常發生於例如桌上型電腦系統中及輸入/輸出請求中。在本發明概念的另一實施例中,主機記憶體控制器115的運作模式220可以頁面關閉控制器模式(page closed controller mode)運作,在所述頁面關閉控制器模式中,主機記憶體控制器115假定在各記憶體請求之間的存取局部性減小。通常,主機記憶體控制器115僅以一種模式運作,且在下伏機器的運作期間不切換模式(但主機記憶體控制器115在下伏機器再次啟動時可切換至不同的運作模式)。邏輯-實體變換225自身可包括各種因素,例如階級位址(Rank Address)、庫群組位址(Bank Group Address)、庫位址(Bank Address)、列位址(Row Address)及行位址(Column Address)。
在闡述圖1所示的裝置驅動器160可如何執行預先映射的實例之前,某些額外的資訊將為有用的。參照圖3,圖3示出能夠支援圖1所示的主機處理器110及非揮發性雙列直插記憶體模組105的電腦系統的外部特徵。示出了電腦系統305,電腦系統305可包括電腦310、監視器315、鍵盤320、及滑鼠325。熟習此項技術者將認識到,電腦系統305可包含有其他組件:例如,可包含其他輸入/輸出裝置,例如列印機。此外,電腦系統305可包括圖1所示的傳統內部組件,例如圖1所示主機處理器110、圖1所示非揮發性雙列直插記憶體模組105、額外儲存器等。儘管圖3中未示出,然而熟習此項技術者將認識到電腦系統305可包括其他內部組件,例如其他圖形卡、數據機等。此外,熟習此項技術者將認識到電腦系統305可直接地或藉由任意類型的網路(圖中未示出)而與其他電腦系統交互作用。最後,儘管圖3將電腦系統305示出為傳統桌上型電腦,然而熟習此項技術者將認識到電腦系統305可為任意類型的機器或計算裝置,包括例如膝上型電腦、平板電腦、個人數位助理(personal digital assistant,PDA)、或智慧型電話、或者亦具有其他可能。
參照圖4,通常,電腦系統305可包括一或多個處理器110,所述一或多個處理器110可包括可用以協調電腦系統305的組件的運作的主機記憶體控制器115及時脈405。處理器110也可耦合至記憶體105,作為實例,記憶體105可包括隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read-only memory,ROM)、或其他狀態保存媒體。處理器110亦可耦合至儲存裝置410及網路連接器415,網路連接器415可為例如乙太網路連接器。處理器110亦可連接至匯流排420,可使用輸入/輸出引擎430進行管理的使用者介面425及輸入/輸出介面埠以及其他組件可附接至匯流排420。
圖5示出根據本發明概念的實施例,圖1所示示例性非揮發性雙列直插記憶體模組的記憶體空間的示例性佈局。在圖5中,示出了非揮發性記憶體130。非揮發性記憶體130可包括自基礎位址210處開始的總容量505。非揮發性記憶體130可被劃分成邏輯區段,例如邏輯區段510、515、520、525及530。邏輯區段是非揮發性記憶體130的子劃分。邏輯區段510、515、520、525及530可具有任意所需大小215,但通常其將包括數目為2的冪的位元組。在邏輯區段510、515、520、525及530的大小215與非揮發性記憶體130的總容量505之間、或者甚至在邏輯區段510、515、520、525及530的大小215與暴露的記憶體150的大小205之間不需要存在關係。但若邏輯區段510、515、520、525及530的大小215太小,則每一邏輯區段510、515、520、525及530可能不具有足以用於記憶體請求的儲存空間。
圖5示出本發明概念的示例性實施例,在所述示例性實施例中,非揮發性記憶體130的總容量505是8十億位元組、暴露的記憶體150的大小205是1百萬位元組、且每一邏輯區段的大小215是4千位元組。但本發明概念的其他實施例可支援每一邏輯區段的大小215、暴露的記憶體150的大小205、及非揮發性記憶體130的總容量505中的任一者或所有者的其他值。此外,儘管圖5(及以下圖8)示出暴露的記憶體150作為非揮發性記憶體130的一部分,但暴露的記憶體150可與非揮發性記憶體130分離。
圖6示出根據本發明概念的實施例,圖1所示裝置驅動器160的實例,所述裝置驅動器160攔截存取圖1所示非揮發性雙列直插記憶體模組中的記憶體位址的請求並預先映射所請求的記憶體位址。在圖6中,應用程式(或某些其他過程)可發出對應於圖1所示非揮發性雙列直插記憶體模組105中的記憶體位址的記憶體請求605。裝置驅動器160可攔截記憶體請求605並預先映射記憶體位址而非容許記憶體請求605前進至主機記憶體控制器115(其將執行圖2所示的邏輯-實體變換225)。預先映射的結果是產生預先映射的記憶體位址610(其亦可被稱為中間位址)。裝置驅動器160然後可將預先映射的記憶體位址610遞送至主機記憶體控制器115,主機記憶體控制器115可對預先映射的記憶體位址610執行邏輯-實體變換225。結果是產生目標記憶體位址615:圖1所示的非揮發性雙列直插記憶體模組105儲存所需記憶體胞元的實際位址。
返回參照圖1,在主機系統內,所有動態隨機存取記憶體子系統位址訊號到達每一雙列直插記憶體模組插口,包括安裝有非揮發性雙列直插記憶體模組105的雙列直插記憶體模組插口125。為實現位址分散,裝置驅動器160使用某些訊號來辨識正確的非揮發性雙列直插記憶體模組暴露的邏輯記憶體區段(NVDIMM exposed logical memory segment)。其餘訊號上的值與映射不相關(儘管該些訊號上的值可由圖1所示非揮發性雙列直插記憶體模組105使用)。如上所述,精確的映射可有所變化且可取決於邏輯區段大小215及主機記憶體控制器運作模式220。
作為裝置驅動器160可如何運作以執行預先映射的實例,假定非揮發性雙列直插記憶體模組105包括圖5所示為8十億位元組的總容量505、圖2所示暴露的記憶體150的為1百萬位元組的大小205、以及圖2所示為4千位元組的邏輯塊大小215。進一步假定暴露的記憶體150映射至以下輸入位址位元(位於記憶體訊號線120上):{row[2:0], column[9:0], ba[1:0], bg[1:0], 3’b000}。(前面所述為Verilog級聯描述,此並非是在硬體規範文件中闡述映射的必需方式,但是易於理解)。
若記憶體控制器運作模式220是頁面打開模式,則圖1所示邏輯-實體變換225可例如根據以下變換來映射位元:{rank[1:0], row[16:0], ba[1:0], bg[1:0], column[9:0], 3’h0},且裝置驅動器160然後可使用映射{16’hxxxx, row[2:0], ba[1:0], bg[1:0], column[9:0], 3’h0}來預先映射記憶體位址,其中「x」代表「不理會」值(可使用任意值而不會改變結果)。
另一方面,若記憶體控制器運作模式220是頁面關閉模式,則圖1所示的邏輯-實體變換225可例如根據以下變換來映射位元:{rank[1:0], column[9:3], row[16:0], ba[1:0], bg[1:0], column[2:0], 3’h0},且裝置驅動器160然後可使用映射{2’hx, column[9:3], 14’hxxxx, row[2:0], ba[1:0], bg[1:0], column[2:0], 3’h0}來預先映射記憶體位址,同樣地其中「x」代表「不理會」值。
以上示出的示例性預先映射是思維結構(construct)而未必為現實映射。使用來自動態隨機存取記憶體規範的每一群組中的位址位元(即,列位元的數目、行位元的數目、庫位元的數目及庫群組位元的數目),然後選擇所述位址位元作為相對於系統位址的示例性分解(breakdown)。但針對現實世界記憶體控制器的預先映射可以類似的方式進行構建。
藉由使用記憶體訊號線120,非揮發性雙列直插記憶體模組105可較使用快速非揮發性記憶體(NVMe)運作的非揮發性記憶體裝置明顯更快地與主機處理器110交互作用。此事實是記憶體通道的轉移速率明顯快於(相對)較慢的快速周邊組件互連(PCIe)連接這一事實的簡單結果。但存在潛在的難題。由於所有記憶體映射輸入/輸出活動發生在極窄的位址範圍內(例如,在以上參照圖5所述的實例中為1百萬位元組),因此非揮發性雙列直插記憶體模組105可能會暴露至由動態隨機存取記憶體雙列直插記憶體模組標準缺陷(被稱為記憶體漏洞(Row Hammer
))導致的嚴重效能限制。
簡單而言,Row Hammer是在重複存取特定記憶體胞元時可使一或多個附近記憶體胞元遭到破壞(誘發一或多個附近記憶體胞元發生變化)。在最初開發動態隨機存取記憶體標準時,電子裝置工程聯合委員會標準協會尚不知曉Row Hammer。為解決Row Hammer,較新的電子裝置工程聯合委員會規範容許記憶體控制器(例如,圖1所示的主機記憶體控制器115)「壓制」對同一動態隨機存取記憶體列的存取(降低存取同一動態隨機存取記憶體列的頻率)(此規定被稱為目標列再新(Target Row Refresh
))。
儘管減慢對特定動態隨機存取記憶體列的存取可防止Row Hammer,但減慢存取的頻率亦會減慢記憶體的運作。且當使用未經受Row Hammer的記憶體(例如,圖1所示的非揮發性雙列直插記憶體模組105)時,進行壓制是不必要的。但由於圖1所示非揮發性雙列直插記憶體模組105需要看起來為一般雙列直插記憶體模組(以遵循電子裝置工程聯合委員會規範並與主機處理器110正確地介接),因此主機記憶體控制器115不知道Row Hammer不是問題。
圖1所示暴露的記憶體150的位址範圍越小,則圖1所示主機記憶體控制器115將壓制對圖1所示非揮發性雙列直插記憶體模組105的請求以避免Row Hammer的可能性越高。因此,此可適用於防止主機記憶體控制器115認為Row Hammer是個問題。
一種防止圖1所示記憶體控制器認為Row Hammer是個問題的方式是在記憶體位址到達圖1所示主機記憶體控制器115之前對所述記憶體位址進行別名化。圖7示出裝置驅動器160可如何使用別名化的實例。
圖7示出根據本發明概念的實施例,執行位址別名化的圖1所示裝置驅動器。在圖7中,裝置驅動器160可將記憶體位址605預先映射至預先映射的記憶體位址610。但如以上在示例性預先映射中所述,預先映射可包括其值並不相關的位元:可使用任何值。藉由在圖1所示主機記憶體控制器115中改變映射至實體列位元的「不理會」位元中的一或多者,可為圖6所示目標記憶體位址615產生別名。因此,舉例而言,預先映射別名705及710各自代表所需記憶體位址的別名,但包括不同位元圖案(具體而言,在「不理會」位元中的不同位元圖案)。
裝置驅動器160可使用任何所需技術來改變「不理會」位元以產生別名。在本發明概念的一個實施例中,裝置驅動器160可為「不理會」位元產生隨機(或偽隨機)值。在本發明概念的另一實施例中,裝置驅動器160可為「不理會」位元產生按順序的值。本發明概念的其他實施例可包括用以為「不理會」位元產生值的其他方式。
在本發明概念的一些實施例中,裝置驅動器160可追蹤哪些記憶體位址已被存取,且在看起來圖1所示主機記憶體控制器115將壓制對圖1所示非揮發性雙列直插記憶體模組105的存取時僅改變「不理會」位元。在本發明概念的其他實施例中,裝置驅動器160可在每一記憶體存取時改變「不理會」位元的值,而無需考慮圖1所示主機記憶體控制器115是否可以其他方式壓制對圖1所示非揮發性雙列直插記憶體模組105的存取。
另一種防止圖1所示主機記憶體控制器115認為Row Hammer是個問題的方式是將圖1所示暴露的記憶體150分割成具有非連續記憶體位址的邏輯區段。圖8示出圖1所示暴露的記憶體150可如何被分割成具有非連續記憶體位址的邏輯區段的實例。
圖8示出根據本發明概念的第二實施例,圖1所示非揮發性雙列直插記憶體模組的記憶體空間的第二示例性佈局。在圖8中,圖1所示暴露的記憶體150僅包括具有大小205(其大於圖1所示暴露的記憶體150的實際大小)的某些邏輯區段。舉例而言,圖1所示暴露的記憶體150可僅包括邏輯區段805、810、815及820:邏輯區段825、830及835儘管位於大小205的範圍內,但其並非為圖1所示暴露的記憶體150的一部分。由於暴露的記憶體150內的邏輯區段的記憶體位址為非連續的,因此Row Hammer不再是問題。
圖9示出根據本發明概念的實施例,圖1所示非揮發性雙列直插記憶體模組105及圖1所示裝置驅動器160可如何處理對圖1所示非揮發性雙列直插記憶體模組105中的記憶體位址的請求的示例性程序流程圖。在圖9中,在方塊905處,圖1所示非揮發性雙列直插記憶體模組105可向主機電腦(更具體而言,向圖1所示主機記憶體控制器115)開放圖1所示暴露的記憶體150。在方塊910處,圖1所示裝置驅動器160可攔截存取圖1所示記憶體位址605的請求,所述請求的目的地為圖1所示主機記憶體控制器115。在方塊915處,圖1所示裝置驅動器160可接收存取圖6所示記憶體位址605的請求。在方塊920處,圖1所示裝置驅動器160可預先映射圖6所示記憶體位址605以產生圖6所示預先映射的記憶體位址610。在方塊925處,圖1所示裝置驅動器160可改變圖6所示預先映射的記憶體位址610中的一或多個位元,以產生記憶體位址605的圖7所示別名705或710。如以上參照圖7所闡述,產生圖6所示預先映射的記憶體位址610的圖7所示別名705或710是可選的,且因此方塊925是可選的。最後,在方塊930處,圖1所示裝置驅動器160可將圖6所示預先映射的記憶體位址610或圖7所示別名705或710發送至圖1所示主機記憶體控制器115。
圖10示出根據本發明概念的實施例,圖1所示非揮發性雙列直插記憶體模組105可如何將暴露的記憶體150暴露於圖1所示主機電腦的程序流程圖。在圖10中,在方塊1005處,圖1所示非揮發性雙列直插記憶體模組105可選擇圖1所示非揮發性記憶體130中的連續記憶體區塊。(如先前所述,圖1所示暴露的記憶體150亦可儲存於其他地方而非儲存於圖1所示非揮發性記憶體130中:除了改變圖1所示暴露的記憶體150的儲存位置,圖10所示流程圖可在此類情況下不加修改地使用。)圖1所示非揮發性雙列直插記憶體模組105可以任何所需方式選擇連續記憶體區塊。舉例而言,圖1所示非揮發性雙列直插記憶體模組105可選擇在基礎位址0處開始或在圖5所示總容量505的上端處結束的連續記憶體區塊、或任何其他連續記憶體區塊。在方塊1010處,圖1所示非揮發性雙列直插記憶體模組105可將連續記憶體區塊劃分成邏輯區段(例如,圖5所示邏輯區段510、515、520、525及530)。在方塊1015處,圖1所示非揮發性雙列直插記憶體模組105可將邏輯區段(例如,圖5所示邏輯區段510、515、520、525及530)暴露以作為圖1所示暴露的記憶體150。
作為另一選擇,在方塊1020處,圖1所示非揮發性雙列直插記憶體模組105可選擇圖1所示非揮發性記憶體130中的非連續記憶體區塊,所述區塊中的每一者具有圖2所示的均勻大小215。正如方塊1005一樣,圖1所示非揮發性雙列直插記憶體模組105可以任何所需方式選擇非連續區塊。在方塊1025處,圖1所示非揮發性雙列直插記憶體模組105可將非連續記憶體區塊暴露以作為邏輯區段805、810、815及820。
儘管圖10顯示圖1所示非揮發性雙列直插記憶體模組105暴露連續記憶體區塊或非連續區塊,但本發明的其他實施例可將兩種變型進行組合。舉例而言,可辨識出圖1所示非揮發性記憶體130的4個大的部分(每一部分自身為連續區塊),且每一部分可被劃分成可由圖1所示非揮發性雙列直插記憶體模組105暴露的邏輯區段。
在圖9至圖10中,示出本發明概念的一個實施例。但熟習此項技術者將認識到亦可藉由改變方塊的次序、藉由省略方塊、或藉由包括圖中未示出的鏈接而達成本發明概念的其他實施例。流程圖的所有此種變化皆被視為本發明概念的實施例,而無論是否予以明確闡述。
以下論述旨在提供對可在其中實作本發明概念的某些態樣的一或多個適合的機器的簡要總體說明。所述一或多個機器可至少部分地藉由來自例如鍵盤、滑鼠等傳統輸入裝置的輸入以及藉由自另一機器接收的指令、與虛擬實境(virtual reality,VR)環境的交互作用、生物統計回饋、或其他輸入訊號而得到控制。本文中所使用的用語「機器」旨在廣泛囊括單個機器、虛擬機器、或由能夠在通訊上耦合於一起的多個機器、多個虛擬機器、或一起運作的多個裝置形成的系統。示例性機器包括:計算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持裝置、電話、平板等;以及運輸裝置,例如私人或公共運輸(例如,汽車、火車、計程車等)。
所述一或多個機器可包括嵌式控制器,例如可程式化或非可程式化邏輯裝置或陣列、應用專用積體電路(Application Specific Integrated Circuit,ASIC)、嵌式電腦、智慧卡等。所述一或多個機器可利用與一或多個遠端機器的一或多個連接,例如經由網路介面、數據機、或其他通訊耦合。機器可使用實體及/或邏輯網路(例如,內部網路、網際網路、局部區域網路、廣域網路等)相互連接。熟習此項技術者將理解,網路通訊可利用各種有線及/或無線短程或遠程載波及協定,包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11、藍牙®、光學、紅外、纜線、雷射等。
本發明概念的實施例可藉由參照或結合相關聯的資料來闡述,所述相關聯的資料包括當被機器存取時使得所述機器進行任務或定義抽象資料類型或低層階硬體配置(hardware context)的功能、程序、資料結構、應用程式等。相關聯的資料可儲存於例如揮發性及/或非揮發性記憶體(例如,隨機存取記憶體、唯讀記憶體等)中、或儲存於其他儲存裝置及其相關聯的儲存媒體(包括硬碟驅動機(hard-drive)、軟碟、光學儲存器、磁帶、快閃記憶體、記憶條、數位視訊光碟、生物儲存器等)中。相關聯的資料可以封包、串列資料(serial data)、並列資料(parallel data)、傳播訊號(propagated signal)等的形式在傳輸環境(包括實體及/或邏輯網路)中遞送且可以壓縮或加密格式使用。相關聯的資料可用於分佈式環境中,並儲存於本地及/或遠端以供機器存取。
本發明概念的實施例可包括包含可由一或多個處理器執行的指令的有形的、非暫時性機器可讀取媒體,所述指令包括用以進行如本文所述本發明概念的要件的指令。
上文已參照所說明實施例闡述並說明瞭本發明概念的原理,應認識到,可在不背離該些原理的條件下在排列及細節上對所說明實施例進行潤飾,且所說明實施例可以任意所需方式加以組合。並且,儘管以上論述著重於特定實施例,然而預期存在其他構造。具體而言,儘管本文中使用例如「根據本發明概念的實施例」等表達或類似表達,然而該些片語意在大體提及實施例的可能性,而並非旨在將本發明概念限制為特定實施例構造。本文所使用的該些用語可提及能夠組合成其他實施例的相同或不同實施例。
上述說明性實施例不應被視為限制本發明概念。儘管已闡述少數實施例,然而熟習此項技術者將易於理解,可在實質上不背離本揭露內容的新穎教示內容及優點的條件下對該些實施例作出諸多潤飾。因此,所有此種潤飾皆旨在包含於如申請專利範圍中所界定的本發明概念的範圍內。
本發明概念的實施例可擴展至以下聲明,但並非僅限於此。
聲明1。本發明概念的實施例包括一種裝置,所述裝置包括:
非揮發性雙列直插記憶體模組(NVDIMM),安裝於雙列直插記憶體模組(DIMM)插口中,所述非揮發性雙列直插記憶體模組包括記憶體及暴露的記憶體,所述暴露的記憶體包括所述暴露的記憶體的第一大小及所述暴露的記憶體的基礎位址;以及
裝置驅動器,運作於主機處理器上,其中所述裝置驅動器能夠運作以攔截目的地為主機記憶體控制器的記憶體位址並將所述記憶體位址替換為預先映射的記憶體位址,所述預先映射的記憶體位址不同於所述記憶體位址。
聲明2。本發明概念的實施例包括根據聲明1的裝置,其中所述非揮發性雙列直插記憶體模組包括固態裝置(SSD)。
聲明3。本發明概念的實施例包括根據聲明1的裝置,其中所述預先映射的記憶體位址被設計成使所述主機記憶體控制器將目標記憶體位址傳送至所述非揮發性雙列直插記憶體模組,所述目標記憶體位址代表儲存於所述記憶體位址中的值的實體位置。
聲明4。本發明概念的實施例包括根據聲明3的裝置,其中所述裝置驅動器能夠運作以因應於所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述第一大小、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的邏輯區段的第二大小、及所述主機記憶體控制器的記憶體控制器運作模式而自所述記憶體位址產生所述預先映射的記憶體位址。
聲明5。本發明概念的實施例包括根據聲明4的裝置,其中所述裝置驅動器更能夠運作以因應於所述主機記憶體控制器對所述記憶體位址進行的邏輯-實體變換而自所述記憶體位址產生所述預先映射的記憶體位址。
聲明6。本發明概念的實施例包括根據聲明3的裝置,其中所述目標記憶體位址是所述記憶體位址。
聲明7。本發明概念的實施例包括根據聲明3的裝置,其中所述目標記憶體位址是所述記憶體位址的別名。
聲明8。本發明概念的實施例包括根據聲明7的裝置,其中所述預先映射的記憶體位址包括相對於所述記憶體位址而言的至少一個已改變位元,所述至少一個已改變位元不由所述非揮發性雙列直插記憶體模組使用。
聲明9。本發明概念的實施例包括根據聲明3的裝置,其中所述非揮發性雙列直插記憶體模組的所述暴露的記憶體被劃分成所述非揮發性雙列直插記憶體模組的所述記憶體內的非連續邏輯區段。
聲明10。本發明概念的實施例包括根據聲明3的裝置,其中所述暴露的記憶體是所述記憶體的子集。
聲明11。本發明概念的實施例包括一種方法,所述方法包括:
接收欲存取非揮發性雙列直插記憶體模組(NVDIMM)的記憶體位址的請求,所述非揮發性雙列直插記憶體模組包括記憶體及暴露的記憶體,所述暴露的記憶體包括所述暴露的記憶體的第一大小及所述暴露的記憶體的基礎位址;
將所述記憶體位址預先映射至中間位址,其中所述中間位址不同於所述記憶體位址;以及
將所述中間位址發送至主機記憶體控制器,
其中所述主機記憶體控制器將目標記憶體位址發送至所述非揮發性雙列直插記憶體模組,所述目標記憶體位址代表儲存於所述記憶體位址中的值的實體位置。
聲明12。本發明概念的實施例包括根據聲明11的方法,其中接收欲存取記憶體位址的請求包括在自主機處理器至所述主機記憶體控制器的欲存取所述記憶體位址的請求到達所述主機記憶體控制器之前攔截所述請求。
聲明13。本發明概念的實施例包括根據聲明11的方法,其中接收欲存取記憶體位址的請求包括接收欲存取固態裝置(SSD)的所述記憶體位址的請求。
聲明14。本發明概念的實施例包括根據聲明11的方法,其中將所述記憶體位址預先映射至中間位址包括因應於所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述第一大小、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的邏輯區段的第二大小、及所述主機記憶體控制器的記憶體控制器運作模式而將所述記憶體位址預先映射至所述中間位址。
聲明15。本發明概念的實施例包括根據聲明14的方法,其中將所述記憶體位址預先映射至所述中間位址更包括因應於所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述第一大小、及所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述邏輯區段的所述第二大小、所述主機記憶體控制器的所述記憶體控制器運作模式、以及由所述主機記憶體控制器使用的邏輯-實體變換而將所述記憶體位址預先映射至所述中間位址。
聲明16。本發明概念的實施例包括根據聲明11的方法,其中所述主機記憶體控制器將所述記憶體位址發送至所述非揮發性雙列直插記憶體模組。
聲明17。本發明概念的實施例包括根據聲明11的方法,其中將所述記憶體位址預先映射至中間位址包括將所述記憶體位址預先映射至所述記憶體位址的別名。
聲明18。本發明概念的實施例包括根據聲明11的方法,其中將所述記憶體位址預先映射至中間位址包括相對於所述記憶體位址而改變所述中間位址中的至少一個位元,所述至少一個已改變位元不由所述非揮發性雙列直插記憶體模組使用。
聲明19。本發明概念的實施例包括根據聲明11的方法,所述方法更包括將所述暴露的記憶體暴露至所述主機記憶體控制器。
聲明20。本發明概念的實施例包括根據聲明19的方法,其中將所述暴露的記憶體暴露至所述主機記憶體控制器包括:
辨識具有所述第一大小的連續記憶體區塊;
將所述連續記憶體區塊劃分成邏輯區段,每一邏輯區段具有第二大小;以及
將所述邏輯區段暴露至所述主機記憶體控制器。
聲明21。本發明概念的實施例包括根據聲明19的方法,其中將所述暴露的記憶體暴露至所述主機記憶體控制器包括:
辨識一組非連續記憶體區塊;以及
將所述非連續記憶體區塊暴露至所述主機記憶體控制器作為邏輯區段。
聲明22。本發明概念的實施例包括一種包括有形儲存媒體的物品,所述有形儲存媒體上儲存有非暫時性指令,所述非暫時性指令在由機器執行時使得:
接收欲存取來自非揮發性雙列直插記憶體模組(NVDIMM)的記憶體位址的請求,所述非揮發性雙列直插記憶體模組包括記憶體及暴露的記憶體,所述暴露的記憶體包括所述暴露的記憶體的第一大小及所述暴露的記憶體的基礎位址;
將所述記憶體位址預先映射至中間位址,其中所述中間位址不同於所述記憶體位址;以及
將所述中間位址發送至主機記憶體控制器,
其中所述主機記憶體控制器將目標記憶體位址發送至所述非揮發性雙列直插記憶體模組,所述目標記憶體位址代表儲存於所述記憶體位址中的值的實體位置。
聲明23。本發明概念的實施例包括根據聲明22的物品,其中接收欲存取記憶體位址的請求包括:在自主機處理器至所述主機記憶體控制器的欲存取所述記憶體位址的請求到達所述主機記憶體控制器之前攔截所述請求。
聲明24。本發明概念的實施例包括根據聲明22的物品,其中接收欲存取記憶體位址的請求包括接收欲存取來自固態裝置(SSD)的所述記憶體位址的請求。
聲明25。本發明概念的實施例包括根據聲明22的物品,其中將所述記憶體位址預先映射至中間位址包括因應於所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述第一大小、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的邏輯區段的第二大小、及所述主機記憶體控制器的記憶體控制器運作模式而將所述記憶體位址預先映射至所述中間位址。
聲明26。本發明概念的實施例包括根據聲明25的物品,其中將所述記憶體位址預先映射至所述中間位址更包括因應於所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述第一大小、及所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述邏輯區段的所述第二大小、所述主機記憶體控制器的記憶體控制器運作模式、以及由所述主機記憶體控制器使用的邏輯-實體變換而將所述記憶體位址預先映射至所述中間位址。
聲明27。本發明概念的實施例包括根據聲明22的物品,其中所述主機記憶體控制器將所述記憶體位址發送至所述非揮發性雙列直插記憶體模組。
聲明28。本發明概念的實施例包括根據聲明22的物品,其中將所述記憶體位址預先映射至中間位址包括將所述記憶體位址預先映射至所述記憶體位址的別名。
聲明29。本發明概念的實施例包括根據聲明22的物品,其中將所述記憶體位址預先映射至中間位址包括相對於所述記憶體位址而改變所述中間位址中的至少一個位元,所述至少一個已改變位元不由所述非揮發性雙列直插記憶體模組使用。
聲明30。本發明概念的實施例包括根據聲明22的物品,其中所述有形儲存媒體上更儲存有非暫時性指令,所述非暫時性指令在由機器執行時使得將所述暴露的記憶體暴露至所述主機記憶體控制器。
聲明31。本發明概念的實施例包括根據聲明30的物品,其中將所述暴露的記憶體暴露至所述主機記憶體控制器包括:
辨識具有所述第一大小的連續記憶體區塊;
將所述連續記憶體區塊劃分成邏輯區段,每一邏輯區段具有第二大小;以及
將所述邏輯區段暴露至所述主機記憶體控制器。
聲明32。本發明概念的實施例包括根據聲明30的物品,其中將所述暴露的記憶體暴露至所述主機記憶體控制器包括:
辨識一組非連續記憶體區塊;以及
將所述非連續記憶體區塊暴露至所述主機記憶體控制器作為邏輯區段。
因此,有鑒於對本文所述實施例的眾多種排列,此詳細說明及隨附材料旨在僅為說明性的,而不應被視為限制本發明概念的範圍。因此,所主張的本發明概念是可歸屬於以下申請專利範圍及其等效範圍的範圍及精神內的所有此種潤飾。
105:非揮發性雙列直插記憶體模組(NVDIMM)/記憶體
110:主機處理器/處理器
115:主機記憶體控制器
120:記憶體訊號線
125:雙列直插記憶體模組插口
130:非揮發性記憶體
135:主機介面邏輯
140:處理及媒體控制邏輯
145:內部動態隨機存取記憶體
150:暴露的記憶體
155:動態隨機存取記憶體雙列直插記憶體模組(DRAM DIMM)
160:裝置驅動器
205:大小
210:暴露的記憶體的基礎位址
215:大小
220:主機記憶體控制器的運作模式/記憶體控制器運作模式
225:邏輯-實體變換
305:電腦系統
310:電腦
315:監視器
320:鍵盤
325:滑鼠
405:時脈
410:儲存裝置
415:網路連接器
420:匯流排
425:使用者介面
430:輸入/輸出引擎
505:總容量
510、515、520、525、530:邏輯區段
605:記憶體請求/記憶體位址
610:預先映射的記憶體位址
615:目標記憶體位址
705:別名
710:預先映射別名
715、720:已改變位元
805、810、815、820、825、830、835:邏輯區段
905、910、915、920、925、930:方塊
1005、1010、1015、1020、1025:方塊
圖1示出根據本發明概念的實施例,與主機處理器通訊的非揮發性雙列直插記憶體模組(NVDIMM)。
圖2示出在對圖1所示裝置驅動器的設計中的各種考慮因素。
圖3示出能夠支援圖1所示非揮發性雙列直插記憶體模組及主機處理器的電腦系統。
圖4示出可使用圖1所示非揮發性雙列直插記憶體模組的機器的架構。
圖5示出根據本發明概念的實施例,圖1所示非揮發性雙列直插記憶體模組的記憶體空間的示例性佈局。
圖6示出根據本發明概念的實施例的圖1所示裝置驅動器,所述裝置驅動器攔截欲存取圖1所示非揮發性雙列直插記憶體模組中的記憶體位址的請求並對所請求的記憶體位址進行預先映射。
圖7示出根據本發明概念的實施例,執行位址別名化的圖1所示裝置驅動器。
圖8示出根據本發明概念的第二實施例,圖1所示非揮發性雙列直插記憶體模組的記憶體空間的第二示例性佈局。
圖9示出根據本發明概念的實施例,圖1所示非揮發性雙列直插記憶體模組及圖1所示裝置驅動器如何處理對圖1所示非揮發性雙列直插記憶體模組中的記憶體位址的請求的程序流程圖。
圖10示出根據本發明概念的實施例,圖1所示非揮發性雙列直插記憶體模組可如何將記憶體暴露於圖1所示主機電腦的程序流程圖。
105:非揮發性雙列直插記憶體模組(NVDIMM)
110:主機處理器/處理器
115:主機記憶體控制器
120:記憶體訊號線
125:雙列直插記憶體模組插口
130:非揮發性記憶體
135:主機介面邏輯
140:處理及媒體控制邏輯
145:內部動態隨機存取記憶體
150:暴露的記憶體
155:動態隨機存取記憶體雙列直插記憶體模組
160:裝置驅動器
Claims (9)
- 一種記憶體裝置,包括: 非揮發性雙列直插記憶體模組,安裝於雙列直插記憶體模組插口中,所述非揮發性雙列直插記憶體模組包括記憶體及暴露的記憶體,所述暴露的記憶體包括所述暴露的記憶體的第一大小及所述暴露的記憶體的基礎位址;以及 裝置驅動器,運作於主機處理器上,所述裝置驅動器能夠運作以攔截目的地為主機記憶體控制器的記憶體位址並根據發送至所述主機記憶體控制器的請求將所述記憶體位址替換為中間位址,所述中間位址不同於所述記憶體位址,並對所述記憶體位址使用實體至中間的映射來生成, 其中所述暴露的記憶體包括直接可定址記憶體,並且所述記憶體位址在所述暴露的記憶體中。
- 如請求項1所述的記憶體裝置,其中所述中間位址被設計成使所述主機記憶體控制器因應於所述中間位址將目標記憶體位址傳送至所述非揮發性雙列直插記憶體模組,所述目標記憶體位址包括儲存於所述記憶體位址中的值的實體位置。
- 如請求項2所述的記憶體裝置,其中所述裝置驅動器能夠運作以因應於所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述第一大小、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的所述基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的邏輯區段的第二大小、及所述主機記憶體控制器的記憶體控制器運作模式而自所述記憶體位址產生所述中間位址。
- 如請求項3所述的記憶體裝置,其中所述裝置驅動器更能夠運作以因應於所述主機記憶體控制器對所述記憶體位址進行的邏輯-實體的映射,使用實體至中間的映射而自所述記憶體位址產生所述中間位址。
- 如請求項1所述的記憶體裝置,其中所述主機記憶體控制器在所述中間位址上進行邏輯-實體的映射。
- 一種記憶體定址方法,包括: 接收欲存取非揮發性雙列直插記憶體模組的記憶體位址的請求,所述非揮發性雙列直插記憶體模組包括記憶體及暴露的記憶體,所述暴露的記憶體包括所述暴露的記憶體的第一大小及所述暴露的記憶體的基礎位址,所述記憶體位址在所述暴露的記憶體中; 使用實體至中間的轉換以將所述記憶體位址預先映射至中間位址,因應於所述非揮發性雙列直插記憶體模組中暴露的記憶體的第一大小、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的邏輯區段的第二大小、主機記憶體控制器的記憶體控制器運作模式以及所述主機記憶體控制器使用的邏輯至實體的轉換,所述中間位址不同於所述記憶體位址;以及 將所述中間位址發送至所述主機記憶體控制器, 其中所述主機記憶體控制器將目標記憶體位址發送至所述非揮發性雙列直插記憶體模組,所述目標記憶體位址因應於所述中間位址並代表儲存於所述記憶體位址中的值的實體位置,並且 其中所述暴露的記憶體包括直接可定址記憶體。
- 如請求項6所述的記憶體定址方法,其中所述主機記憶體控制器在所述中間位址上進行邏輯-實體的映射。
- 一種包括非暫時性儲存媒體的物品,所述非暫時性儲存媒體上儲存有指令,所述指令在由機器執行時使得: 接收欲存取非揮發性雙列直插記憶體模組的記憶體位址的請求,所述非揮發性雙列直插記憶體模組包括記憶體及暴露的記憶體,所述暴露的記憶體包括所述暴露的記憶體的第一大小及所述暴露的記憶體的基礎位址,所述記憶體位址在所述暴露的記憶體中; 使用實體至邏輯中間的轉換以將所述記憶體位址預先映射至中間位址,因應於所述非揮發性雙列直插記憶體模組中暴露的記憶體的第一大小、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的基礎位址、所述非揮發性雙列直插記憶體模組中所述暴露的記憶體的邏輯區段的第二大小、主機記憶體控制器的記憶體控制器運作模式以及所述主機記憶體控制器使用的邏輯至實體的轉換,所述中間位址不同於所述記憶體位址;以及 將所述中間位址發送至所述主機記憶體控制器, 其中所述主機記憶體控制器將目標記憶體位址發送至所述非揮發性雙列直插記憶體模組,所述目標記憶體位址對所述中間位址作出因應且包括儲存於所述記憶體位址中的值的實體位置,以及 其中所述暴露的記憶體包括直接可定址記憶體。
- 如請求項8所述的物品,其中所述主機記憶體控制器在所述中間位址上進行邏輯-實體的映射。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562238660P | 2015-10-07 | 2015-10-07 | |
US62/238,660 | 2015-10-07 | ||
US15/060,596 | 2016-03-03 | ||
US15/060,596 US10031674B2 (en) | 2015-10-07 | 2016-03-03 | DIMM SSD addressing performance techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202040367A true TW202040367A (zh) | 2020-11-01 |
TWI718969B TWI718969B (zh) | 2021-02-11 |
Family
ID=58498625
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105118703A TWI699646B (zh) | 2015-10-07 | 2016-06-15 | 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 |
TW109121231A TWI718969B (zh) | 2015-10-07 | 2016-06-15 | 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105118703A TWI699646B (zh) | 2015-10-07 | 2016-06-15 | 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10031674B2 (zh) |
JP (1) | JP6799427B2 (zh) |
KR (1) | KR102317657B1 (zh) |
CN (1) | CN106776358B (zh) |
TW (2) | TWI699646B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437483B2 (en) * | 2015-12-17 | 2019-10-08 | Samsung Electronics Co., Ltd. | Computing system with communication mechanism and method of operation thereof |
US10635553B2 (en) * | 2017-10-20 | 2020-04-28 | Microsoft Technology Licensing, Llc | Error recovery in non-volatile storage partitions |
KR102353859B1 (ko) * | 2017-11-01 | 2022-01-19 | 삼성전자주식회사 | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 |
CN113760185A (zh) * | 2017-11-07 | 2021-12-07 | 华为技术有限公司 | 内存块回收方法和装置 |
KR102410671B1 (ko) | 2017-11-24 | 2022-06-17 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법 |
JP2019121195A (ja) | 2018-01-05 | 2019-07-22 | 東芝メモリ株式会社 | メモリシステム及びプロセッサシステム |
US11029879B2 (en) | 2018-01-29 | 2021-06-08 | Samsung Electronics Co., Ltd | Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel |
US10838637B2 (en) | 2018-02-08 | 2020-11-17 | Micron Technology, Inc. | Status management in storage backed memory package |
US11074189B2 (en) | 2019-06-20 | 2021-07-27 | International Business Machines Corporation | FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy |
US11113188B2 (en) | 2019-08-21 | 2021-09-07 | Microsoft Technology Licensing, Llc | Data preservation using memory aperture flush order |
KR102657760B1 (ko) | 2019-09-23 | 2024-04-17 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그 메모리 시스템의 동작 방법 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6732249B1 (en) * | 2000-06-09 | 2004-05-04 | 3Com Corporation | Host computer virtual memory within a network interface adapter |
EP1473638B1 (en) * | 2003-04-28 | 2008-07-23 | Texas Instruments Incorporated | Terminal management bus |
US20060044934A1 (en) * | 2004-09-02 | 2006-03-02 | Micron Technology, Inc. | Cluster based non-volatile memory translation layer |
US20060168485A1 (en) * | 2005-01-26 | 2006-07-27 | Via Technologies, Inc | Updating instruction fault status register |
US7716411B2 (en) * | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
TWI453751B (zh) * | 2006-08-04 | 2014-09-21 | Marvell World Trade Ltd | 具有誤差修正功能之完全緩衝式雙直列記憶體模組 |
US8874831B2 (en) | 2007-06-01 | 2014-10-28 | Netlist, Inc. | Flash-DRAM hybrid memory module |
US9251899B2 (en) * | 2008-02-12 | 2016-02-02 | Virident Systems, Inc. | Methods for upgrading main memory in computer systems to two-dimensional memory modules and master memory controllers |
US8082384B2 (en) * | 2008-03-26 | 2011-12-20 | Microsoft Corporation | Booting an electronic device using flash memory and a limited function memory controller |
US7941568B2 (en) * | 2008-05-05 | 2011-05-10 | International Business Machines Corporation | Mapping a virtual address to PCI bus address |
US20110035540A1 (en) | 2009-08-10 | 2011-02-10 | Adtron, Inc. | Flash blade system architecture and method |
JP5756622B2 (ja) * | 2010-11-30 | 2015-07-29 | 株式会社日立製作所 | 半導体装置 |
US9575908B2 (en) | 2011-02-08 | 2017-02-21 | Diablo Technologies Inc. | System and method for unlocking additional functions of a module |
US9552175B2 (en) | 2011-02-08 | 2017-01-24 | Diablo Technologies Inc. | System and method for providing a command buffer in a memory system |
US8607003B2 (en) * | 2011-07-15 | 2013-12-10 | International Business Machines Corporation | Memory access to a dual in-line memory module form factor flash memory |
WO2013028859A1 (en) * | 2011-08-24 | 2013-02-28 | Rambus Inc. | Methods and systems for mapping a peripheral function onto a legacy memory interface |
WO2013048500A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
US9026717B2 (en) * | 2011-09-30 | 2015-05-05 | SanDisk Technologies, Inc. | Apparatus, system, and method for a persistent object store |
KR20130078455A (ko) * | 2011-12-30 | 2013-07-10 | 삼성전자주식회사 | 메모리 특성 정보를 저장하는 반도체 메모리 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 반도체 메모리 장치의 동작방법 |
US9046915B2 (en) * | 2012-02-27 | 2015-06-02 | Advanced Micro Devices, Inc. | Circuit and method for initializing a computer system |
US9280497B2 (en) | 2012-12-21 | 2016-03-08 | Dell Products Lp | Systems and methods for support of non-volatile memory on a DDR memory channel |
JP6224483B2 (ja) * | 2014-02-26 | 2017-11-01 | Necプラットフォームズ株式会社 | 半導体記憶装置、メモリアクセス制御方法、およびコンピュータ・プログラム |
WO2015138245A1 (en) * | 2014-03-08 | 2015-09-17 | Datawise Systems, Inc. | Methods and systems for converged networking and storage |
CN104881371B (zh) * | 2015-05-29 | 2018-02-09 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
-
2016
- 2016-03-03 US US15/060,596 patent/US10031674B2/en active Active
- 2016-04-12 KR KR1020160044912A patent/KR102317657B1/ko active IP Right Grant
- 2016-06-15 TW TW105118703A patent/TWI699646B/zh active
- 2016-06-15 TW TW109121231A patent/TWI718969B/zh active
- 2016-09-26 JP JP2016187239A patent/JP6799427B2/ja active Active
- 2016-10-08 CN CN201610877643.3A patent/CN106776358B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
TW201714090A (zh) | 2017-04-16 |
KR20170041616A (ko) | 2017-04-17 |
CN106776358A (zh) | 2017-05-31 |
TWI699646B (zh) | 2020-07-21 |
JP6799427B2 (ja) | 2020-12-16 |
CN106776358B (zh) | 2021-10-26 |
KR102317657B1 (ko) | 2021-10-26 |
US10031674B2 (en) | 2018-07-24 |
JP2017073129A (ja) | 2017-04-13 |
US20170102873A1 (en) | 2017-04-13 |
TWI718969B (zh) | 2021-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI718969B (zh) | 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 | |
US11775455B2 (en) | Storage device for interfacing with host and method of operating the host and the storage device | |
US10241951B1 (en) | Device full memory access through standard PCI express bus | |
TWI691838B (zh) | 電腦系統以及非揮發性記憶體的操作方法 | |
US10943635B2 (en) | Memory device shared by two or more processors and system including the same | |
US9135190B1 (en) | Multi-profile memory controller for computing devices | |
US9887008B2 (en) | DDR4-SSD dual-port DIMM device | |
US9329783B2 (en) | Data processing system and data processing method | |
TWI735529B (zh) | 多階層記憶體之管理的技術 | |
KR20230026370A (ko) | 플래쉬 집적 고 대역폭 메모리 장치 | |
US20200081848A1 (en) | Storage device and system | |
CN110275840B (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
US20170255565A1 (en) | Method and apparatus for providing a contiguously addressable memory region by remapping an address space | |
KR20160111124A (ko) | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
US10503657B2 (en) | DIMM SSD Addressing performance techniques | |
KR20140123203A (ko) | 메모리 시스템 | |
US20170031811A1 (en) | Control method for non-volatile memory and associated computer system | |
US20240103755A1 (en) | Data processing system and method for accessing heterogeneous memory system including processing unit | |
US10853255B2 (en) | Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover | |
TWI718858B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US20200327049A1 (en) | Method and system for memory expansion with low overhead latency | |
US20110167210A1 (en) | Semiconductor device and system comprising memories accessible through dram interface and shared memory region | |
CN118069037A (zh) | 存储器控制器、电子系统和控制存储器访问的方法 |