TWI735529B - 多階層記憶體之管理的技術 - Google Patents
多階層記憶體之管理的技術 Download PDFInfo
- Publication number
- TWI735529B TWI735529B TW106103939A TW106103939A TWI735529B TW I735529 B TWI735529 B TW I735529B TW 106103939 A TW106103939 A TW 106103939A TW 106103939 A TW106103939 A TW 106103939A TW I735529 B TWI735529 B TW I735529B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- register array
- address
- near memory
- memory address
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 678
- 230000004044 response Effects 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 28
- 238000003491 array Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 23
- 238000012546 transfer Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 238000013507 mapping Methods 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000001419 dependent effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000001413 cellular effect Effects 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000003032 molecular docking Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000593 degrading effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 230000001360 synchronised 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Dram (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一多階層記憶體管理電路可在近記憶體及遠記憶體間重對映資料。於一個實施例中,一暫存器陣列儲存近記憶體位址及對映至該等近記憶體位址的遠記憶體位址。於該暫存器陣列中之該分錄的數目係小於近記憶體中之該頁面之數目。重對映邏輯判定該所請求資料的一遠記憶體位址係不存在於該暫存器陣列中,及從該暫存器陣列選擇出一可用近記憶體位址。重對映邏輯也開始將於該近記憶體位址的該所請求資料之寫入至經選取的該近記憶體位址。重對映邏輯進一步將該遠記憶體位址寫入至該暫存器陣列對應經選取之該近記憶體位址的一分錄。
Description
發明領域 本發明之實施例大致上係有關於記憶體裝置,及更特別地係有關於多階層記憶體諸如近及遠記憶體的管理。
著作權聲明/權限 本專利文件之部分揭示內容可能含有受著作權保護之材料。當本專利出現在專利商標局的專利檔案或記錄時,著作權擁有者並不反對任何人複製專利文件或專利揭示文,但仍然保有全部著作權權利。著作權聲明適用於後述全部資料及其附圖圖式,以及後述任何軟體:著作權©2016,英特爾公司(Intel Corporation),版權所有。
發明背景 記憶體裝置普遍存在於計算裝置以儲存資料及代碼,用於處理器執行操作及完成計算裝置的功能。記憶體系統有一傾向,自具有一致效能特性的平坦記憶體空間移動至較為非均一的記憶體系統,其也被稱作為多階層記憶體系統。多階層記憶體系統為包括較快的記憶體及較慢的記憶體耦接至相同處理器的系統。於此等多階層記憶體系統中,存取較快記憶體相較於較慢記憶體之比值可能影響系統效能。
依據本揭露之一實施例,係特地提出一種多階層記憶體管理電路,其包含:一暫存器陣列,其係用於儲存一近記憶體的近記憶體位址及對映至該等近記憶體位址的遠記憶體位址,其中,於該暫存器陣列中之分錄的數目係小於該近記憶體中之頁面的數目;及重對映邏輯用以:檢測針對位在遠記憶體中之資料的一請求;判定所請求該資料的一遠記憶體位址係不存在於該暫存器陣列中;從該暫存器陣列中選擇出一可用近記憶體位址;起始將來自該近記憶體位址的該資料寫入該經選取的近記憶體位址;及將該遠記憶體位址寫入與經選取的該近記憶體位址對應的該暫存器陣列之一分錄。
較佳實施例之詳細說明 如前文簡述,計算系統可包括多型主記憶體,諸如較快的記憶體及較慢的記憶體。舉例言之,於一個實施例中,一系統包括「近記憶體」及「遠記憶體」兩者。近記憶體及遠記憶體為具有不同特性諸如不同操作特性的記憶體。於一個實施例中,近記憶體為比遠記憶體更快的記憶體。舉例言之,近記憶體可具有高頻寬及/或低延遲。相較於近記憶體,遠記憶體具有低頻寬及/或高延遲。近記憶體可以但非必要置放比起遠記憶體實體上更接近處理器。此外,近記憶體可以是但非必要為「本地記憶體」,及遠記憶體可以是「非本地記憶體」。於有多個處理器之一系統中,本地記憶體為分配給該等處理器中之一者的記憶體之一區域。非本地記憶體為分配給該等處理器中之另一者的記憶體之一區域。近記憶體及遠記憶體也可(或另可)稱作為不同「階層」的記憶體,及如此具有近及遠記憶體兩者的系統可以是「多階層記憶體系統」之一例。具有近及遠記憶體兩者的系統也可稱作為「非均一記憶體系統」。
涵括多階層之記憶體可改良總系統效能。舉例言之,因近記憶體的低延遲及/或高頻寬故,涵括近記憶體區域可能有利。然而,接近處理器的成本或有限面積可能限制了近記憶體的大小。因此,藉由涵括具有比近記憶體更高延遲及/或更低頻寬的遠記憶體區域,經常改良系統效能,但可能更價廉且位置更遠離處理器。舉例言之,堆疊DRAM可提供近記憶體的一區域,及具有較低效能的傳統DRAM或其它記憶體技術可提供遠記憶體的一區域。但須瞭解近記憶體及遠記憶體並不受限於任何特定記憶體技術。反而,如前文解說,近記憶體區域係基於其相對於遠記憶體區域之特性界定。
多插座系統也可包括多階層記憶體。舉例言之,多插座系統可將各個插座耦接其本身的本地記憶體。於一個此種實施例中,對映至一給定插座的記憶體為近記憶體,及對映至其它插座的記憶體為遠記憶體。此等多插座系統可實施稱作非一致記憶體存取(NUMA)的一型記憶體組織。當核心存取其插座的本地記憶體(例如,近記憶體)時,NUMA可縮短記憶體延遲,但當存取記憶體區域對映至其它插座(例如,遠記憶體)時增加延遲。因此,於多階層記憶體系統中,最大化參照近記憶體之次數及最小化參照遠記憶體,可改良系統效能。據此,管理多階層記憶體使得頻繁地或晚近存取的資料出現在近記憶體,對系統效能具有正面效果。
如本文描述,於一個實施例中,多階層記憶體管理電路可在近及遠記憶體間重對映位址而不要求顯著大型重對映結構。多階層記憶體管理電路可包括一暫存器陣列以儲存近記憶體位址及對映該近記憶體位址的遠記憶體位址。於一個實施例中,暫存器陣列中之分錄數目係少於近記憶體的大小且與該大小獨立無關,及可基於期望的效能特性選擇。
於一個實施例中,多階層記憶體管理電路包括重對映邏輯,其當檢測針對位在遠記憶體中之資料的請求時,檢查暫存器陣列以瞭解遠記憶體位址是否已在暫存器陣列中。若遠記憶體位址係在暫存器陣列中,則資料係在近記憶體中於由暫存器陣列指示的位置。若遠記憶體位址係不在暫存器陣列中,則重對映邏輯選定一可用記憶體位址,及使得被請求資料在該經選取的近記憶體位址自遠記憶體複製至近記憶體。然後,重對映邏輯更新暫存器陣列以反映該對映情況。
於一個實施例中,如果暫存器陣列中並無可用近記憶體位址,則重對映邏輯觸發中斷以使得OS更新暫存器陣列。於中斷處理期間,OS可基於暫存器陣列更新頁面表,及以可用近記憶體位址更新暫存器陣列。於一個實施例中,中斷處理出現在重對映邏輯重對映多個頁面之後,在多個頁面間分期攤還OS遭致的成本而非只有一頁。
圖1為包括多階層記憶體管理電路之一系統之一實施例的方塊圖。系統100包括於計算裝置中之記憶體子系統之元件。處理器110表示執行作業系統(OS)及應用程式的一主機計算平台的一處理單元,其可集合稱作記憶體的「主機」。OS及應用程式執行操作,導致記憶體存取。處理器110可包括一或多個分開的處理器。各個分開的處理器可包括單一及/或多核心處理單元。處理單元可以是主處理器諸如中央處理單元(CPU)及/或周邊處理器諸如圖形處理單元(GPU)。系統100可實施為單晶片系統(SOC)101,或使用獨立組件實施。
記憶體控制器120表示用於系統100的一或多個記憶體控制器電路或裝置。記憶體控制器120表示回應於藉處理器110執行操作而產生記憶體存取指令。若「回應於」某個事件(例如,「y」)發生另一個事件(例如,「x」),則x可直接地或間接地回應y。舉例言之,y的出現最終導致x的出現,但可有其它中間事件及/或情況。於其它情境中,y可能不必然導致x的出現,及即便未出現y也可出現x。又復,「回應於」並不排除額外的及/或不同的原因事件的存在。因此,術語「回應於」也可表示「至少部分地回應於」。記憶體控制器120存取一或多個記憶體裝置140。於一個實施例中,記憶體裝置140經組織及作為不同通道管理,於該處各個通道耦接至匯流排及信號線,其並聯耦接至多個記憶體裝置。各個通道係可獨立操作。如此,各個通道可被獨立存取及控制,及計時、資料移轉、指令及位址交換、及其它操作針對各個通道為分開。於一個實施例中,針對各個通道的設定值係藉分開的模式暫存器或其它暫存器設定值控制。於一個實施例中,各個記憶體控制器120管理一分開的記憶體通道,但系統100可經組配以具有由單一控制器管理的多個通道,或在單一通道上具有多個控制器。於一個實施例中,記憶體控制器120為主機處理器110的部件,諸如在與處理器相同的晶粒上實施或相同的封裝空間中實施。
記憶體控制器120包括I/O介面邏輯122以耦接至系統匯流排。I/O介面邏輯122(以及記憶體裝置140之I/O介面邏輯142)可包括針腳、連接器、信號線、及/或其它硬體以連結該等裝置。I/O介面邏輯122可包括硬體介面。典型地,積體電路內部之導線耦接襯墊或連接器以介接裝置間之信號線或線跡。I/O介面邏輯122可包括驅動裝置、接收器、收發器、終端、及/或其它電路以在裝置間之信號線上發送及/或接收信號。系統匯流排可被實施為耦接記憶體控制器120至記憶體裝置140的多個信號線。系統匯流排包括至少時鐘(CLK)132、指令/位址(CMD)及寫入資料(DQ)134、讀取DQ 136、及零或多個其它信號線138。於一個實施例中,記憶體控制器120與記憶體間之匯流排或連結可被稱作為記憶體匯流排。CMD 134的信號線可被稱作為「C/A匯流排」(或ADD/CMD匯流排,或指示指令及位址資訊的移轉之若干其它標示)。用於寫入及讀取DQ 136的信號線可被稱作為「資料匯流排」。於一個實施例中,獨立通道具有不同的時鐘信號、C/A匯流排、資料匯流排、及其它信號線。如此,系統100可被視為具有多個「系統匯流排」,表示獨立介面路徑可視為分開的系統匯流排。須瞭解除了明確地顯示的線路之外,系統匯流排可包括選通信號線、提醒線路、附屬線路、及其它信號線。
須瞭解系統匯流排包括一資料匯流排(DQ 136)經組配以於一頻寬操作。基於系統100的設計及/或實施例,DQ 136可具有每個記憶體裝置140更多或更少的頻寬。舉例言之,DQ 136可支援具有x32介面、x16介面、x8介面、或其它介面的記憶體裝置。慣例「xN」,於該處N為二進制整數,係指記憶體裝置140的介面大小,其表示與記憶體控制器120交換資料的信號線DQ 136之數目。記憶體裝置的介面大小為就系統100中每個通道可同時使用或並聯耦接至相同信號線之多少個記憶體裝置的控制因數。術語「耦接」可指稱直接地或間接地實體上、電氣上、及/或通訊上連結的元件,且於本文中可與「連結」互換使用。
記憶體裝置140表示系統100的記憶體資源。對記憶體裝置的敘述可適用於不同的記憶體類型。記憶體裝置通常係指依電性記憶體技術。依電性記憶體為若供應裝置的電力中斷則其狀態(及因而儲存其上的資料)為不確定的記憶體。非依電性記憶體係指即便供應裝置的電力中斷其狀態為確定的記憶體。動態依電性記憶體要求刷新儲存於裝置中之資料以維持狀態。動態依電性記憶體的一個實施例包括動態隨機存取記憶體(DRAM),或若干變化諸如同步DRAM(SDRAM)。如本文描述的記憶體子系統與多種記憶體技術可相容,諸如DDR3(雙倍資料率版本3,原先於2007年6月27日由聯合電子裝置工程委員會(JEDEC)發行,目前為發行版21)、DDR4(DDR版本4,初始規格於2012年9月由JEDEC公告)、LPDDR3(低功率DDR版本3,JESD209-3B,2013年8月由JEDEC公告)、LPDDR4(低功率雙倍資料率(LPDDR)版本4,JESD209-4,原先於2014年8月由JEDEC發行)、WIO2(寬I/O 2(WideIO2),JESD229-2,原先於2014年8月由JEDEC發行)、HBM(高頻寬記憶體DRAM,JESD235,原先於2013年10月由JEDEC發行)、DDR5(DDR版本5,目前正由JEDEC討論中)、LPDDR5(目前正由JEDEC討論中)、HBM2(HBM版本2,目前正由JEDEC討論中)、及/或其它,及基於此等規格衍生或延伸的技術。
此外,或另外,於一個實施例中,依電性記憶體述及記憶體裝置可指稱非依電性記憶體,即便供應裝置的電力中斷其狀態為確定。於一個實施例中,非依電性記憶體為區塊可定址記憶體裝置,諸如NAND或NOR技術。如此,記憶體裝置也可包括未來世代非依電性裝置,諸如三維交叉點記憶體裝置,或其它位元組可定址非依電性記憶體。於一個實施例中,記憶體裝置可以是或包括多臨界值階層NAND快閃記憶體、NOR快閃記憶體、單-或多-階層相變記憶體(PCM)、電阻式記憶體、奈米線記憶體、鐵電電晶體隨機存取記憶體(FeTRAM)、磁阻式隨機存取記憶體(MRAM)結合憶阻器技術的記憶體、或自旋轉移力矩-MRAM、或以上任一者的組合、或其它記憶體。此處述及「DRAM」的描述可適用於允許隨機存取的任何記憶體裝置,無論為依電性或非依電性。記憶體裝置或DRAM可指晶粒本身及/或指封裝記憶體產品。
於一個實施例中,各個記憶體裝置140為分開的記憶體晶粒,其可包括每個晶粒多個(例如,兩個)通道。各個記憶體裝置140包括I/O介面邏輯142,其具有由裝置之實施例決定的頻寬(例如,x16或x8或若干其它介面頻寬)。I/O介面邏輯142使得記憶體裝置能介接記憶體控制器120。I/O介面邏輯142可包括硬體介面,且可根據記憶體控制器的I/O 122,但在記憶體裝置末端。於一個實施例中,多個記憶體裝置140並聯至相同資料匯流排。舉例言之,系統100可以並聯耦接的多個記憶體裝置140組配,各個記憶體裝置回應一個指令,及存取在各自內部的記憶體資源160。用於寫入操作,個別記憶體裝置140可寫入總資料字組的部分;及用於讀取操作,個別記憶體裝置140可擷取總資料字組的部分。
於一個實施例中,記憶體裝置140係直接置放於計算裝置的主機板或主機系統平台上(例如,於其上置放處理器110的印刷電路板(PCB))。於一個實施例中,記憶體裝置140可被組織成記憶體模組130。於一個實施例中,記憶體模組130表示雙列記憶體模組(DIMM)。於一個實施例中,記憶體模組130表示分享存取或控制電路的至少部分的多個記憶體裝置之其它組織結構,其可以是與主機系統平台分開的電路、分開的裝置或分開的板。記憶體模組130可包括多個記憶體裝置140,及記憶體模組可包括對置放其上的涵括記憶體裝置的多個分開通道之撐體。
記憶體裝置140各自包括記憶體資源160。記憶體資源160表示資料的記憶體位置或儲存位置之個別陣列。典型地,記憶體資源160被管理為透過快取線(列)及位元線(一列內部的個別位元)控制而存取的資料列。記憶體資源160可被組織成記憶體的分開通道、階級、及排組。通道為將位置儲存於記憶體裝置140內部的獨立控制路徑。階級係指跨多個記憶體裝置的共通位置(例如,於不同裝置內部的相同列位址)。排組係指在記憶體裝置140內部的記憶體位置之陣列。於一個實施例中,記憶體之排組被劃分成子排組帶有針對該等子排組的分享電路之至少一部分。
於一個實施例中,記憶體裝置140包括一或多個暫存器144。暫存器144表示提出用於記憶體裝置的操作之組態或設定值的儲存裝置或儲存位置。於一個實施例中,暫存器144可給記憶體裝置140提供一儲存位置用以儲存資料,以供由記憶體控制器120存取作為控制或管理操作的部分。於一個實施例中,暫存器144包括模式暫存器。於一個實施例中,暫存器144包括多用途暫存器。暫存器144內部的位置之組態可組配記憶體裝置140而以不同「模式」操作,於該處取決於該模式,指令及/或位址資訊或信號線可於記憶體裝置140內部觸發不同的操作。暫存器144之設定值可指示I/O設定值的組態(例如,時間、終端或晶粒上終端(ODT))、驅動裝置組態、及/或其它I/O設定值。
於一個實施例中,記憶體裝置140包括ODT 146作為與I/O 142相關聯的介面硬體之部件。ODT係指電源供應軌與在接收器端的信號線間之連結阻抗。於一個實施例中,電源供應軌為VDD或高壓電源。於一個實施例中,記憶體裝置可自信號線結束至VSS或接地或低壓電源。於一個實施例中,記憶體裝置可結束信號線至VDD及VSS兩者。
記憶體裝置140包括控制器150,其表示記憶體裝置內部的控制邏輯以控制記憶體裝置內部的操作。舉例言之,控制器150解碼由記憶體控制器120發送的指令,及產生內部操作以執行或滿足該等指令。控制器150可判定基於暫存器144選擇哪個模式,及基於選用的模式而組配用於記憶體資源160的操作之存取及/或執行。控制器150產生控制信號以控制記憶體裝置140內部的位元之路由,以針對所選取的模式提供適當介面及導引一指令至適當記憶體位置或位址。
再度參考記憶體控制器120,記憶體控制器120包括指令(CMD)邏輯124,其表示產生指令以發送至記憶體裝置140的邏輯或電路。典型地,記憶體子系統中之發訊指令內部或伴隨指令的位址資訊,以指示或選擇於該處記憶體裝置須執行該指令的一或多個記憶體位置。於一個實施例中,控制器150包括指令邏輯152用以接收及解碼透過I/O 142接收自記憶體控制器120的指令及位址資訊。基於所接收的指令及位址資訊,控制器150可控制記憶體裝置140內部的邏輯及電路的操作時間以執行指令。依據一個實施例,控制器150負責依從標準或規格。
於一個實施例中,記憶體控制器120包括刷新(REF)邏輯126。刷新邏輯126可使用於記憶體裝置140為依電性,需要刷新以保有確定狀態之處。於一個實施例中,刷新邏輯126指示刷新位置及欲進行的刷新類型。刷新邏輯126可觸發記憶體裝置140內部的自我刷新,及/或藉發送刷新指令而執行外部刷新。來自記憶體控制器的外部刷新可包括全部排組刷新及/或每一排組刷新。全部排組刷新造成全部記憶體裝置140內部並聯耦接的一經選取排組的刷新。每一排組刷新造成一特定記憶體裝置140內部一特定排組的刷新。於一個實施例中,記憶體裝置140內部的控制器150包括刷新邏輯154以在記憶體裝置140內部施加刷新。於一個實施例中,刷新邏輯154產生內部操作用以根據接收自記憶體控制器120的外部刷新進行刷新。刷新邏輯154可判定一刷新是否導向記憶體裝置140,及回應於指令欲刷新哪個記憶體資源160。
依據一個實施例,SOC 101包括一多階層記憶體管理電路103用於在近與遠記憶體間重對映資料。管理多階層記憶體的不同辦法可具有不同效益及缺點。
管理多階層記憶體的一種辦法係使用記憶體分割。於實施記憶體分割之系統的一個實例中,作業系統(OS)分割實體位址空間,及將程式資料對映至適時可用的記憶體區域。於實施記憶體分割之系統中,OS也可當使用樣式改變時適時地重對映熱點頁面自遠記憶體至近記憶體。「重對映」係指對映或重對映,及涉及產生位址間之關係。舉例言之,若一頁面已自遠記憶體對映至近記憶體,則資料已自遠記憶體移動至近記憶體,及對遠記憶體位址的存取可被轉譯或重新導向至近記憶體位址。記憶體分割的效果為藉由仰賴OS,其時常負責記憶體管理,可能利用現有記憶體管理策略的槓桿。然而,記憶體分割的一項缺點為其傾向於對改變位置特性的回應緩慢。舉例言之,當程式存取記憶體中之新頁面時,在移動至一新區域之前,該頁面典型地將密集地被使用。如此,於一個此種辦法中,OS無法足夠快速地回應於新頁面存取以利用近記憶體的性能效益。
管理多階層記憶體的另一方式係使用硬體重對映。於一個此種實例中,硬體負責近與遠記憶體間之資料的重對映而無OS的介入。舉例言之,硬體以類似快取記憶體的方式重對映記憶體之表。當述及遠記憶體中出現新頁面時,硬體能即刻地自遠記憶體複製資料至近記憶體,其使得能擷取大部分供再度使用。硬體重對映的一個缺點為重對映結構的成本可能顯著地高。舉例言之,重對映結構的大小取決於近記憶體的大小,每個頁面一個分錄。於一個實例中,於2 GB的記憶體中,近記憶體組織成4 KB頁面,重對映結構將具有512K分錄。於此實例中,若使用4位元組標籤,則2 MB之儲存裝置將使用於標籤。如此,硬體重對映要求的儲存裝置可能顯著大型。
相反地,於一個實施例中,多階層記憶體管理電路可在近與遠記憶體間重對映位址而不要求顯著大型重對映結構。再度參考圖1,於一個實施例中,多階層記憶體管理電路103耦接處理器110及記憶體控制器120。依據一個實施例,重對映邏輯105檢測針對來自處理器110的資料要求。重對映邏輯105檢測得針對位在遠記憶體中之資料的請求之後,重對映邏輯105藉尋找暫存器陣列107中的遠記憶體位址而檢查瞭解資料是否重對映至近記憶體。暫存器陣列107為「升級暫存器陣列」。於一個實施例中,升級暫存器陣列107包括分錄以指示哪個遠記憶體位址對映至經選取的近記憶體位址子集。若重對映邏輯105判定所請求的資料之遠記憶體位址係在升級暫存器陣列107中,則重對映邏輯105可決定所請求的資料被複製至其中的近記憶體位址。然後,重對映邏輯105可發送請求至記憶體控制器120,請求在資料被複製至其中的近記憶體位址之資料。
於一個實施例中,若重對映邏輯105判定遠記憶體位址係不在升級暫存器陣列107中,及因而不在近記憶體中,則重對映邏輯105將所請求資料移動至近記憶體。舉例言之,重對映邏輯105可從升級暫存器陣列107中選擇可用近記憶體位址,及起始所請求資料寫入至經選取的近記憶體位址。如此,於一個實施例中,重對映邏輯將遠記憶體中之實體位址重對映至近記憶體中之實體位址。
如果所請求資料尚未被複製至近記憶體,則於一個實施例中,重對映邏輯105將該請求前傳至遠記憶體。然後,重對映邏輯105可將該資料自遠記憶體複製至近記憶體,及將該等位址儲存於升級暫存器陣列107中。然後,重對映邏輯105可將對該遠記憶體位址的隨後請求重新導向至資料被複製至其中的近記憶體位址。
容後詳述,若重對映邏輯105判定升級暫存器陣列107中沒有可用的分錄,則重對映邏輯105發送中斷至處理器110。中斷也可稱作陷阱或例外,及乃回應於某個事件由硬體或軟體發送至記憶體要求注意的信號。處理器可藉由擱置其目前活動、儲存其狀態、及執行稱作中斷處理器(又稱中斷服務常式(ISR))的功能來回應於中斷以處理該事件。來自硬體的中斷(稱作為硬體中斷)可使用自硬體發送至處理器的電氣信號實施。硬體中斷典型地為非同步,且可能出現於指令執行的中途。起始硬體中斷的動作可稱作為中斷請求(IRQ)。於有些情況下,中斷可藉指令集的特殊指令觸發,該指令當其被執行時造成中斷(例如,非同步中斷)。
於一個實施例中,中斷造成OS執行中斷處理器代碼,以使用可用近記憶體位址來更新暫存器陣列。為了更新暫存器陣列107,OS可選取可用的不同近記憶體位址,若無近記憶體位址為可用,則OS可選擇「犧牲者」來降級至遠記憶體。「降級」頁面於此處係指自近記憶體複製該頁面至遠記憶體或其它儲存裝置。降級頁面可在近記憶體中騰出新頁面的空間。圖5B及對應描述包括一種更新暫存器陣列之方法的額外細節。於一個實施例中,選取哪個資料欲自近記憶體複製至遠記憶體之後,OS可使得資料被即刻複製,或OS可儲存預期寫入至「降級」暫存器陣列。如此,一個實施例包括降級暫存器陣列109以進行資料自近記憶體複製至遠記憶體。其它實施例不包括降級暫存器陣列109,但取而代之,可在決定降級資料之後,使得資料即刻被複製(或至少沒有實質延遲)。暫存器陣列107及109可使用能夠儲存本文描述的相關資訊之任何硬體結構實施。
於一個實施例中,升級暫存器陣列107的更新委任給OS,使得OS能選擇哪個資料須置於近記憶體及遠記憶體。舉例言之,OS藉由使得某些關鍵性記憶體區域無法為多階層記憶體管理電路103所可用而將該等區域鉗制於近記憶體中。於一個此種實例中,OS保持追蹤被判定為無法利用的區域,且不將該等近記憶體位址寫入至暫存器陣列以供重對映。委任升級暫存器陣列107的更新也可利用高階層應用知識,以當自近記憶體選擇新鮮犧牲者時協助指導置換決策。此外,允許OS對記憶體的對映有某些控制,能免除大型標籤結構的需要。如前述,於一個實施例中,暫存器陣列107儲存資訊指出哪些遠記憶體位址係對映至近記憶體位址之一經選取的子集。於一個此種實施例中,暫存器陣列中之分錄數目可與近記憶體中之頁面數目獨立無關,且少於後者。如此,於一個實施例中,多階層記憶體管理電路可達成硬體重對映相關聯的效能增益,而不要求針對近記憶體中之每個頁面有一個標籤陣列。又復,多階層記憶體管理電路可使得一旦頁面被引用則頁面被重對映,而非等待OS來重對映之。
此外,與每次一頁面被移動時遭致中斷處理相關聯的成本的其它辦法相反地,針對大量頁面該成本才被遭致一次。針對由暫存器陣列107所重對映的許多頁面,中斷處理及頁面表修改相關聯的成本可被遭致一次,如於歷經多個頁面分期攤還成本。因此,實施例可最小化與OS中斷相關聯的固定成本。又復,於一個實施例中,藉由涵括重對映邏輯以即刻使得一頁面移動至近記憶體,多階層記憶體管理電路可利用可能發生在實際工作負荷中的短的叢發脈衝式使用樣式。如此,於一個實施例中,多階層管理電路可允許頁面自遠記憶體至近記憶體大量移轉處在硬體的控制之下,但也允許OS以較粗粒度管理記憶體的對映。
於一個實施例中,SOC 101包括直接記憶體存取(DMA)引擎111以存取記憶體資源160來在近記憶體及遠記憶體間移轉資料。於一個實施例中,DMA引擎111可與處理器110相對獨立地存取記憶體資源160,表示處理器110起始DMA移轉,及然後當DMA引擎111進行移轉時能進行其它操作。於一個實施例中,處理器110基於降級暫存器陣列109之分錄而起始DMA移轉。於一個此種實施例中,DMA引擎111讀取降級暫存器陣列109的分錄,及將頁面自降級暫存器陣列109中指示的近記憶體位址複製至對應遠記憶體位址。如此,於一個實施例中,釋放近記憶體之空間可於背景中由DMA引擎111處理。當DMA移轉完成時,DMA引擎111可發送中斷至處理器110,指示移轉完成。雖然圖1描繪降級暫存器陣列109,但其它實施例可沒有專用降級暫存器陣列來利用DMA移轉,反而取而代之,例如使用通用的DMA暫存器。於其它實施例中,OS及/或重對映邏輯105可使用降級暫存器陣列109來追蹤欲移轉的資料而不需要DMA引擎111。舉例言之,OS可將來自近記憶體的欲降級頁面的位址儲存於降級暫存器陣列109中。然後,OS及/或重對映邏輯105可產生指令來基於降級暫存器109的分錄而移轉資料。
如此,如本文描述的多階層記憶體管理電路可保留由OS管理的辦法之低成本及簡單性,同時擷取硬體辦法的性能效益。
圖2為包括多階層記憶體管理電路的一系統的一實施例之方塊圖。系統200例示計算裝置之記憶體子系統的部分,及提供圖1之系統100實施例的一個實例。主機210表示將管理存取系統記憶體的邏輯。主機210可包括記憶體控制器或在處理器或SOC上的其它電路,或與處理器整合以控制記憶體存取。
記憶體裝置220表示多個裝置,其為主機系統儲存代碼及/或資料以執行操作。記憶體裝置220可被組織成階級240以輔助同時存取較大數目的位元。一階級包括多個並聯的記憶體裝置。於一個實施例中,階級240分享資料針腳、指令/位址(C/A)針腳、及時鐘針腳。各個階級240包括特定一或多個致能信號以在不同階級間選擇。如圖例示,系統200包括N個階級240。信號線的特定群組並非必然藉階級實體分組。於一個實施例中,某些信號線在階級240間重複使用。於一個實施例中,全部記憶體裝置220分享相同系統匯流排230,諸如資料匯流排及指令/位址(C/A)匯流排,及分享時鐘或選通信號(其可包括一或多個信號線)。系統200可使用致能信號,諸如CKE(時鐘致能)及晶片選擇(CS),及/或CS及其它致能信號,以區別一個階級或裝置分組與另一者。如此,屬於相同階級240之部件的記憶體裝置220可共享相同致能/選擇信號。於涉及記憶體子系統以外的某個情況的I/O介面之一實施例中,階級240可表示藉通用匯流排的裝置之若干其它分組。
主機210包括產生指令至記憶體裝置220的指令邏輯212。於若干實施例中,指令邏輯212耦接多階層記憶體管理電路211。依據一個實施例,多階層記憶體管理電路211在近與遠記憶體間重對映資料。如於圖2中描繪,多階層記憶體管理電路211包括重對映邏輯205、升級暫存器陣列207、及降級暫存器陣列209。多階層記憶體管理電路211可與如上於圖1中描述的多階層記憶體管理電路103相同或相似。舉例言之,重對映邏輯205可檢測針對記憶體裝置220中之資料的請求,及若該等請求定址於遠記憶體,則決定該等位址是否於升級暫存器陣列207中。若遠記憶體位址係在升級暫存器陣列207中,則重對映邏輯205可修改請求的位址成為所請求資料欲複製至其中的該對應近記憶體位址。多階層記憶體管理電路211也可包括降級暫存器陣列209,以協助移轉資料至遠記憶體(或其它儲存裝置)以清除近記憶體中的空間。
記憶體裝置220包括解碼器222,其表示欲自主機210接收及解碼指令的邏輯。解碼可判定指令是否施加至記憶體裝置。於一個實施例中,記憶體裝置220包括暫存器224以設定一或多個組態參數。暫存器224之設定值可指示I/O設定值的組態(例如,時間、終端或晶粒上終端(ODT))、驅動裝置組態、及/或其它I/O設定值。
圖3為依據一個實施例用以儲存近記憶體位址之一暫存器陣列的表示型態。圖3之暫存器陣列300為升級暫存器陣列之一實例,諸如如上討論圖1之升級暫存器陣列107。於一個實施例中,升級暫存器陣列300包括資訊以指示遠記憶體310中之哪些位址已經對映至近記憶體308中之位址的一子集。如圖例示,近記憶體308係小於遠記憶體310,但於其它實施例中,近記憶體308的尺寸可大於或等於遠記憶體310。
於一個實施例中,升級暫存器陣列300包括遠記憶體位址欄位302以將一位址儲存於遠記憶體。升級暫存器陣列300也包括近記憶體位址欄位304。近記憶體位址欄位304係用以將一位址儲存於近記憶體。遠記憶體位址欄位302及近記憶體位址欄位304也能被稱作分別地於遠及近記憶體中儲存資料的儲存指標。升級暫存器陣列300包括多個分錄,其儲存遠記憶體位址至一子集之近記憶體位址的對映關係。一子集之近記憶體位址包括少於全部的近記憶體位址,及可於1至近記憶體位址之數目減1之範圍。舉例言之,於一個實施例中,暫存器陣列包括256個分錄,以儲存位址用於近記憶體中之256頁面,其中該近記憶體包括超過256個總頁面。其它實施例可包括512、1024、或其它整數之分錄數目以保有一子集之近記憶體位址。分錄之數目可基於期望效能及/或硬體考量而予選擇。舉例言之,較少數分錄可導致較廉價實施例,但因OS中斷頻次增加故,可能具有減低的效能。於另一實施例中,較大數目的分錄可改良效能,但可能增加成本。於一個實施例中,無論是否採用較大的或較小的數目之分錄,升級暫存器陣列300中之分錄數目係少於近記憶體308中之頁面數目。如此,於一個此種實施例中,升級暫存器陣列300不具有對應308中之每個頁面的一分錄。此種辦法可使得效能提高而不要求駭人的大型標籤結構。
如圖例示,升級暫存器陣列300也包括已占用位元306。「已占用位元」為至少一個位元指示對應近記憶體位址是否可用於重對映。因此,「已占用位元」也可稱作為「可用位元」用以表示相反狀態。雖然使用術語「位元」,但暫存器陣列的各個分錄可具有多於單一位元,來表示一給定近記憶體位址是否為可用及/或傳遞有關該分錄的其它狀態資訊。如上討論,於一個實施例中,重對映邏輯(例如,圖1之重對映邏輯105)係基於已占用位元306之值而選擇可用近記憶體位址。為了例示目的,圖3也包括對應近記憶體位址是否為可用的或已被占用的視覺表示型態307。
於一個實施例中,升級暫存器陣列300之分錄透過實體記憶體位址為可用。因此,於一個實施例中,處理器(例如,圖1之處理器110)可以讀取及寫入指令至實體記憶體位址存取升級暫存器陣列300。透過實體記憶體位址存取升級暫存器陣列300之分錄的能力可使得OS於中斷處理期間讀取及修改升級暫存器陣列300之分錄以更新升級暫存器陣列300。於圖3例示之實例中,升級暫存器陣列300包括於分錄301A-301D中四個近記憶體位址。升級暫存器陣列300係以其中陣列300為部分滿的操作狀態描繪。舉例言之,兩個分錄301A、301B為可用,及兩個分錄301C、301D被占用,如由已占用位元306之值及對應視覺表示型態307指示。於一個實施例中,暫存器陣列300依據圖5A中例示者執行方法之一實施例。
圖4為依據一個實施例,用於將資料寫入自近記憶體至遠記憶體分級的暫存器陣列之表示型態。如上討論,於一個實施例中,當升級暫存器陣列為滿時,重對映邏輯觸發中斷。回應之,OS欲以新的可用近記憶體位址更新升級暫存器陣列。如果沒有可用近記憶體位址,則OS可選擇於近記憶體中之頁面以移動至遠記憶體,及據此釋放近記憶體位址用於升級暫存器陣列。於一個實施例中,系統可採用降級暫存器陣列以協助資料自近記憶體移轉至遠記憶體。
圖4之暫存器陣列400為降級暫存器陣列實例。降級暫存器陣列400為圖1中所討論的降級暫存器陣列109之一實施例的實例。於一個實施例中,降級暫存器陣列400包括近記憶體位址欄位402及遠記憶體位址欄位404。於一個實施例中,近記憶體位址欄位402係將一位址保有於欲自其中複製資料的近記憶體308內。遠記憶體位址欄位404係將一位址保有於欲複製資料至其中的的遠記憶體310內。如此,於一個實施例中,降級暫存器陣列400之分錄401A-401D指示哪些頁面欲自近記憶體複製,及頁面欲複製至其中的遠記憶體中之位置。
於一個實施例中,回應於中斷請求,DMA引擎諸如圖1之DMA引擎111係將近記憶體位址欄位402指示的資料寫入至儲存於遠記憶體位址欄位404中之遠記憶體位址。於其它實施例中,OS及/或重對映邏輯藉由使用常規讀取及寫入指令至記憶體,替代採用DMA引擎,可移轉資料。於一個實施例中,降級暫存器陣列400包括一完成位元406。「完成位元」乃至少一個位元用以指示由對應近記憶體位址所指標的資料是否已被複製。如此,「完成位元」也可指稱「未完成位元」來表示相反狀態。雖然使用術語「位元」,降級暫存器陣列400的各個分錄可具有多於單一位元來表示對應記憶體移轉是否已經完成及/或傳遞有關分錄的其它狀態資訊。類似圖3,於一個實施例中,降級暫存器陣列400的分錄可透過實體記憶體位址而變成可存取。舉例言之,降級暫存器陣列400可被指定實體記憶體位址,及因此透過記憶體讀取及寫入指令而可存取。圖4將鑑於圖5A中例示之方法容後詳述。
圖5A為管理多階層記憶體的方法之一實施例的流程圖,包括在近及遠記憶體間重對映資料。如前述,多階層記憶體管理電路可包括暫存器陣列以儲存近記憶體位址及對映至近記憶體位址的遠記憶體位址。多階層記憶體管理電路也可包括重對映邏輯,以回應於針對遠記憶體中之資料的請求而重對映位址。一旦其檢測得對遠記憶體的請求,重對映邏輯可進行重對映,因此利用叢發脈衝使用樣式來改良系統效能而不要求駭人的大型標籤陣列。多階層記憶體管理電路之實例係涵括於圖1(多階層記憶體管理電路103)及圖2(多階層記憶體管理電路211)。暫存器陣列之一實例係涵括於圖3(升級暫存器陣列300)。
方法550之操作可藉多階層記憶體管理電路進行。於一個實施例中,重對映邏輯檢測針對遠記憶體中之資料的請求,551。舉例言之,處理器(例如,圖1之處理器110)可請求位在遠記憶體中之頁面,及重對映邏輯可檢測或接收該請求。回應於該請求,重對映邏輯可判定所請求資料的遠記憶體位址是否在一暫存器陣列中,552。舉例言之,參考圖3,重對映邏輯可檢查分錄301A-301D中之各者的遠記憶體位址欄位302,以瞭解分錄301A-301D是否包括所請求資料的遠記憶體位址。若遠記憶體位址係在暫存器陣列中,554 YES分支,則重對映邏輯自近記憶體位址請求對應暫存器陣列中之遠記憶體位址的資料,556。舉例言之,再度參考圖3,若分錄301C中之遠記憶體位址匹配所請求資料的遠記憶體位址(亦即,若為「命中」),則重對映邏輯可路徑重安排該請求至儲存於分錄301C的近記憶體位址欄位304中之對應近記憶體位址。
若遠記憶體位址係不在暫存器陣列中,554 NO分支,則重對映邏輯判定於該陣列中是否有可用近記憶體位址,555。舉例言之,參考圖3,若重對映邏輯檢查暫存器陣列300的已占用分錄301C、301D,且判定儲存於分錄301C、301D的遠記憶體位址欄位302中之遠記憶體位址不匹配所請求資料的遠記憶體位址(亦即,若非為「命中」),則重對映邏輯可前進尋找可用近記憶體位址。於一個實施例中,判定是否有可用近記憶體位址,涉及判定是否有分錄具有已被清除的已占用位元。於圖3例示的實例中,依據一實施例,藉由讀取分錄301A、301B之已占用位元306,重對映邏輯將決定是否有可用近記憶體位址。然而,若暫存器陣列中沒有可用近記憶體位址,557 NO分支,則重對映邏輯發送一中斷請求以使得OS(或其它邏輯或處理器執行的指令)以可用分錄更新暫存器陣列,566。
再度回到下述情境,於該處於陣列中有可用近記憶體位址,557 YES分支,則重對映邏輯自暫存器陣列選擇可用近記憶體位址,558。於一個實施例中,其中暫存器陣列之分錄包括一已占用位元,選擇可用近記憶體位址係基於對應已占用位元之值。舉例言之,重對映邏輯選擇一分錄具有已占用位元等於「0」指示該分錄為可用。於圖3例示的實例中,重對映邏輯可選擇分錄301A或分錄301B。
於一個實施例中,在選取近記憶體位址之後,重對映邏輯起始資料自遠記憶體位址寫入至經選取的近記憶體位址,562。起始資料自遠記憶體位址之寫入可包括產生一讀取指令至遠記憶體位址以讀取資料,及產生一寫入指令至近記憶體位址以寫入資料。於另一實施例中,重對映邏輯觸發資料透過DMA引擎而寫入。
於一個實施例中,重對映邏輯將遠記憶體位址寫入於對應經選取的近記憶體位址之該暫存器陣列中之該分錄,564。舉例言之,述及圖3,若分錄301A經選取,則重對映邏輯可將遠記憶體位址儲存於分錄301A之遠記憶體位址欄位302中。
於一個實施例中,重對映邏輯修改對應已占用位元以指示經選取的近記憶體位址為無法利用,567。於一實施例中,於該處已占用位元指示無法利用,例如,位元可被設定為「1」,以指示近記憶體位址為無法利用。然而,於另一實施例中,其中暫存器陣列包括一「可用位元」而非一「已占用位元」,重對映邏輯可清除可用位元至「0」以指示可利用性。如前述,其它實施例可採用具有多於一個位元以指示狀態的一欄位。如此,重對映邏輯可回應於檢測得存取遠記憶體,將資料自遠記憶體複製至近記憶體,及更新暫存器陣列以追蹤重對映直到OS可更新頁面表為止。
如前述,依據實施例,當來自遠記憶體的資料被複製至近記憶體時,暫存器陣列中之全部近記憶體位址將皆被耗用。然後,OS可以可用近記憶體位址更新暫存器陣列。圖5B為使用可用近記憶體位址更新暫存器陣列之一方法之一實施例的流程圖。於一個實施例中,方法570之操作由OS(例如,透過中斷處理器)、韌體、驅動裝置、或其它系統軟體進行。雖然後文詳細說明偶爾特別指稱OS,但其它實施例可採用其它系統軟體以進行所描述的操作。於一個此種實施例中,方法570始於當重對映邏輯回應於判定暫存器陣列已滿而發送一中斷請求。舉例言之,參考圖5A,重對映邏輯發送中斷請求給處理器以觸發OS來使用可用分錄更新暫存器陣列,566。再度參考圖5B,OS檢測中斷請求,指示於暫存器陣列中沒有可用分錄,572。於一個實施例中,回應於中斷請求,OS基於暫存器陣列之已被占用分錄而更新頁面表,574。
一頁面表為使用來將頁面之實體位址對映至虛擬位址的資料結構。記憶體可被組織成頁面,其為由一頁面表中之一分錄所述及的記憶體區塊。於一個此種實施例中,OS藉管理頁面表而負責定義對映關係。若干實施例也包括轉譯旁視緩衝器(TLB)以將虛擬頁面位址轉譯成實體頁面位址。TLB為用於虛擬位址轉譯的特化快取記憶體。當接收到對虛擬位址的一請求時,硬體可首先嘗試使用TLB轉譯位址成實體位址。若虛擬位址係不在TLB中,則頁面表可被使用來轉譯位址。如此,於一個實施例中,當重對映邏輯(諸如圖1之重對映邏輯105)使得一頁面自一個實體位址移動至另一個實體位址時,系統更新TLB及頁面表以將一給定虛擬位址對映至新實體位址。於一個此種實施例中,OS負責更新頁面表。當系統更新及遭遇TLB失誤時,硬體機構(例如,記憶體控制器或其它記憶體管理硬體)可更新TLB。據此,於一個此種實施例中,重對映邏輯提供額外對映層,其與虛擬位址至實體位址對映分開。當重對映邏輯判定升級暫存器陣列為已滿時,重對映邏輯可觸發中斷以使得OS更新頁面表。
於一個實施例中,藉由使用基於暫存器陣列中之資訊遠記憶體位址對映至該位址的近記憶體位址來置換頁面表中之遠記憶體位址,OS更新頁面表。同理,若多階層管理電路或OS使得頁面自近記憶體移動至遠記憶體,則OS可以遠記憶體位址置換頁面表中之近記憶體位址。
一旦OS更新頁面表,OS可以新的未經分配頁面的位址填入暫存器陣列。為了填入暫存器陣列,OS識別近記憶體中之可用頁面,576。識別可用頁面可涉及識別未經分配頁面或以其它方式可用的頁面。於一個實施例中,OS維持「重對映區域」之一紀錄,其為近記憶體中未經分配頁面之一列表。於一個此種實施例中,選擇於近記憶體中之可用頁面涉及從由OS維持的列表中選擇頁面。識別可用頁面也可(或另可)涉及讓頁面變成可用。舉例言之,若沒有剩餘未經分配頁面,則OS可藉將頁面移出近記憶體(例如,至遠記憶體或其它儲存裝置)可使得頁面變成可用。於一個此種實施例中,OS可選擇頁面用於降級至遠記憶體而使得頁面變成可用。
於一個實施例中,於該處OS自近記憶體中選擇頁面用於降級,OS複製位在近記憶體位址的資料至遠記憶體。於一個實施例中,OS或硬體(例如,重對映邏輯)起始位在經選取的近記憶體頁面之位址的資料複製至遠記憶體中之位址。複製資料可藉軟體或硬體進行,且可於選擇近記憶體中之頁面時即刻進行,或可佇列等候稍後進行。舉例言之,於一個實施例中,OS可保持紀錄哪些頁面欲自近記憶體移轉至遠記憶體。此等紀錄可維持於暫存器陣列中,諸如圖4之降級暫存器陣列400。舉例言之,參考圖4,OS可將於近記憶體中一頁面之位址,其已被選取用於降級至遠記憶體,寫入至一給定分錄的近記憶體位址欄位402。OS可進一步將可用遠記憶體位址之位址寫至對應近記憶體中欲被降級的頁面之遠記憶體位址欄位404。然後,OS或重對映邏輯可觸發DMA引擎將資料自降級暫存器陣列中指示的近記憶體位址複製至對應遠記憶體位址。
於一個實施例中,OS將近記憶體中之可用頁面的位址寫入至暫存器陣列,578。新選取的可用頁面可具有與暫存器陣列中近記憶體位址之先前子集不同的位址。如此,於一個此種實施例中,OS可據稱以不同的或新的可用近記憶體位址之子集更新暫存器陣列。於一個實施例中,OS修改對應於可用近記憶體位址的已占用位元以指示可利用性,580。
因此,於一個實施例中,當檢測得一中斷請求時,OS可以可用近記憶體位址更新暫存器陣列,其可使得重對映邏輯繼續在近及遠記憶體間重對映資料。
圖6為其中可實施多階層記憶體管理的計算系統之一實施例的方塊圖。系統600表示依據本文描述的一實施例之一計算裝置,且可以是膝上型電腦、桌上型電腦、伺服器、遊戲或娛樂控制系統、掃描器、影印機、列印器、路由或交換裝置、或其它電子裝置。系統600包括處理器620,其對系統600提供指令之處理、操作管理、及執行。處理器620可包括任一型微處理器、中央處理單元(CPU)、處理核心、或其它處理硬體以給系統600提供處理。處理器620控制系統600之總體操作,且可以是或包括一或多個可規劃通用或特用微處理器、數位信號處理器(DSP)、可規劃控制器、特定應用積體電路(ASIC)、可程式化邏輯裝置(PLD)等,或此等裝置的組合。
記憶體子系統630表示系統600之主記憶體,及提供欲由處理器620執行的代碼之暫時儲存,或欲用於執行常式的資料值。記憶體子系統630可包括一或多個記憶體裝置,諸如唯讀記憶體(ROM)、快閃記憶體、一或多種變化的隨機存取記憶體(RAM)、或其它記憶體裝置,或此等裝置的組合。記憶體子系統630儲存及主持作業系統(OS)636等以提供用於系統600中之指令的執行的一軟體平台。此外,其它指令638自記憶體子系統630儲存及執行以提供系統600之邏輯及處理。OS 636及指令638係藉處理器620執行。記憶體子系統630包括記憶體裝置632,於該處其儲存資料、指令、程式、或其它項目。於一個實施例中,記憶體子系統包括記憶體控制器634,其為產生及簽發指令至記憶體裝置632的記憶體控制器。須瞭解記憶體控制器634可以是處理器620的實體部件。
於一個實施例中,系統600進一步包括耦接處理器620及記憶體子系統630的多階層記憶體管理電路621。多階層記憶體管理電路621可根據本文描述的實施例中之任一者進行近及遠記憶體間之重對映。舉例言之,多階層記憶體管理電路621可以與圖1之多階層記憶體管理電路103相同或相似。
處理器620及記憶體子系統630耦接至匯流排/匯流排系統610。匯流排610是個抽象概念,其表示藉適當橋接器、配接器、及/或控制器連接之分開的實體匯流排、通訊線路/介面、及/或點對點連結中之任一者或任多者。因此,匯流排610可包括例如,系統匯流排、周邊組件互連(PCI)匯流排、超傳輸或工業標準架構(ISA)匯流排、小型電腦系統介面(SCSI)匯流排、通用串列匯流排(USB)、或美國電機及電子工程師學會(IEEE)標準1394匯流排(俗稱「火線」)中之一或多者。匯流排610之匯流排也可對應網路介面650中之介面。
系統600也包括一或多個輸入/輸出(I/O)介面640、網路介面650、一或多個內部大容量儲存裝置660、及耦接至匯流排610的周邊介面670。I/O介面640可包括一或多個介面組件,透過該組件一用戶介接系統600(例如,視訊、音訊、及/或文數介接)。網路介面650給系統600提供透過一或多個網路與遠端裝置(例如,伺服器、其它計算裝置)通訊的能力。網路介面650可包括乙太網路配接器、無線互連組件、通用串列匯流排(USB)、或其它基於有線或無線標準的或專有介面。
直接記憶體存取(DMA)引擎623包括用於在記憶體632中之不同位置間及/或在記憶體632與儲存裝置660間進行資料之移轉的邏輯及/或暫存器。依據一個實施例,處理器620起始DMA移轉,及然後於DMA引擎623進行移轉時能夠進行其它操作。
儲存裝置660可以是或可包括以非依電性方式儲存大量資料的任何習知媒體,諸如一或多個以磁性、固態、或光學為基礎之碟片、或其組合。儲存裝置660以持久方式(亦即,儘管系統600的電力中斷,數值仍被持有)保有代碼或指令及資料662。儲存裝置660可通例地視為「記憶體」,但記憶體630為提供指令給處理器620的執行或操作記憶體。雖然儲存裝置660為非依電性,但記憶體630可包括依電性記憶體(亦即,若系統600的電力中斷,則資料之值或狀態為不確定)。
周邊介面670可包括前文未特別提及的任何硬體介面。周邊裝置通常係指相依性連結至系統600的裝置。相依性連結為於其上執行操作且用戶與其介接的系統600提供軟體及/或硬體平台者。
圖7為於其中可實施多階層記憶體管理電路之一行動裝置的一實施例之方塊圖。裝置700表示行動計算裝置,諸如計算平板、行動電話或智慧型電話、無線啟用的電子讀取器、穿戴式計算裝置、或其它行動裝置。須瞭解某些組件係概略顯示,並非此種裝置的全部組件皆顯示於裝置700中。
裝置700包括處理器710,其進行裝置700的主要處理操作。處理器710可包括一或多個實體裝置,諸如微處理器、應用處理器、微控制器、可程式化邏輯裝置、或其它處理構件。由處理器710進行的處理操作包括於其上執行應用程式及/或裝置功能的操作平台或作業系統的執行。處理操作包括與人類使用或與其它裝置輸入/輸出(I/O)相關之操作、電源管理相關之操作、及/或裝置700連結至另一裝置相關之操作。處理操作也可包括音訊I/O及/或顯示器I/O相關之操作。
於一個實施例中,裝置700包括音訊子系統720,其表示與提供音訊功能給計算裝置相關聯的硬體(例如,音訊硬體及音訊電路)及軟體(例如,驅動裝置、編解碼器)組件。音訊功能可包括揚聲器及/或耳機輸出,以及麥克風輸入。用於此等功能的裝置可整合入裝置700內,或連結至裝置700。於一個實施例中,藉提供由處理器710接收及處理的音訊指令,用戶與裝置700互動。
顯示器子系統730表示對用戶提供視覺及/或觸覺顯示以與計算裝置介接的硬體(例如,顯示裝置)及軟體(例如,驅動裝置)組件。顯示器子系統730包括顯示介面732,其包括用來提供顯示給用戶的特殊螢幕或硬體裝置。於一個實施例中,顯示介面732包括與處理器710分開的邏輯以進行與顯示相關的至少若干處理。於一個實施例中,顯示器子系統730包括提供輸出及輸入兩者給用戶的觸控螢幕裝置。於一個實施例中,顯示器子系統730包括提供輸出至用戶的高畫質(HD)顯示器。高畫質可指具有約100每吋像素(PPI)或以上的像素密度之一顯示器,且可包括下列格式諸如全HD(例如,1080P)、視網膜顯示器、4K(超高畫質或UHD)、或其它。
I/O控制器740表示與用戶互動有關的硬體裝置及軟體組件。I/O控制器740可操作以管理屬於音訊子系統720及/或顯示器子系統730之部件的硬體。此外,I/O控制器740例示連結至裝置700透過此處用戶可與系統互動的用於額外裝置之連結點。舉例言之,能附接至裝置700的裝置可包括麥克風裝置、揚聲器或立體聲系統、視訊系統或其它顯示裝置、鍵盤或數字小鍵盤裝置、或用於特定應用的其它I/O裝置,諸如讀卡機或其它裝置。
如前述,I/O控制器740可與音訊子系統720及/或顯示器子系統730互動。舉例言之,透過麥克風或其它音訊裝置的輸入可提供輸入或指令用於裝置700的一或多個應用或功能。此外,替代或除外顯示器輸出,可提供音訊輸出。於另一實例中,若顯示器子系統包括一觸控螢幕,則顯示裝置也可用作為輸入裝置,其可以至少部分地由I/O控制器740管理。在裝置700上也有額外按鈕或開關以提供由I/O控制器740管理的I/O功能。
於一個實施例中,I/O控制器740管理裝置,諸如加速度計、相機、光感測器或其它環境感測器、迴轉儀、全球定位系統(GPS)、或能涵括於裝置700內的其它硬體。輸入可以是直接用戶互動部分,以及提供環境輸入至系統以影響其操作(諸如,過濾雜訊,調整顯示器用於亮度檢測,對相機施以閃光燈,或其它特徵)。於一個實施例中,裝置700包括電源管理750,其管理電池電力的使用、電池的充電、及節電操作的相關特徵。
記憶體子系統760包括用於儲存裝置700中之資訊的記憶體裝置762。記憶體子系統760可包括非依電性(記憶體裝置的電力中斷時狀態不改變)及/或依電性(記憶體裝置的電力中斷時狀態不確定)記憶體裝置。記憶體裝置762可儲存裝置700之應用及功能的執行相關的應用程式資料、用戶資料、音樂、照片、文件、或其它資料、以及系統資料(無論長期或短期)。記憶體子系統760包括記憶體控制器764(其也可被視為裝置700的控制部件,及潛在地被視為處理器710之部件)。記憶體控制器764包括一排程器以產生及簽發指令給記憶體裝置762。於一個實施例中,裝置700進一步包括耦接處理器710及記憶體子系統760的多階層記憶體管理電路763。多階層記憶體管理電路763可根據本文描述的實施例中之任一者進行近及遠記憶體間之重對映。舉例言之,多階層記憶體管理電路763可與圖1之多階層記憶體管理電路103相同或相似。
連接性770包括硬體裝置(例如,無線及/或有線連接器及通訊硬體)及軟體組件(例如,驅動裝置、協定堆疊)以使得裝置700能與外部裝置通訊。外部裝置可以是分開裝置,諸如,其它計算裝置、無線接取點或其地台、以及周邊裝置諸如頭戴式耳機、列印器、或其它裝置。
連接性770可包括多種不同類型的連接性。概略言之,裝置700係以細胞式連接性772及無線連接性774例示。細胞式連接性772大致係指由無線載波提供的細胞式網路連接性,諸如,透過全球行動通訊系統(GSM)或其變化或其衍生、劃碼多向接取(CDMA)或其變化或其衍生、分時多工(TDM)或其變化或其衍生、長期演進(LTE-又稱「4G」)、或其它細胞式服務標準提供者。無線連接性774係指非為細胞式的無線連接性,及可包括個人區域網路(諸如藍牙)、區域網路(諸如WiFi)、及/或廣域網路(諸如WiMax)、或其它無線通訊。無線通訊係指透過經由非固體媒體之經調變的電磁輻射之使用而移轉資料。有線通訊經由固體通訊媒體發生。
周邊連結780包括硬體介面及連接器,以及軟體組件(例如,驅動裝置、協定堆疊)以完成周邊連結。須瞭解裝置700可以是至其它計算裝置的周邊裝置(「至」782),以及具有周邊裝置連結其上者(「自」784)。裝置700常見具有「對接」連接器以連結至其它計算裝置用於諸如管理(例如,下載及/或上傳、改變、同步化)裝置700上的內容之目的。此外,對接連接器可允許裝置700連結至某些周邊裝置,其允許裝置700控制例如內容輸出至影音或其它系統。
除了專有對接連接器或其它專有連接硬體之外,裝置700可透過以通用或標準為基礎的連接器進行周邊連結780。常見類型可包括通用串列匯流排(USB)連接器(其可包括多種不同硬體介面中之任一者)、顯示埠包括迷你顯示埠(MDP)、高畫質多媒體介面(HDMI)、火線、或其它類型。
裝置700可由電池供電、無線充電、再能能源(例如,太陽能電池)供電,或連結至壁面插座。
於一個實施例中,一多階層記憶體管理電路包括一暫存器陣列用以儲存一近記憶體的近記憶體位址及對映至該等近記憶體位址的遠記憶體位址。該暫存器陣列中之分錄的該數目係少於該近記憶體中之頁面的該數目。該多階層記憶體管理電路包括重對映邏輯用以檢測針對位在遠記憶體中之資料的一請求。該重對映邏輯係用以進一步判定該所請求資料的一遠記憶體位址係不存在於該暫存器陣列中及自該暫存器陣列選擇一可用近記憶體位址。該重對映邏輯係用以進一步起始將該資料自該近記憶體位址寫入至該經選取的近記憶體位址。該重對映邏輯係用以進一步將該遠記憶體位址寫入至該暫存器陣列對應該經選取的近記憶體位址之一分錄。
於一個實施例中,該暫存器陣列之一給定分錄包括一占用位元;及該重對映邏輯係用以基於一對應占用位元的一值以選擇該可用近記憶體位址。
於一個實施例中,回應於該可用近記憶體位址之選擇,該重對映邏輯係用以進一步修改該對應占用位元以指示該經選取的近記憶體位址為不可用。
於一個實施例中,回應於一判定於該暫存器陣列中無近記憶體位址為可用,觸發一中斷請求以使用可用近記憶體位址更新該暫存器陣列。
於一個實施例中,該經更新之暫存器陣列係用以包括可用近記憶體位址的一不同子集。
於一個實施例中,該多階層記憶體管理電路進一步包括一第二暫存器陣列用以儲存經選擇用於降級至可用遠記憶體位址的近記憶體位址。回應於該中斷請求,一直接記憶體存取(DMA)引擎係用以寫入由儲存於該第二暫存器陣列中之經選擇用於降級至該等可用遠記憶體位址的該等近記憶體位址所指向的頁面。
於一個實施例中,該暫存器陣列之分錄透過實體記憶體位址為可存取。
於一個實施例中,回應於一判定該請求之該遠記憶體位址係於該暫存器陣列中,該重對映邏輯係用以請求位在一對應近記憶體位址的該資料。
於一個實施例中,用以與記憶體裝置耦接之一系統包括一處理器用以請求位在遠記憶體中之資料及一暫存器陣列用以儲存一近記憶體的近記憶體位址及對映至該等近記憶體位址的遠記憶體位址。於該暫存器陣列中之分錄的一數目係少於該近記憶體中之頁面的一數目。該系統也包括耦接該處理器的重對映邏輯。該重對映邏輯係用以判定該所請求資料的一遠記憶體位址係不存在於該暫存器陣列中及自該暫存器陣列選擇一可用近記憶體位址。該重對映邏輯係用以起始將該資料自該近記憶體位址寫入至該經選取的近記憶體位址;及將該遠記憶體位址寫入至該暫存器陣列對應該經選取的近記憶體位址之一分錄。
於一個實施例中,該暫存器陣列之一給定分錄包括一占用位元;及該重對映邏輯係用以基於一對應占用位元的一值以選擇該可用近記憶體位址。
於一個實施例中,回應於該可用近記憶體位址之選擇,該重對映邏輯係用以進一步修改該對應占用位元以指示該經選取的近記憶體位址為不可用。
於一個實施例中,回應於一判定於該暫存器陣列中無近記憶體位址為可用,該重對映邏輯係用以進一步發送一中斷請求至該處理器以使用可用近記憶體位址更新該暫存器陣列。於一個實施例中,該經更新之暫存器陣列係用以包括可用近記憶體位址的一不同子集。
於一個實施例中,該系統進一步包括一第二暫存器陣列用以儲存經選擇用於降級至可用遠記憶體位址的近記憶體位址。回應於該中斷請求,一直接記憶體存取(DMA)引擎係用以寫入由儲存於該第二暫存器陣列中之經選擇用於降級至該等可用遠記憶體位址的該等近記憶體位址所指向的頁面。
於一個實施例中,該暫存器陣列之分錄透過實體記憶體位址為可存取。
於一個實施例中,回應於一判定該請求之該遠記憶體位址係於該暫存器陣列中,該重對映邏輯係用以請求位在一對應近記憶體位址的該資料。
於一個實施例中,該系統進一步包括下列中之任一者:通訊式耦接至該處理器的一顯示器;通訊式耦接至該處理器的一網路介面;或耦接以提供電力至該系統的一電池。
於一個實施例中,使用多階層記憶體管理一系統之一方法涉及檢測針對一遠記憶體中之資料的一請求。該方法進一步涉及判定該所請求資料之一遠記憶體位址是否係於一暫存器陣列中。該暫存器陣列係用以儲存一近記憶體的近記憶體位址及對映至該等近記憶體位址的遠記憶體位址。於該暫存器陣列中之分錄的一數目係少於該近記憶體中之頁面的一數目。該方法進一步涉及自該暫存器陣列選擇一可用近記憶體位址;及起始將該資料自該近記憶體位址寫入至該經選取的近記憶體位址。該方法也涉及將該遠記憶體位址寫入至該暫存器陣列對應該經選取的近記憶體位址之一分錄。
於一個實施例中,該暫存器陣列之一給定分錄包括一占用位元;及選擇該可用近記憶體位址係基於一對應占用位元之一值。
於一個實施例中,該方法進一步涉及,回應於該可用近記憶體位址之選擇,修改該對應占用位元以指示該經選取的近記憶體位址為不可用。
於一個實施例中,該方法進一步涉及,回應於一判定於該暫存器陣列中無近記憶體位址為可用,觸發一中斷請求以使用可用近記憶體位址更新該暫存器陣列。
如本文中例示的流程圖提供各種方法動作之序列的實例。流程圖可指示欲由軟體或韌體常式執行的操作,以及實體操作。於一個實施例中,流程圖可例示有限狀態機(FSM)的狀態,其可於硬體及/或軟體中實施。雖然以特定順序或排序顯示,但除非另行載明,否則動作的排序可經修改。如此,須瞭解例示實施例僅作為實例,及該方法可以不同順序進行,及有些動作可並列進行。此外,於各種實施例中,一或多個動作可經刪除;因此,並非全部動作皆為每個實施例中所需。其它處理流程亦屬可能。
至本文描述的各種操作或功能的程度,其可被描述或界定為軟體代碼、指令、組態、及/或資料。內容可直接執行(「目標」或「可執行」形式)、來源代碼、或差分代碼(「Δ」或「補塊」代碼)。本文描述的實施例之軟體內容可透過有內容儲存其上的製造物件提供,或透過操作通訊介面以透過通訊介面發送資料的方法提供。機器可讀取儲存媒體可使得機器進行所描述之功能或操作,及包括以由機器(例如,計算裝置、電子系統等)可存取之形式儲存資訊,諸如可錄式/非可錄式媒體(例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置等)。通訊介面包括介接有線、無線、光學等媒體以通訊至另一裝置中之任一者的任何機構,諸如記憶體匯流排介面、處理器匯流排介面、網際網路連結、碟片控制器等。通訊介面可經組配以藉由提供組態參數及/或發送信號以準備通訊介面而提供描述該軟體內容的資料信號。通訊介面可透過發送給通訊介面的一或多個指令或信號存取。
本文描述的各種組件可以是進行所描述之操作或功能的構件。本文描述的各個組件包括軟體、硬體、或此等之組合。該等組件可以軟體模組、硬體模組、特用硬體(例如,特定應用硬體、特定應用積體電路(ASIC)、數位信號處理器(DSP)等)、嵌入式控制器、有線電路等實施。
除了本文描述者之外,不背離其範圍,可對所揭示之本發明之實施例及實作進行各種修改。因此,本文中之例示及實例須以例示性解譯而非限制性。本發明之範圍須僅參照如下申請專利範圍度量。
100、200、600‧‧‧系統101‧‧‧單晶片系統(SOC)103、211、621、763‧‧‧多階層記憶體管理電路105、205‧‧‧重對映邏輯107‧‧‧暫存器陣列109、209、400‧‧‧降級暫存器陣列110、620、710‧‧‧處理器111、623‧‧‧直接記憶體存取(DMA)引擎120、634、764‧‧‧記憶體控制器122、142‧‧‧I/O介面邏輯126、154‧‧‧刷新(REF)邏輯130‧‧‧記憶體模組132‧‧‧時鐘(CLK)134‧‧‧指令/位址(CMD)及寫入資料(DQ)136‧‧‧讀取DQ138‧‧‧信號線140、220、632、762‧‧‧記憶體裝置144‧‧‧暫存器146‧‧‧晶粒上終端(ODT)150‧‧‧控制器152、212‧‧‧指令邏輯160‧‧‧記憶體資源207、300‧‧‧升級暫存器陣列210‧‧‧主機222‧‧‧解碼器224‧‧‧暫存器240‧‧‧階級301A-D、401A-D‧‧‧分錄302、404‧‧‧遠記憶體位址欄位304、402‧‧‧近記憶體位址欄位306‧‧‧已占用位元307‧‧‧視覺表示型態308‧‧‧近記憶體310‧‧‧遠記憶體406‧‧‧完成位元550、570‧‧‧方法551-567、572-580‧‧‧方塊610‧‧‧匯流排630、760‧‧‧記憶體子系統632‧‧‧記憶體636‧‧‧作業系統(OS)638‧‧‧指令640‧‧‧I/O介面650‧‧‧網路介面660‧‧‧儲存裝置662‧‧‧代碼或指令及資料670‧‧‧周邊介面700‧‧‧裝置720‧‧‧音訊子系統730‧‧‧顯示器子系統732‧‧‧顯示介面740‧‧‧I/O控制器750‧‧‧電源管理770‧‧‧連接性772‧‧‧細胞式連接性774‧‧‧無線連接性780‧‧‧周邊連結782‧‧‧至784‧‧‧自
後文詳細說明包括具有藉由本發明之實施例的實例例示之圖式的討論。須瞭解附圖係用於舉例說明而非限制性。如於本文中使用,述及一或多個「實施例」須瞭解為描述涵括於至少一個本發明之實施例中的特定特徵、結構、及/或特性。如此,出現於此處的片語諸如「於一個實施例中」或「於一替代實施例中」描述本發明之各種實施例及實作,而非必然全部皆係指相同實施例。然而,絕非必然彼此互斥。
圖1為包括多階層記憶體管理電路之一系統之一實施例的方塊圖。
圖2為包括多階層記憶體管理電路之一系統之一實施例的方塊圖。
圖3為依據一實施例,用以儲存近記憶體位址及對映該等近記憶體位址的遠記憶體位址之一暫存器陣列的表示型態。
圖4為依據一個實施例,用於將資料寫入自近記憶體至遠記憶體分級的一暫存器陣列之表示型態。
圖5A為管理多階層記憶體的方法之一實施例的流程圖,包括在近及遠記憶體間重對映資料。
圖5B為管理多階層記憶體的方法之一實施例的流程圖,包括以可用近記憶體位址更新暫存器陣列。
圖6為其中可實施一多階層記憶體管理電路的一計算系統之一實施例的方塊圖。
圖7為其中可實施一多階層記憶體管理電路的一行動裝置之一實施例的方塊圖。
如下某些細節及實施例之描述,包括圖式之描述,可描繪如下描述之部分或全部實施例,以及討論本文中呈現的本發明之構想的其它潛在實施例或實作。
100‧‧‧系統
101‧‧‧單晶片系統(SOC)
103‧‧‧多階層記憶體管理電路
105‧‧‧重對映邏輯
107‧‧‧暫存器陣列
109‧‧‧降級暫存器陣列
110‧‧‧處理器
111‧‧‧直接記憶體存取(DMA)引擎
120‧‧‧記憶體控制器
122、142‧‧‧輸入/輸出(I/O)介面邏輯
124、152‧‧‧指令邏輯
126、154‧‧‧刷新邏輯
130‧‧‧記憶體模組
132‧‧‧時鐘(CLK)
134‧‧‧指令/位址(CMD)
136‧‧‧讀取DQ
138‧‧‧信號線
140‧‧‧記憶體裝置
144‧‧‧暫存器
146‧‧‧晶粒上終端(ODT)
150‧‧‧控制器
160‧‧‧記憶體資源
Claims (21)
- 一種多階層記憶體管理電路,其包含:一暫存器陣列,其係用於儲存一近記憶體的多個近記憶體位址及對映至該等近記憶體位址的多個遠記憶體位址,其中,於該暫存器陣列中之分錄的數目係小於該近記憶體中之頁面的數目;及重對映邏輯用以:檢測針對位在遠記憶體中之資料的一請求;判定所請求該資料的一遠記憶體位址係不存在於該暫存器陣列中;從該暫存器陣列中選擇一可用的近記憶體位址;起始將來自該遠記憶體位址的所請求之該資料寫至經選擇的該近記憶體位址;及將該遠記憶體位址寫至與經選擇的該近記憶體位址對應的該暫存器陣列之一分錄。
- 如請求項1的多階層記憶體管理電路,其中:該暫存器陣列之一給定分錄包括一占用位元;及其中,該重對映邏輯可基於一對應占用位元的一值而選擇該可用的近記憶體位址。
- 如請求項2的多階層記憶體管理電路,其中:回應於該可用的近記憶體位址之選擇,該重對映邏輯可進一步修改該對應占用位元以指示經選擇的該近記憶體 位址為不可用的。
- 如請求項2的多階層記憶體管理電路,其中,該重對映邏輯係用於進一步:回應於在該暫存器陣列中無近記憶體位址為可用之一判定,觸發一中斷請求而以可用的近記憶體位址更新該暫存器陣列。
- 如請求項4的多階層記憶體管理電路,其中:經更新之該暫存器陣列可包括可用的近記憶體位址的一不同子集。
- 如請求項4的多階層記憶體管理電路,其進一步包含:一第二暫存器陣列,其係用於儲存被選擇來用於降級至可用的遠記憶體位址的近記憶體位址;及其中,回應於該中斷請求,一直接記憶體存取(DMA)引擎用以將被選擇來用於降級的該等近記憶體位址所指向的頁面寫至儲存於該第二暫存器陣列中之該等可用的遠記憶體位址。
- 如請求項1的多階層記憶體管理電路,其中,該暫存器陣列之分錄可經由實體記憶體位址存取。
- 如請求項1的多階層記憶體管理電路,其中,回應於該請求之該遠記憶體位址係於該暫存器陣列中之一判定,該重對映邏輯可請求位在一對應近記憶體位址的該資料。
- 一種用以與記憶體裝置耦接的系統,該系統包含:一處理器,其係用於請求位在遠記憶體中之資料;與該處理器耦接的一暫存器陣列,其係用於儲存一近記憶體的多個近記憶體位址及對映至該等近記憶體位址的多個遠記憶體位址,其中,於該暫存器陣列中之分錄的數目係小於該近記憶體中之頁面的數目;及與該處理器耦接的重對映邏輯,該重對映邏輯可:判定所請求之該資料的一遠記憶體位址係不存在於該暫存器陣列中;從該暫存器陣列中選擇出一可用的近記憶體位址;起始將在該遠記憶體位址的所請求之該資料寫至經選擇的該近記憶體位址;及將該遠記憶體位址寫至與經選擇的該近記憶體位址對應的該暫存器陣列之一分錄。
- 如請求項9的系統,其中:該暫存器陣列之一給定分錄包括一占用位元;及該重對映邏輯可基於一對應占用位元的一值而選擇該可用的近記憶體位址。
- 如請求項10的系統,其中,回應於該可用的近記憶體位址之選擇:該重對映邏輯可進一步修改該對應占用位元以指示經選擇的該近記憶體位址為不可用的。
- 如請求項11的系統,其中:回應於在該暫存器陣列中無近記憶體位址為可用之一判定,該重對映邏輯可進一步發送一中斷請求至該處理器以使用可用的近記憶體位址更新該暫存器陣列。
- 如請求項12的系統,其中:經更新之該暫存器陣列可包括可用的近記憶體位址的一不同子集。
- 如請求項12的系統,其進一步包含:一第二暫存器陣列,其用於儲存被選擇來用於降級至可用的遠記憶體位址的近記憶體位址;及其中,回應於該中斷請求,一直接記憶體存取(DMA)引擎可將經選擇來用於降級的該等近記憶體位址所指向的頁面寫至儲存於該第二暫存器陣列中之該等可用的遠記憶體位址。
- 如請求項9的系統,其中,該暫存器陣列之分錄可經由實體記憶體位址存取。
- 如請求項9的系統,其中,回應於所請求之該遠記憶體位址係於該暫存器陣列中之一判定,該重對映邏輯可請求位在一對應近記憶體位址的該資料。
- 如請求項9的系統,其進一步包含下列中之任一者:與該處理器通訊式耦接的一顯示器;與該處理器通訊式耦接的一網路介面;或耦接以提供電力至該系統的一電池。
- 一種管理具有多階層記憶體之系統的方 法,該方法包含:檢測針對在一遠記憶體中之資料的一請求;判定所請求之該資料之一遠記憶體位址是否係於一暫存器陣列中,其中,該暫存器陣列可儲存一近記憶體的多個近記憶體位址及對映至該等近記憶體位址的多個遠記憶體位址,其中,於該暫存器陣列中之分錄的數目係小於該近記憶體中之頁面的數目;及從該暫存器陣列中選擇出一可用的近記憶體位址;起始將來自該遠記憶體位址的所請求之該資料寫至經選擇的該近記憶體位址;及將該遠記憶體位址寫至與經選擇的該近記憶體位址對應的的該暫存器陣列之一分錄。
- 如請求項18的方法,其中:該暫存器陣列之一給定分錄包括一占用位元;及其中,基於一對應占用位元之一值而選擇該可用的近記憶體位址。
- 如請求項19的方法,其進一步包含:回應於該可用的近記憶體位址之選擇,修改該對應占用位元以指示經選取的該近記憶體位址為不可用的。
- 如請求項19的方法,其進一步包含:回應於在該暫存器陣列中無近記憶體位址為可用之一判定,觸發一中斷請求以使用可用的近記憶體位址更新該暫存器陣列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/077,424 | 2016-03-22 | ||
US15/077,424 US9583182B1 (en) | 2016-03-22 | 2016-03-22 | Multi-level memory management |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201734806A TW201734806A (zh) | 2017-10-01 |
TWI735529B true TWI735529B (zh) | 2021-08-11 |
Family
ID=58056591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106103939A TWI735529B (zh) | 2016-03-22 | 2017-02-07 | 多階層記憶體之管理的技術 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9583182B1 (zh) |
CN (1) | CN108780423B (zh) |
DE (1) | DE112017001471T5 (zh) |
TW (1) | TWI735529B (zh) |
WO (1) | WO2017165042A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017049594A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Efficient memory activation at runtime |
US9583182B1 (en) * | 2016-03-22 | 2017-02-28 | Intel Corporation | Multi-level memory management |
US10901894B2 (en) * | 2017-03-10 | 2021-01-26 | Oracle International Corporation | Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
CN107911228B (zh) * | 2017-10-09 | 2023-02-03 | 西安交大捷普网络科技有限公司 | 一种多级设备***的管理方法 |
US10860244B2 (en) | 2017-12-26 | 2020-12-08 | Intel Corporation | Method and apparatus for multi-level memory early page demotion |
TWI684130B (zh) * | 2018-08-22 | 2020-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置 |
CN110858127B (zh) | 2018-08-22 | 2023-09-12 | 慧荣科技股份有限公司 | 数据存储装置 |
TWI670599B (zh) * | 2018-08-28 | 2019-09-01 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
KR20200095130A (ko) * | 2019-01-31 | 2020-08-10 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
CN111506521B (zh) * | 2019-01-31 | 2023-10-20 | 华为技术有限公司 | 一种存储器、数据请求写入方法及控制器 |
US11526448B2 (en) | 2019-09-27 | 2022-12-13 | Intel Corporation | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
US11348637B2 (en) * | 2020-08-31 | 2022-05-31 | Micron Technology, Inc. | Electrical distance-based remapping in a memory device |
CN112949235B (zh) * | 2021-04-16 | 2022-07-12 | 山东高云半导体科技有限公司 | 电子设备的配置方法、装置、处理器及存储介质 |
CN113704142B (zh) * | 2021-09-02 | 2022-06-14 | 海飞科(南京)信息技术有限公司 | 片上存储的地址重映射电路 |
US20230170037A1 (en) * | 2021-11-30 | 2023-06-01 | Qualcomm Incorporated | Hybrid memory system with increased bandwidth |
US20230185745A1 (en) * | 2021-12-13 | 2023-06-15 | Cryptography Research, Inc. | Data flow control module for autonomous flow control of multiple dma engines |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6339813B1 (en) * | 2000-01-07 | 2002-01-15 | International Business Machines Corporation | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory |
US8438334B2 (en) * | 2009-12-22 | 2013-05-07 | International Business Machines Corporation | Hybrid storage subsystem with mixed placement of file contents |
US20150012690A1 (en) * | 2013-03-15 | 2015-01-08 | Rolando H. Bruce | Multi-Leveled Cache Management in a Hybrid Storage System |
CN104541256A (zh) * | 2012-09-29 | 2015-04-22 | 英特尔公司 | 智能远存储器带宽缩放 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2051209C (en) * | 1990-11-30 | 1996-05-07 | Pradeep S. Sindhu | Consistency protocols for shared memory multiprocessors |
US6208542B1 (en) * | 1998-06-30 | 2001-03-27 | Sandisk Corporation | Techniques for storing digital data in an analog or multilevel memory |
KR100518576B1 (ko) * | 2003-05-24 | 2005-10-04 | 삼성전자주식회사 | 버스 중재기 및 버스 중재방법 |
WO2008070813A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US7685399B2 (en) * | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
US20120017039A1 (en) | 2010-07-16 | 2012-01-19 | Plx Technology, Inc. | Caching using virtual memory |
US9734079B2 (en) | 2013-06-28 | 2017-08-15 | Intel Corporation | Hybrid exclusive multi-level memory architecture with memory management |
US9032099B1 (en) | 2013-12-12 | 2015-05-12 | Intel Corporation | Writeback mechanisms for improving far memory utilization in multi-level memory architectures |
US9613704B2 (en) * | 2013-12-25 | 2017-04-04 | Aplus Flash Technology, Inc | 2D/3D NAND memory array with bit-line hierarchical structure for multi-page concurrent SLC/MLC program and program-verify |
US20150379678A1 (en) | 2014-06-25 | 2015-12-31 | Doa'a M. Al-otoom | Techniques to Compose Memory Resources Across Devices and Reduce Transitional Latency |
US9583182B1 (en) * | 2016-03-22 | 2017-02-28 | Intel Corporation | Multi-level memory management |
-
2016
- 2016-03-22 US US15/077,424 patent/US9583182B1/en active Active
-
2017
- 2017-01-06 US US15/400,122 patent/US9921961B2/en not_active Expired - Fee Related
- 2017-02-07 TW TW106103939A patent/TWI735529B/zh active
- 2017-02-21 WO PCT/US2017/018719 patent/WO2017165042A1/en active Application Filing
- 2017-02-21 DE DE112017001471.9T patent/DE112017001471T5/de active Pending
- 2017-02-21 CN CN201780019383.9A patent/CN108780423B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6339813B1 (en) * | 2000-01-07 | 2002-01-15 | International Business Machines Corporation | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory |
US8438334B2 (en) * | 2009-12-22 | 2013-05-07 | International Business Machines Corporation | Hybrid storage subsystem with mixed placement of file contents |
CN104541256A (zh) * | 2012-09-29 | 2015-04-22 | 英特尔公司 | 智能远存储器带宽缩放 |
US20150012690A1 (en) * | 2013-03-15 | 2015-01-08 | Rolando H. Bruce | Multi-Leveled Cache Management in a Hybrid Storage System |
Also Published As
Publication number | Publication date |
---|---|
WO2017165042A1 (en) | 2017-09-28 |
CN108780423A (zh) | 2018-11-09 |
DE112017001471T5 (de) | 2018-12-06 |
US20170277633A1 (en) | 2017-09-28 |
US9583182B1 (en) | 2017-02-28 |
CN108780423B (zh) | 2023-06-02 |
TW201734806A (zh) | 2017-10-01 |
US9921961B2 (en) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI735529B (zh) | 多階層記憶體之管理的技術 | |
US10545692B2 (en) | Memory maintenance operations during refresh window | |
US10755753B2 (en) | Memory device with flexible internal data write control circuitry | |
TWI721003B (zh) | 記憶體裝置及用於記憶體管理的系統 | |
US10482947B2 (en) | Integrated error checking and correction (ECC) in byte mode memory devices | |
CN107924693B (zh) | 多区块***中的可编程的片上端接定时 | |
US20180004659A1 (en) | Cribbing cache implementing highly compressible data indication | |
US9064560B2 (en) | Interface for storage device access over memory bus | |
KR20210074172A (ko) | 메모리-내 포스트 패키지 리페어(ppr)를 위한 인라인 버퍼 | |
KR102501147B1 (ko) | 메모리에서 에러 체킹 및 정정 코드의 확장된 적용 | |
US10599206B2 (en) | Techniques to change a mode of operation for a memory device | |
US11036412B2 (en) | Dynamically changing between latency-focused read operation and bandwidth-focused read operation | |
US10558570B2 (en) | Concurrent accesses of asymmetrical memory sources | |
US11657889B2 (en) | Error correction for dynamic data in a memory that is row addressable and column addressable | |
WO2016209556A1 (en) | Internal consecutive row access for long burst length | |
US11210167B2 (en) | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) | |
US11200113B2 (en) | Auto-increment write count for nonvolatile memory | |
US20240118970A1 (en) | Techniques for memory scrubbing associated with reliability availability and serviceability features |