US10860244B2 - Method and apparatus for multi-level memory early page demotion - Google Patents

Method and apparatus for multi-level memory early page demotion Download PDF

Info

Publication number
US10860244B2
US10860244B2 US15/854,357 US201715854357A US10860244B2 US 10860244 B2 US10860244 B2 US 10860244B2 US 201715854357 A US201715854357 A US 201715854357A US 10860244 B2 US10860244 B2 US 10860244B2
Authority
US
United States
Prior art keywords
page
memory
level
lower level
demotion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US15/854,357
Other versions
US20190042145A1 (en
Inventor
Binh Pham
Christopher B. Wilkerson
Alaa R. Alameldeen
Zeshan A. Chishti
Zhe Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to US15/854,357 priority Critical patent/US10860244B2/en
Assigned to INTEL CORPORATION reassignment INTEL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ALAMELDEEN, Alaa, CHISHTI, Zeshan, PHAM, BINH, WANG, ZHE, WILKERSON, CHRIS
Priority to DE102018129797.1A priority patent/DE102018129797A1/en
Priority to CN201811415031.8A priority patent/CN110032530A/en
Publication of US20190042145A1 publication Critical patent/US20190042145A1/en
Application granted granted Critical
Publication of US10860244B2 publication Critical patent/US10860244B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Definitions

  • the field of invention pertains generally to the computing sciences and, more specifically, to a method and apparatus for multi-level memory early page demotion
  • system memory also referred to as “main memory”.
  • main memory A pertinent issue in many computer systems is the system memory (also referred to as “main memory”).
  • a computing system operates by executing program code stored in system memory and reading/writing data that the program code operates on from/to system memory.
  • system memory is heavily utilized with many program code and data reads as well as many data writes over the course of the computing system's operation. Finding ways to improve system memory accessing performance is therefore a motivation of computing system engineers.
  • FIG. 1 shows a computing system having a multi-level system memory
  • FIG. 2 shows a potential inefficiency of a computing system having a multi-level system memory
  • FIG. 3 shows a memory controller for a multi-level memory having early demotion logic circuitry
  • FIGS. 4 a , 4 b , 4 c , 4 d , 4 e , 4 f and 4 g show an early page demotion process
  • FIG. 5 shows an early page demotion method
  • FIG. 6 shows a computing system
  • FIG. 1 shows an embodiment of a computing system 100 having a multi-tiered or multi-level system memory 112 .
  • a smaller, faster near memory 113 e.g., higher bandwidth and/or small access time(s), etc.
  • near memory 113 is used to store the more frequently accessed items of program code and/or data that are kept in system memory 112 .
  • the system memory 112 will be observed as faster because the system will often read/write from/to items that are being stored in faster near memory 113 .
  • near memory 113 has lower access times than the lower tiered far memory 114
  • the near memory 113 may exhibit reduced access times by having a faster clock speed than the far memory 114
  • the near memory 113 may be a faster (e.g., lower access time), volatile system memory technology (e.g., high performance dynamic random access memory (DRAM) and/or SRAM memory cells) co-located with the memory controller 116 .
  • volatile system memory technology e.g., high performance dynamic random access memory (DRAM) and/or SRAM memory cells
  • far memory 114 may be either a volatile memory technology implemented with a slower clock speed (e.g., a DRAM component that receives a slower clock) or, e.g., a non volatile memory technology that is slower (e.g., longer access time) than volatile/DRAM memory or whatever technology is used for near memory.
  • a volatile memory technology implemented with a slower clock speed (e.g., a DRAM component that receives a slower clock) or, e.g., a non volatile memory technology that is slower (e.g., longer access time) than volatile/DRAM memory or whatever technology is used for near memory.
  • far memory 114 may be comprised of an emerging non volatile random access memory technology such as, to name a few possibilities, a phase change based memory, a three dimensional crosspoint memory, “write-in-place” non volatile main memory devices, memory devices having storage cells composed of chalcogenide, multiple level flash memory, multi-threshold level flash memory, a ferro-electric based memory (e.g., FRAM), a magnetic based memory (e.g., MRAM), a spin transfer torque based memory (e.g., STT-RAM), a resistor based memory (e.g., ReRAM), a Memristor based memory, universal memory, Ge2Sb2Te5 memory, programmable metallization cell memory, amorphous cell memory, Ovshinsky memory, etc. Any of these technologies may be byte addressable so as to be implemented as a system memory in a computing system (also referred to as a “main memory”) rather than traditional block or sector based non volatile mass storage.
  • Emerging non volatile random access memory technologies typically have some combination of the following: 1) higher storage densities than DRAM (e.g., by being constructed in three-dimensional (3D) circuit structures (e.g., a crosspoint 3D circuit structure)); 2) lower power consumption densities than DRAM (e.g., because they do not need refreshing); and/or, 3) access latency that is slower than DRAM yet still faster than traditional non-volatile memory technologies such as FLASH.
  • 3D three-dimensional
  • DRAM lower power consumption densities than DRAM
  • traditional non-volatile memory technologies such as FLASH.
  • the latter characteristic in particular permits various emerging non volatile memory technologies to be used in a main system memory role rather than a traditional mass storage role (which is the traditional architectural location of non volatile storage).
  • far memory 114 acts as a true system memory in that it supports finer grained data accesses (e.g., cache lines) rather than only larger based “block” or “sector” accesses associated with traditional, non volatile mass storage (e.g., solid state drive (SSD), hard disk drive (HDD)), and/or, otherwise acts as a byte addressable memory that the program code being executed by processor(s) of the CPU operate out of.
  • SSD solid state drive
  • HDD hard disk drive
  • system memory may be implemented with dual in-line memory module (DIMM) cards where a single DIMM card has both volatile (e.g., DRAM) and (e.g., emerging) non volatile memory semiconductor chips disposed on it.
  • DIMM cards having only DRAM chips may be plugged into a same system memory channel (e.g., a double data rate (DDR) channel) with DIMM cards having only non volatile system memory chips.
  • DDR double data rate
  • a memory device such as a DRAM device functioning as near memory 113 may be assembled together with the memory controller 116 and processing cores 117 onto a single semiconductor device (e.g., as embedded DRAM) or within a same semiconductor package (e.g., stacked on a system-on-chip that contains, e.g., the CPU, memory controller, peripheral control hub, etc.).
  • Far memory 114 may be formed by other devices, such as slower DRAM or non-volatile memory and may be attached to, or integrated in the same package as well.
  • far memory may be external to a package that contains the CPU cores and near memory devices.
  • a far memory controller may also exist between the main memory controller and far memory devices.
  • the far memory controller may be integrated within a same semiconductor chip package as CPU cores and a main memory controller, or, may be located outside such a package (e.g., by being integrated on a DIMM card having far memory devices).
  • near memory 113 has its own system address space apart from the system addresses that have been assigned to far memory 114 locations.
  • the portion of near memory 113 that has been allocated its own system memory address space acts, e.g., as a higher priority level of system memory (because it is faster than far memory).
  • some other portion of near memory 113 may also act as a memory side cache (that caches the most frequently accessed items from main memory (which may service more than just the CPU core(s) such as a GPU, peripheral, network interface, etc.) or last level CPU cache (which only services CPU core(s)).
  • FIG. 2 pertains to a potential inefficiency that can happen in a 2LM system in which system software is responsible for managing which pages of information are kept in the near memory 213 and which pages of information are kept in far memory 214 .
  • the program code and/or data of a software program is kept on one or more “pages” of information.
  • a software program is to be executed by the computing systems CPU core(s)
  • one or more of the software program's pages are called up from non-volatile mass storage (e.g., a disk-drive) by the system software and written into system memory.
  • the CPU core(s) then issue memory read requests for program code and memory read and write requests for data that are on the pages in order to physically execute the software program out of system memory.
  • system software is responsible for determining which pages are to be stored in near memory 213 and which pages are to be stored in far memory 214 .
  • the more frequently accessed pages will be placed in near memory 213 instead of the far memory 214 because of the near memory's faster access times.
  • the system software will place frequently used and/or currently active pages in near memory 213 as best as is practicable.
  • the system software may desire to move such pages from the far memory 214 to the near memory 213 . So doing, however, particularly when near memory 213 is full and does not have any free space to accept a new page without demoting another page from near memory 213 to far memory 214 , can create system bottlenecks.
  • the above described process entails: 1) shooting down translation look-aside (TLB) buffer entries in the CPUs to reflect the new physical address of the demoted page from a near memory physical address to a far memory physical address (explained in more detail further below); 2) moving a large amount of information from near memory to far memory (i.e., the demoted page's information which may be many kilobytes (KBs) or possibly even mega bytes (MBs)); 3) shooting down TLB entries in the CPUs to reflect the new physical address of the promoted page from a far memory physical address to a near memory physical address; and 4) moving a large amount of information from far memory to near memory (i.e., the promoted page's information which may be many kilobytes (KBs) or possibly even mega bytes (MBs)).
  • TLB translation look-aside
  • the system software has to intercede to perform the successful page movement which not only entails the issuance of the appropriate read/write requests to physically swap the pair of pages' worth of information between the two memories but also has to temporarily stall the CPUs to update their respective TLBs.
  • a CPU instruction execution pipeline typically includes a memory management unit that keeps a TLB.
  • the TLB is essentially a table that records which virtual addresses map to which actual, physical addresses in system memory 212 .
  • software program code is typically written to refer to memory as if it keeps little/no other software. As such, for example, many software programs are written to initially refer to a base memory address of 0000 and then incrementally add addresses as needed. More than one software program written in such a manner could not operate out of a same memory (their “virtual” addresses would collide).
  • a TLB is used to translate each virtual address specified by a particular software program/thread into a physical memory address where the information referred to by the virtual address actually resides in system memory 212 .
  • the TLB entries maintained by the CPU cores for the page must be updated to reflect the new physical location of the page within the memory 212 . Updating a TLB can negatively impact CPU instruction execution pipeline performance because, e.g., the execution of memory read/write instructions is stalled waiting for the TLB to be updated.
  • FIG. 3 shows an improved approach that implements a more coarse grained near memory 313 to far memory 314 page demotion process.
  • the memory controller 316 includes early demotion logic circuitry 320 .
  • the early demotion logic circuitry 320 includes near memory state tracking circuitry 321 , far memory state tracking circuitry 322 and an early write remapping buffer 323 .
  • the state tracking circuits 321 , 322 and early write remapping buffer 323 are integrated as components of a main memory controller on a system-on-chip having multiple (e.g., general purpose) processing cores, a peripheral control hub and other circuitry (e.g., a graphics processing unit (GPU)).
  • multiple e.g., general purpose
  • processing cores e.g., a peripheral control hub
  • other circuitry e.g., a graphics processing unit (GPU)
  • a far memory controller may be locally coupled to such memory chips off the main system-on-chip die (e.g., on one or more DIMMs having the emerging non volatile memory chips).
  • the far memory controller(s) may include the far memory state tracking circuitry 322 or some portion thereof.
  • the near memory state tracking circuitry 322 or some portion thereof may be disposed outside such a chip (e.g., on one or more DIMMs having the volatile (e.g., DRAM) memory chips where such DIMM(s) may even include emerging non volatile memory chips and even the far memory state tracking circuitry 322 or some portion thereof).
  • DIMMs having the volatile (e.g., DRAM) memory chips
  • the near memory state tracking circuitry 322 or some portion thereof may be disposed outside such a chip (e.g., on one or more DIMMs having the volatile (e.g., DRAM) memory chips where such DIMM(s) may even include emerging non volatile memory chips and even the far memory state tracking circuitry 322 or some portion thereof).
  • the system-on-chip e.g., such as in a same semiconductor chip package where memory chips and associated external logic from the system-on-chip are integrated in a stacked chip solution.
  • the early demotion logic circuitry 320 seeks to start the eviction process sooner by physically demoting pages that are “next in line to be evicted” from near memory 313 but have not, as of yet, been formally evicted from near memory 313 by system software because system software has not yet identified a next page (or pages) to be promoted from far memory 314 to near memory 313 .
  • the early demotion logic 320 physically demotes pages from near memory 313 that are expected to be demoted from near memory 313 in the near future but have not actually been demoted by system software yet.
  • the underlying hardware is able to implement the demotion more opportunistically. That is, for instance, if the early demotion logic circuitry 320 is able to begin the process of demoting 316 a page 315 , e.g., a few seconds before the system software actually decides to demote the page 315 , the memory controller 316 has a few seconds to write the page 315 into a far memory location when the far memory resources used to access that location are idling.
  • the aforementioned system bottleneck induced by instantaneous, impromptu and/or reactionary per page data movement decisions can be noticeably lessened.
  • the early write remapping buffer 323 allows the hardware to operate correctly in advance of any TLB updates. That is, a page 315 can be demoted to far memory 314 and be successfully accessed afterward before its corresponding TLB entry is updated by system software. As a consequence, proper hardware operation is not tightly coupled to correct TLB state.
  • the system software can therefore update the CPU TLBs downstream “in batches” in which multiple TLB entries are updated for multiple demoted pages during a single TLB update cycle.
  • multiple entries are concurrently updated within the TLB rather than imposing a separate stall for each entry needing an update.
  • the page demotion process of the improved system of FIG. 3 is more forward looking, drawn-out and/or page-grouped (“coarse grained”).
  • FIGS. 4 a through 4 g depict an end-to-end page swapping process consistent with the teachings above.
  • the system software sends system memory page addresses 431 to the memory controller 416 that the memory controller 416 understands are “free” pages within far memory 414 . That is, with the system software being ultimately responsible for the memory management of the system, the system software is able to identify in advance which spaces in far memory 414 are available to store pages that have been demoted from near memory 413 .
  • the system software sends addresses 431 for these spaces to the memory controller 416 which keeps them for later use in the early write remapping buffer 423 .
  • the early eviction logic circuitry 420 includes near memory state tracking circuitry 421 .
  • the near memory state tracking circuitry 421 identifies how many pages are currently in near memory 413 and identifies which page(s) are next in line to be demoted from near memory 413 .
  • the page(s) that are next in line to be demoted are least recently used (LRU) pages. That is, pages that have sat in near memory 413 the longest without having any read or write accesses directed to them.
  • LRU least recently used
  • LRU LRU Retention Detection
  • the near memory state tracking circuitry 421 also tracks how many pages are in near memory 413 and/or how many free pages exist in near memory 413 .
  • Each free page corresponds to unused memory capacity in near memory 413 that could be used to accept a page that has been promoted to near memory 413 from far memory 414 .
  • early demotion activity is triggered. As of the near memory state in FIG. 4 a no such threshold is surpassed. As such no early eviction process is initiated.
  • FIG. 4 b shows the subsequent promotion of multiple pages 432 from far memory 414 to near memory 413 .
  • system software understands how many pages are in near memory 413 (because it ultimately determines which pages are promoted to near memory), system software understands there is free space in near memory 413 . As such, system software does not command any pages to be demoted from near memory 413 as a consequence of the promotions 432 to near memory 413 from far memory 414 .
  • the promotion of the pages 432 causes the near memory to be filled or near filled with pages. As such, the aforementioned near memory threshold(s) is(are) surpassed and the early demotion logic begins its early demotion process.
  • the instant example assumes that only one page is to be early-demoted but other embodiments may be designed to early-demote more than one page when such threshold(s) is/are crossed or throttle how many pages are early-demoted based on how little free space remains in near memory 413 .
  • the early demotion logic 420 identifies a page 433 for demotion and refers to the far memory state tracking circuit 422 which tracks the current activity of the memory resources associated with the addresses 431 of the far memory free page spaces provided earlier by system software and listed in the early demotion mapping buffer 423 .
  • the far memory state tracking circuit 422 tracks whether the memory channel and/or memory rank and/or memory chip (e.g., in stacked memory solutions) that is utilized to store the listed free page within far memory is currently idle (e.g., not engaged in a read/write access).
  • the memory controller 416 updates it corresponding entry 434 in the buffer: 1) to include the near memory address (“Addr_A”) where the page 433 being demoted was stored in near memory; 2) set both its occupied bit (“Occ”) and its write protection bit (“WP”) to 1.
  • the setting of the occupied bit means the entry is valid and should not be removed or written over.
  • the setting of the write protection bit means that the page 433 being demoted should not be written to because it is currently in transit from the near memory 413 to the far memory 414 .
  • write requests received by the memory controller 416 are queued (not serviced) so long as the write protection bit is set.
  • the memory controller 416 also begins the process of reading the page 433 from near memory 413 and writing it into far memory 414 .
  • any read requests received by the memory controller 416 during the migration may be serviced from near memory 413 , internally from the memory controller 416 if it has possession of the targeted chunk of the page, or far memory 414 .
  • read accesses that target the migrating page received by the memory controller 416 after the first write request to be received that targets the migrating page 433 are also queued, or, serviced if they do not conflict (have same or overlapping target address space) as any queued write request that targets the migrating page 433 .
  • the write protection bit is reset to 0, which, in turn, permits all read or write accesses that target the page 433 (including queued requests and/or new requests) to be redirected to the page 433 in far memory 414 .
  • all such requests will identify the old near memory address (“Addr_A”) for the page as the target of the request.
  • the entry in the early demotion buffer 423 is used as a look-up table to identify the location where the page is now located (“Addr_2”) and the requests are redirected there.
  • the occupied bit is still set to 1 because the TLB entries that reflect the demotion of the page 433 have not been updated yet.
  • a command is received by the memory controller to promote a page 435 from far memory 414 to near memory 413 .
  • the promoted page 435 is able to be written into near memory 413 without having to wait for a page to be demoted.
  • the promoted page 435 is able to be accessed from the faster near memory 413 sooner than the system of FIG. 2 .
  • the early demotion circuit 420 makes available to the system software (e.g., by way of register space 436 that is readable by the system software) the addresses of the pages that the near memory state tracking circuitry 421 has identified as being next-in-line for eviction.
  • the system software would have known the address of free space 437 because it had read it from register 436 beforehand.
  • the system software/CPU issues a command to promote a page from far memory 414 to near memory, it also identifies the address of the free space in near memory 413 which it had previously read from the memory controller 416 as the destination for the page.
  • the system software may also update the TLB to reflect the new near memory address of the promoted page 435 .
  • FIG. 4 f shows a subsequent state after additional page demotions have occurred as described above for other pages.
  • the early demotion buffer 423 is shown as having multiple valid entries (occupied bits are set to 1) which means their corresponding page demotions have not yet been updated into the CPU TLBs.
  • multiple requests may have been received by the memory controller 416 which targeted the demoted pages' old near memory address and that where redirected to their new far memory address through a look-up within the early demotion buffer 423 .
  • the write protection bits have all been reset to 0 which means as of the state of FIG. 4 f the page demotions are complete (the demoted pages have all been fully and successfully written into far memory).
  • the system software then reads the contents of the early demotion buffer 423 having occupied bits set equal to 1.
  • each page demotion to have occurred from the system state of FIG. 4 a through the system state of FIG. 4 f has a representative entry in the buffer 423 with its occupied bit set to 1.
  • the system software then updates the TLBs in the CPUs with the new translation information contained in the early demotion buffer 423 . Specifically, for each page having a current page address in a TLB that matches the page's old near memory address in the buffer 423 , the system software will replace the old near memory address with the new far memory address.
  • all of the entries in the buffer are used to update the TLBs as a batch so as to economize the TLB updating process. In various embodiments, so doing may/will cause the TLB to flush its contents.
  • the system software reads the contents of the buffer 423 in response to the buffer 423 having a threshold number of entries with occupied bit set to 1 and write protection bit set to 0 (which means a threshold number of entries are waiting for their respective TLB entries to be updated).
  • a threshold number of entries which means a threshold number of entries are waiting for their respective TLB entries to be updated.
  • batch TLB update processing naturally follows. Referring to FIG. 4 g , after the TLB entries have been updated, system software clears the occupied bits from 1 to 0 and provides a new set of free page addresses 440 in far memory, in which case, the system state returns to a state that is akin to the system state of FIG. 4 a.
  • the early demotion logic circuitry 320 , 420 described above and any/all of its constituent components may be integrated with logic circuitry that is designed to execute some form of program code (e.g., embedded processor, embedded processor, etc.), dedicated hardwired logic circuitry (e.g., application specific integrated circuit (ASIC) circuitry), programmable logic circuitry (e.g., field programmable logic circuitry (FPGA), programmable logic device (PLD)) or any combination or logic circuitry that executes program code, dedicated hardwired logic circuitry or programmable logic circuitry.
  • program code e.g., embedded processor, embedded processor, etc.
  • dedicated hardwired logic circuitry e.g., application specific integrated circuit (ASIC) circuitry
  • programmable logic circuitry e.g., field programmable logic circuitry (FPGA), programmable logic device (PLD)
  • FPGA field programmable logic circuitry
  • PLD programmable logic device
  • FIG. 5 provides a method described above.
  • the method includes determining 501 that a higher level of a multi-level memory has low available free space for accepting one or more new pages of program code and/or data, the determining being performed by a memory controller that is coupled to the multi-level memory, the higher level of the multi-level memory being faster than a lower level of the multi-level memory.
  • the method also includes demoting 502 the page to the lower level before system software updates a translation look-aside buffer to reflect the demotion and before the system software sends a command to the memory controller to promote a next page from the lower level to the higher level.
  • FIG. 6 provides an exemplary depiction of a computing system 600 (e.g., a smartphone, a tablet computer, a laptop computer, a desktop computer, a server computer, etc.).
  • the basic computing system 600 may include a central processing unit 601 (which may include, e.g., a plurality of general purpose processing cores 615 _ 1 through 615 _X) and a main memory controller 617 disposed on a multi-core processor or applications processor, system memory 602 , a display 603 (e.g., touchscreen, flat-panel), a local wired point-to-point link (e.g., USB) interface 604 , various network I/O functions 605 (such as an Ethernet interface and/or cellular modem subsystem), a wireless local area network (e.g., WiFi) interface 606 , a wireless point-to-point link (e.g., Bluetooth) interface 607 and a Global Positioning System interface 608 , various sensors 609 _ 1 through
  • An applications processor or multi-core processor 650 may include one or more general purpose processing cores 615 within its CPU 601 , one or more graphical processing units 616 , a memory management function 617 (e.g., a memory controller) and an I/O control function 618 .
  • the general purpose processing cores 615 typically execute the system and application software of the computing system.
  • the graphics processing unit 616 typically executes graphics intensive functions to, e.g., generate graphics information that is presented on the display 603 .
  • the memory control function 617 interfaces with the system memory 602 to write/read data to/from system memory 602 .
  • the system memory may be implemented as a multi-level system memory.
  • the memory controller may include special hardware that demotes pages from a higher level to a lower level of system memory ahead of a page promotion from the lower to the higher level when the higher level is keeping a high concentration of pages as described in detail above.
  • Each of the touchscreen display 603 , the communication interfaces 604 - 607 , the GPS interface 608 , the sensors 609 , the camera(s) 610 , and the speaker/microphone codec 613 , 614 all can be viewed as various forms of I/O (input and/or output) relative to the overall computing system including, where appropriate, an integrated peripheral device as well (e.g., the one or more cameras 610 ).
  • I/O input and/or output
  • various ones of these I/O components may be integrated on the applications processor/multi-core processor 650 or may be located off the die or outside the package of the applications processor/multi-core processor 650 .
  • the power management control unit 612 generally controls the power consumption of the system 600 .
  • Embodiments of the invention may include various processes as set forth above.
  • the processes may be embodied in machine-executable instructions.
  • the instructions can be used to cause a general-purpose or special-purpose processor to perform certain processes.
  • these processes may be performed by specific/custom hardware components that contain hardwired logic circuitry or programmable logic circuitry (e.g., FPGA, PLD) for performing the processes, or by any combination of programmed computer components and custom hardware components.
  • programmable logic circuitry e.g., FPGA, PLD
  • Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions.
  • the machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, FLASH memory, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions.
  • the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
  • a remote computer e.g., a server
  • a requesting computer e.g., a client
  • a communication link e.g., a modem or network connection

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 Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

An apparatus is described that includes a memory controller to couple to a multi-level memory characterized by a faster higher level and a slower lower level. The memory controller having early demotion logic circuitry to demote a page from the higher level to the lower level without system software having to instruct the memory controller to demote the page and before the system software promotes another page from the lower level to the higher level.

Description

FIELD OF INVENTION
The field of invention pertains generally to the computing sciences and, more specifically, to a method and apparatus for multi-level memory early page demotion
BACKGROUND
A pertinent issue in many computer systems is the system memory (also referred to as “main memory”). Here, as is understood in the art, a computing system operates by executing program code stored in system memory and reading/writing data that the program code operates on from/to system memory. As such, system memory is heavily utilized with many program code and data reads as well as many data writes over the course of the computing system's operation. Finding ways to improve system memory accessing performance is therefore a motivation of computing system engineers.
FIGURES
A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which:
FIG. 1 shows a computing system having a multi-level system memory;
FIG. 2 shows a potential inefficiency of a computing system having a multi-level system memory;
FIG. 3 shows a memory controller for a multi-level memory having early demotion logic circuitry;
FIGS. 4a, 4b, 4c, 4d, 4e, 4f and 4g show an early page demotion process;
FIG. 5 shows an early page demotion method;
FIG. 6 shows a computing system.
DETAILED DESCRIPTION
FIG. 1 shows an embodiment of a computing system 100 having a multi-tiered or multi-level system memory 112. According to various embodiments, a smaller, faster near memory 113 (e.g., higher bandwidth and/or small access time(s), etc.) may be utilized as a cache for a larger, slower far memory 114 (e.g., lower bandwidth and/or large access time(s), etc.). In various embodiments, near memory 113 is used to store the more frequently accessed items of program code and/or data that are kept in system memory 112. By storing the more frequently used items in near memory 113, the system memory 112 will be observed as faster because the system will often read/write from/to items that are being stored in faster near memory 113.
According to various embodiments, near memory 113 has lower access times than the lower tiered far memory 114 For example, the near memory 113 may exhibit reduced access times by having a faster clock speed than the far memory 114. Here, the near memory 113 may be a faster (e.g., lower access time), volatile system memory technology (e.g., high performance dynamic random access memory (DRAM) and/or SRAM memory cells) co-located with the memory controller 116. By contrast, far memory 114 may be either a volatile memory technology implemented with a slower clock speed (e.g., a DRAM component that receives a slower clock) or, e.g., a non volatile memory technology that is slower (e.g., longer access time) than volatile/DRAM memory or whatever technology is used for near memory.
For example, far memory 114 may be comprised of an emerging non volatile random access memory technology such as, to name a few possibilities, a phase change based memory, a three dimensional crosspoint memory, “write-in-place” non volatile main memory devices, memory devices having storage cells composed of chalcogenide, multiple level flash memory, multi-threshold level flash memory, a ferro-electric based memory (e.g., FRAM), a magnetic based memory (e.g., MRAM), a spin transfer torque based memory (e.g., STT-RAM), a resistor based memory (e.g., ReRAM), a Memristor based memory, universal memory, Ge2Sb2Te5 memory, programmable metallization cell memory, amorphous cell memory, Ovshinsky memory, etc. Any of these technologies may be byte addressable so as to be implemented as a system memory in a computing system (also referred to as a “main memory”) rather than traditional block or sector based non volatile mass storage.
Emerging non volatile random access memory technologies typically have some combination of the following: 1) higher storage densities than DRAM (e.g., by being constructed in three-dimensional (3D) circuit structures (e.g., a crosspoint 3D circuit structure)); 2) lower power consumption densities than DRAM (e.g., because they do not need refreshing); and/or, 3) access latency that is slower than DRAM yet still faster than traditional non-volatile memory technologies such as FLASH. The latter characteristic in particular permits various emerging non volatile memory technologies to be used in a main system memory role rather than a traditional mass storage role (which is the traditional architectural location of non volatile storage).
Regardless of whether far memory 114 is composed of a volatile or non volatile memory technology, in various embodiments far memory 114 acts as a true system memory in that it supports finer grained data accesses (e.g., cache lines) rather than only larger based “block” or “sector” accesses associated with traditional, non volatile mass storage (e.g., solid state drive (SSD), hard disk drive (HDD)), and/or, otherwise acts as a byte addressable memory that the program code being executed by processor(s) of the CPU operate out of.
In various embodiments, system memory may be implemented with dual in-line memory module (DIMM) cards where a single DIMM card has both volatile (e.g., DRAM) and (e.g., emerging) non volatile memory semiconductor chips disposed on it. In other configurations DIMM cards having only DRAM chips may be plugged into a same system memory channel (e.g., a double data rate (DDR) channel) with DIMM cards having only non volatile system memory chips.
In another possible configuration, a memory device such as a DRAM device functioning as near memory 113 may be assembled together with the memory controller 116 and processing cores 117 onto a single semiconductor device (e.g., as embedded DRAM) or within a same semiconductor package (e.g., stacked on a system-on-chip that contains, e.g., the CPU, memory controller, peripheral control hub, etc.). Far memory 114 may be formed by other devices, such as slower DRAM or non-volatile memory and may be attached to, or integrated in the same package as well. Alternatively, far memory may be external to a package that contains the CPU cores and near memory devices. A far memory controller may also exist between the main memory controller and far memory devices. The far memory controller may be integrated within a same semiconductor chip package as CPU cores and a main memory controller, or, may be located outside such a package (e.g., by being integrated on a DIMM card having far memory devices).
In various embodiments, at least some portion of near memory 113 has its own system address space apart from the system addresses that have been assigned to far memory 114 locations. In this case, the portion of near memory 113 that has been allocated its own system memory address space acts, e.g., as a higher priority level of system memory (because it is faster than far memory). In further embodiments, some other portion of near memory 113 may also act as a memory side cache (that caches the most frequently accessed items from main memory (which may service more than just the CPU core(s) such as a GPU, peripheral, network interface, etc.) or last level CPU cache (which only services CPU core(s)).
FIG. 2 pertains to a potential inefficiency that can happen in a 2LM system in which system software is responsible for managing which pages of information are kept in the near memory 213 and which pages of information are kept in far memory 214.
Here, as is known in the art, in a traditional computer system, the program code and/or data of a software program is kept on one or more “pages” of information. When a software program is to be executed by the computing systems CPU core(s), one or more of the software program's pages are called up from non-volatile mass storage (e.g., a disk-drive) by the system software and written into system memory. The CPU core(s) then issue memory read requests for program code and memory read and write requests for data that are on the pages in order to physically execute the software program out of system memory.
In the case of the 2LM system of FIG. 2, the respective pages of a computing system's software programs can be executed out of both the near memory 213 and the far memory 214 by the CPU core(s). In various implementations an operating system, operating system instance and/or virtual machine monitor (hereinafter, “system software”) is responsible for determining which pages are to be stored in near memory 213 and which pages are to be stored in far memory 214.
Ideally, the more frequently accessed pages will be placed in near memory 213 instead of the far memory 214 because of the near memory's faster access times. As such, in various embodiments, the system software will place frequently used and/or currently active pages in near memory 213 as best as is practicable.
Accordingly, when pages in far memory 214 are identified by the system software as being frequently used (e.g., as measured by number of accesses over a time window) or currently active (e.g., as measured from the addresses of current read/write requests), the system software may desire to move such pages from the far memory 214 to the near memory 213. So doing, however, particularly when near memory 213 is full and does not have any free space to accept a new page without demoting another page from near memory 213 to far memory 214, can create system bottlenecks.
Here, the above described process entails: 1) shooting down translation look-aside (TLB) buffer entries in the CPUs to reflect the new physical address of the demoted page from a near memory physical address to a far memory physical address (explained in more detail further below); 2) moving a large amount of information from near memory to far memory (i.e., the demoted page's information which may be many kilobytes (KBs) or possibly even mega bytes (MBs)); 3) shooting down TLB entries in the CPUs to reflect the new physical address of the promoted page from a far memory physical address to a near memory physical address; and 4) moving a large amount of information from far memory to near memory (i.e., the promoted page's information which may be many kilobytes (KBs) or possibly even mega bytes (MBs)).
Here, in a situation where a page 215 has to be demoted 217 from near memory 213 in order to make room in the near memory 213 for a page that is to be promoted to near memory 213 from far memory 214, the system software has to intercede to perform the successful page movement which not only entails the issuance of the appropriate read/write requests to physically swap the pair of pages' worth of information between the two memories but also has to temporarily stall the CPUs to update their respective TLBs.
As is known in the art, a CPU instruction execution pipeline typically includes a memory management unit that keeps a TLB. The TLB is essentially a table that records which virtual addresses map to which actual, physical addresses in system memory 212. Here, software program code is typically written to refer to memory as if it keeps little/no other software. As such, for example, many software programs are written to initially refer to a base memory address of 0000 and then incrementally add addresses as needed. More than one software program written in such a manner could not operate out of a same memory (their “virtual” addresses would collide).
Therefore a TLB is used to translate each virtual address specified by a particular software program/thread into a physical memory address where the information referred to by the virtual address actually resides in system memory 212. By mapping numerically identical virtual addresses of different software programs to different system memory physical addresses, two different software programs with substantially over-lapping virtual address space can easily operate out of two different physical address regions of a same system memory 212.
When a page of information for a particular software program is moved from one memory location to another (e.g., from near memory 213 to far memory 214 or vice-versa), the TLB entries maintained by the CPU cores for the page must be updated to reflect the new physical location of the page within the memory 212. Updating a TLB can negatively impact CPU instruction execution pipeline performance because, e.g., the execution of memory read/write instructions is stalled waiting for the TLB to be updated.
Here, negative performance implications may result if page swapping to effect promotion of a page from far memory 214 to near memory 213 is performed in an instantaneous, impromptu and/or reactionary per page fashion (“fine grained”). That is, if the system software is frequently deciding that certain far memory pages should be promoted to near memory 213 when near memory 213 is full in combination with the system software being designed merely to react to each such decision by immediately directing a corresponding page swap and associated TLB shootdowns, then, the overall performance of the computing system may noticeably degrade because the system memory 212 will be unavailable more regularly moving large amounts of data between near memory 213 and far memory 214 to effect the page swaps, and, the CPU instruction execution pipelines will be stalled more regularly waiting for the TLB shootdowns to be fully processed.
FIG. 3 shows an improved approach that implements a more coarse grained near memory 313 to far memory 314 page demotion process. Here, as can be seen in FIG. 3, the memory controller 316 includes early demotion logic circuitry 320. The early demotion logic circuitry 320 includes near memory state tracking circuitry 321, far memory state tracking circuitry 322 and an early write remapping buffer 323. In various embodiments, the state tracking circuits 321, 322 and early write remapping buffer 323 are integrated as components of a main memory controller on a system-on-chip having multiple (e.g., general purpose) processing cores, a peripheral control hub and other circuitry (e.g., a graphics processing unit (GPU)).
In other embodiments at least some portion of these circuits are implemented off of such a chip. For instance, in the case where the far memory 314 is implemented with emerging non volatile memory chips, a far memory controller may be locally coupled to such memory chips off the main system-on-chip die (e.g., on one or more DIMMs having the emerging non volatile memory chips). Here, the far memory controller(s) may include the far memory state tracking circuitry 322 or some portion thereof. Alternatively or in combination, the near memory state tracking circuitry 322 or some portion thereof may be disposed outside such a chip (e.g., on one or more DIMMs having the volatile (e.g., DRAM) memory chips where such DIMM(s) may even include emerging non volatile memory chips and even the far memory state tracking circuitry 322 or some portion thereof). In various possible packaging scenarios, even if such circuits are located off a system-on-chip as described above they may nevertheless exist within the same package as the system-on-chip (e.g., such as in a same semiconductor chip package where memory chips and associated external logic from the system-on-chip are integrated in a stacked chip solution).
The early demotion logic circuitry 320 seeks to start the eviction process sooner by physically demoting pages that are “next in line to be evicted” from near memory 313 but have not, as of yet, been formally evicted from near memory 313 by system software because system software has not yet identified a next page (or pages) to be promoted from far memory 314 to near memory 313.
That is, the early demotion logic 320 physically demotes pages from near memory 313 that are expected to be demoted from near memory 313 in the near future but have not actually been demoted by system software yet. By actually demoting the pages from near memory 313 before the system software explicitly commands their demotion, the underlying hardware is able to implement the demotion more opportunistically. That is, for instance, if the early demotion logic circuitry 320 is able to begin the process of demoting 316 a page 315, e.g., a few seconds before the system software actually decides to demote the page 315, the memory controller 316 has a few seconds to write the page 315 into a far memory location when the far memory resources used to access that location are idling. By writing a demoted page 315 opportunistically, the aforementioned system bottleneck induced by instantaneous, impromptu and/or reactionary per page data movement decisions can be noticeably lessened.
Moreover, as described in more detail below, the early write remapping buffer 323 allows the hardware to operate correctly in advance of any TLB updates. That is, a page 315 can be demoted to far memory 314 and be successfully accessed afterward before its corresponding TLB entry is updated by system software. As a consequence, proper hardware operation is not tightly coupled to correct TLB state. The system software can therefore update the CPU TLBs downstream “in batches” in which multiple TLB entries are updated for multiple demoted pages during a single TLB update cycle. Thus, for any imposed stall of an instruction execution pipeline to update a TLB, multiple entries are concurrently updated within the TLB rather than imposing a separate stall for each entry needing an update. In this respect, the page demotion process of the improved system of FIG. 3 is more forward looking, drawn-out and/or page-grouped (“coarse grained”).
FIGS. 4a through 4g depict an end-to-end page swapping process consistent with the teachings above. As observed in FIG. 4a , initially, the system software sends system memory page addresses 431 to the memory controller 416 that the memory controller 416 understands are “free” pages within far memory 414. That is, with the system software being ultimately responsible for the memory management of the system, the system software is able to identify in advance which spaces in far memory 414 are available to store pages that have been demoted from near memory 413. The system software sends addresses 431 for these spaces to the memory controller 416 which keeps them for later use in the early write remapping buffer 423.
As observed in FIG. 4a , the early eviction logic circuitry 420 includes near memory state tracking circuitry 421. The near memory state tracking circuitry 421 identifies how many pages are currently in near memory 413 and identifies which page(s) are next in line to be demoted from near memory 413. In various embodiments, the page(s) that are next in line to be demoted are least recently used (LRU) pages. That is, pages that have sat in near memory 413 the longest without having any read or write accesses directed to them. Other algorithms alternative to or in combination with LRU may be used to identify which pages are to be demoted from near memory ahead of other pages (e.g., some pages may be associated with higher priority programs than other pages and are therefore not eligible for eviction (are “pinned” to near memory, etc.)).
The near memory state tracking circuitry 421 also tracks how many pages are in near memory 413 and/or how many free pages exist in near memory 413. Each free page corresponds to unused memory capacity in near memory 413 that could be used to accept a page that has been promoted to near memory 413 from far memory 414. In various embodiments, if the number of pages in near memory 413 exceeds some threshold and/or if the number of free pages in near memory 413 falls below some threshold, then early demotion activity is triggered. As of the near memory state in FIG. 4a no such threshold is surpassed. As such no early eviction process is initiated.
FIG. 4b shows the subsequent promotion of multiple pages 432 from far memory 414 to near memory 413. Because system software understands how many pages are in near memory 413 (because it ultimately determines which pages are promoted to near memory), system software understands there is free space in near memory 413. As such, system software does not command any pages to be demoted from near memory 413 as a consequence of the promotions 432 to near memory 413 from far memory 414. However, as can be seen in FIG. 4b , the promotion of the pages 432 causes the near memory to be filled or near filled with pages. As such, the aforementioned near memory threshold(s) is(are) surpassed and the early demotion logic begins its early demotion process. For simplicity, the instant example assumes that only one page is to be early-demoted but other embodiments may be designed to early-demote more than one page when such threshold(s) is/are crossed or throttle how many pages are early-demoted based on how little free space remains in near memory 413.
Referring to FIG. 4c , in commencing the early demotion process, the early demotion logic 420 identifies a page 433 for demotion and refers to the far memory state tracking circuit 422 which tracks the current activity of the memory resources associated with the addresses 431 of the far memory free page spaces provided earlier by system software and listed in the early demotion mapping buffer 423. For each free page address that is listed in the early demotion mapping buffer 423, the far memory state tracking circuit 422 tracks whether the memory channel and/or memory rank and/or memory chip (e.g., in stacked memory solutions) that is utilized to store the listed free page within far memory is currently idle (e.g., not engaged in a read/write access).
As soon as a free page listed in the buffer 423 is also recognized as currently having idle far memory resources, the memory controller 416 updates it corresponding entry 434 in the buffer: 1) to include the near memory address (“Addr_A”) where the page 433 being demoted was stored in near memory; 2) set both its occupied bit (“Occ”) and its write protection bit (“WP”) to 1. The setting of the occupied bit means the entry is valid and should not be removed or written over. The setting of the write protection bit means that the page 433 being demoted should not be written to because it is currently in transit from the near memory 413 to the far memory 414. Here, write requests received by the memory controller 416 are queued (not serviced) so long as the write protection bit is set.
The memory controller 416 also begins the process of reading the page 433 from near memory 413 and writing it into far memory 414. Depending on the state of the page's migration from near memory 413 to far memory 414, any read requests received by the memory controller 416 during the migration may be serviced from near memory 413, internally from the memory controller 416 if it has possession of the targeted chunk of the page, or far memory 414. In various embodiments, read accesses that target the migrating page received by the memory controller 416 after the first write request to be received that targets the migrating page 433 are also queued, or, serviced if they do not conflict (have same or overlapping target address space) as any queued write request that targets the migrating page 433.
Referring to FIG. 4d , after the page 433 has been successfully written into far memory 414, the write protection bit is reset to 0, which, in turn, permits all read or write accesses that target the page 433 (including queued requests and/or new requests) to be redirected to the page 433 in far memory 414. Here, all such requests will identify the old near memory address (“Addr_A”) for the page as the target of the request. For these requests, the entry in the early demotion buffer 423 is used as a look-up table to identify the location where the page is now located (“Addr_2”) and the requests are redirected there. Notably, the occupied bit is still set to 1 because the TLB entries that reflect the demotion of the page 433 have not been updated yet.
Referring to FIG. 4e , a command is received by the memory controller to promote a page 435 from far memory 414 to near memory 413. Here, because space exists in the near memory 413 owing to the aforementioned earlier demoted page 433, the promoted page 435 is able to be written into near memory 413 without having to wait for a page to be demoted. Thus the promoted page 435 is able to be accessed from the faster near memory 413 sooner than the system of FIG. 2.
In an embodiment, the early demotion circuit 420 makes available to the system software (e.g., by way of register space 436 that is readable by the system software) the addresses of the pages that the near memory state tracking circuitry 421 has identified as being next-in-line for eviction. As such, assuming the system software had read these addresses before the system software knew that page 435 was to be promoted to near memory 413, the system software would have known the address of free space 437 because it had read it from register 436 beforehand. As such, in various embodiments, when the system software/CPU issues a command to promote a page from far memory 414 to near memory, it also identifies the address of the free space in near memory 413 which it had previously read from the memory controller 416 as the destination for the page. The system software may also update the TLB to reflect the new near memory address of the promoted page 435.
FIG. 4f shows a subsequent state after additional page demotions have occurred as described above for other pages. Here, the early demotion buffer 423 is shown as having multiple valid entries (occupied bits are set to 1) which means their corresponding page demotions have not yet been updated into the CPU TLBs. As such, throughout the time period from FIG. 4e through FIG. 4f , multiple requests may have been received by the memory controller 416 which targeted the demoted pages' old near memory address and that where redirected to their new far memory address through a look-up within the early demotion buffer 423. The write protection bits have all been reset to 0 which means as of the state of FIG. 4f the page demotions are complete (the demoted pages have all been fully and successfully written into far memory).
The system software then reads the contents of the early demotion buffer 423 having occupied bits set equal to 1. Here, each page demotion to have occurred from the system state of FIG. 4a through the system state of FIG. 4f has a representative entry in the buffer 423 with its occupied bit set to 1. The system software then updates the TLBs in the CPUs with the new translation information contained in the early demotion buffer 423. Specifically, for each page having a current page address in a TLB that matches the page's old near memory address in the buffer 423, the system software will replace the old near memory address with the new far memory address. As described above, all of the entries in the buffer are used to update the TLBs as a batch so as to economize the TLB updating process. In various embodiments, so doing may/will cause the TLB to flush its contents.
In an embodiment, the system software reads the contents of the buffer 423 in response to the buffer 423 having a threshold number of entries with occupied bit set to 1 and write protection bit set to 0 (which means a threshold number of entries are waiting for their respective TLB entries to be updated). By reading buffer entries after such a threshold has been passed, batch TLB update processing naturally follows. Referring to FIG. 4g , after the TLB entries have been updated, system software clears the occupied bits from 1 to 0 and provides a new set of free page addresses 440 in far memory, in which case, the system state returns to a state that is akin to the system state of FIG. 4 a.
Note that the early demotion logic circuitry 320, 420 described above and any/all of its constituent components (near memory tracking circuitry, far memory tracking circuitry and early demotion buffer) may be integrated with logic circuitry that is designed to execute some form of program code (e.g., embedded processor, embedded processor, etc.), dedicated hardwired logic circuitry (e.g., application specific integrated circuit (ASIC) circuitry), programmable logic circuitry (e.g., field programmable logic circuitry (FPGA), programmable logic device (PLD)) or any combination or logic circuitry that executes program code, dedicated hardwired logic circuitry or programmable logic circuitry.
FIG. 5 provides a method described above. The method includes determining 501 that a higher level of a multi-level memory has low available free space for accepting one or more new pages of program code and/or data, the determining being performed by a memory controller that is coupled to the multi-level memory, the higher level of the multi-level memory being faster than a lower level of the multi-level memory. The method also includes demoting 502 the page to the lower level before system software updates a translation look-aside buffer to reflect the demotion and before the system software sends a command to the memory controller to promote a next page from the lower level to the higher level.
FIG. 6 provides an exemplary depiction of a computing system 600 (e.g., a smartphone, a tablet computer, a laptop computer, a desktop computer, a server computer, etc.). As observed in FIG. 6, the basic computing system 600 may include a central processing unit 601 (which may include, e.g., a plurality of general purpose processing cores 615_1 through 615_X) and a main memory controller 617 disposed on a multi-core processor or applications processor, system memory 602, a display 603 (e.g., touchscreen, flat-panel), a local wired point-to-point link (e.g., USB) interface 604, various network I/O functions 605 (such as an Ethernet interface and/or cellular modem subsystem), a wireless local area network (e.g., WiFi) interface 606, a wireless point-to-point link (e.g., Bluetooth) interface 607 and a Global Positioning System interface 608, various sensors 609_1 through 609_Y, one or more cameras 610, a battery 611, a power management control unit 612, a speaker and microphone 613 and an audio coder/decoder 614.
An applications processor or multi-core processor 650 may include one or more general purpose processing cores 615 within its CPU 601, one or more graphical processing units 616, a memory management function 617 (e.g., a memory controller) and an I/O control function 618. The general purpose processing cores 615 typically execute the system and application software of the computing system. The graphics processing unit 616 typically executes graphics intensive functions to, e.g., generate graphics information that is presented on the display 603.
The memory control function 617 interfaces with the system memory 602 to write/read data to/from system memory 602. The system memory may be implemented as a multi-level system memory. The memory controller may include special hardware that demotes pages from a higher level to a lower level of system memory ahead of a page promotion from the lower to the higher level when the higher level is keeping a high concentration of pages as described in detail above.
Each of the touchscreen display 603, the communication interfaces 604-607, the GPS interface 608, the sensors 609, the camera(s) 610, and the speaker/ microphone codec 613, 614 all can be viewed as various forms of I/O (input and/or output) relative to the overall computing system including, where appropriate, an integrated peripheral device as well (e.g., the one or more cameras 610). Depending on implementation, various ones of these I/O components may be integrated on the applications processor/multi-core processor 650 or may be located off the die or outside the package of the applications processor/multi-core processor 650. The power management control unit 612 generally controls the power consumption of the system 600.
Embodiments of the invention may include various processes as set forth above. The processes may be embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor to perform certain processes. Alternatively, these processes may be performed by specific/custom hardware components that contain hardwired logic circuitry or programmable logic circuitry (e.g., FPGA, PLD) for performing the processes, or by any combination of programmed computer components and custom hardware components.
Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, FLASH memory, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims (15)

What is claimed:
1. An apparatus, comprising:
a memory controller to couple to a multi-level memory characterized by a faster higher level and a slower lower level and in which system software determines which pages are to occupy the higher level, the memory controller comprising early demotion logic circuitry to demote a page from the higher level to the lower level without system software having to instruct the memory controller to demote the page, without the page passing through an intermediate page location in either the higher or lower levels during the demotion, and without the memory controller informing system software of the page's demotion as a condition for proceeding with the page's demotion, and before the system software promotes another page from the lower level to the higher level, wherein, the memory controller further comprises a), b) and c) below:
a) a buffer storage region to hold respective lower level addresses received from the system software before the page's demotion, the memory controller to select one of the lower level addresses to establish a new lower level address for the page;
b) upper level tracking circuitry to determine that the upper level has insufficient available free space to accept one or more new pages of program code and/or data and to identify the page for demotion from the upper level as a consequence, the upper level tracking circuitry being dedicated hardwired logic circuitry within the memory controller;
c) lower level tracking circuitry to monitor when memory resources within the lower level that the respective lower level addresses map to become idle, the memory controller to begin the demotion of the page from the upper level when a memory resource of the memory resources that the new lower level address maps to is idle, the lower level tracking circuitry being dedicated hardwired logic circuitry within the memory controller.
2. The apparatus of claim 1 wherein the buffer storage region is to store entries of early demoted pages, an entry of the entries to identify the page's old higher level address and the new lower level address.
3. The apparatus of claim 2 wherein the memory controller is to reference the buffer storage region to redirect, to the new lower level address, read and/or write requests that target the page and that specify the old higher level address.
4. The apparatus of claim 2 wherein the entry further comprises a write protect bit to prevent writing to the page while the page is being demoted.
5. The apparatus of claim 2 wherein the entry further comprises an occupied bit to specify whether or not the new lower level address has been updated into a translation look-aside buffer.
6. A computing system, comprising:
one or more processing cores comprising respective translation look-aside buffers;
a multi-level memory characterized by a faster higher level and a slower lower level and in which system software determines which pages are to occupy the higher level;
a memory controller between the one or more processing cores and the multi-level memory, the memory controller comprising early demotion logic circuitry to demote a page from the higher level to the lower level without the memory controller informing system software of the page's demotion as a condition for proceeding with the page's demotion, and without the page passing through an intermediate page location in either the higher or lower levels during the demotion, and without system software executing on the one or more processing cores having to instruct the memory controller to demote the page, wherein, the memory controller further comprises a), b) and c) below:
a) a buffer storage region to hold respective lower level addresses received from the system software before the page's demotion, the memory controller to select one of the lower level addresses to establish a new lower level address for the page;
b) upper level tracking circuitry to determine that the upper level has insufficient available free space to accept one or more new pages of program code and/or data and to identify the page for demotion from the upper level as a consequence, the upper level tracking circuitry being first dedicated hardwired logic circuitry within the memory controller;
c) lower level tracking circuitry to monitor when memory resources within the lower level that the respective lower level addresses map to become idle, the memory controller to begin the demotion of the page from the upper level when a memory resource of the memory resources that the new lower level address maps to is idle, the lower level tracking circuitry being second dedicated hardwired logic circuitry within the memory controller.
7. The computing system of claim 6 wherein the buffer storage region is to store entries of early demoted pages, an entry of the entries to identify the page's old higher level address and the new lower level address.
8. The computing system of claim 7 wherein the memory controller is to reference the buffer storage region to redirect, to the new lower level address, read and/or write requests that target the page and that specify the old higher level address.
9. The computing system of claim 7 wherein the entry further comprises a write protect bit to prevent writing to the page while the page is being demoted.
10. The computing system of claim 7 wherein the entry further comprises an occupied bit to specify whether or not the new lower level address has been updated into a translation look-aside buffer.
11. A method, comprising:
performing the below with dedicated hardwired logic circuitry of a memory controller that interfaces with a multi-level memory having a higher level and a lower level, the higher level of the multi-level memory being faster than the lower level of the multi-level memory, wherein, system software determines which pages are to occupy the higher level:
receiving lower level addresses from system software that are available to receive demoted pages;
determining that the higher level of the multi-level memory has insufficient available free space to accept one or more new pages of program code and/or data;
identifying a page within the higher level of the multi-level memory for demotion;
tracking usage of lower level memory resources that the lower level addresses map to;
selecting one of the lower level addresses whose respective lower level memory resources are idle as the lower level address where the page is to be demoted to;
demoting the page to the lower level of the multi-level memory at the lower level address without the page passing through an intermediate page location in either the higher level or the lower level during the demotion, without informing the system software of the page's demotion as a condition for proceeding with the page's demotion, and before system software updates a translation look-aside buffer to reflect the demotion, and before the system software sends a command to the memory controller to promote a next page from the lower level of the multi-level memory to the higher level of the multi-level memory; and
making the lower level address for the page visible to the system software.
12. The method of claim 11 further comprising the system software updating the translation look-aside buffer to reflect the demotion after the demotion has been completed.
13. The method of claim 11 further comprising the system software updating the translation look-aside buffer with a batch of updates to reflect a plurality of demotions.
14. The method of claim 11 further comprising the memory controller receiving the lower level addresses after updating translation look-aside buffer entries with an earlier batch of updates for demotions that occurred prior to the demoting of the page.
15. The method of claim 11 wherein the memory controller is a component of a multi-core processor that comprises a plurality of processing cores.
US15/854,357 2017-12-26 2017-12-26 Method and apparatus for multi-level memory early page demotion Active 2038-01-01 US10860244B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/854,357 US10860244B2 (en) 2017-12-26 2017-12-26 Method and apparatus for multi-level memory early page demotion
DE102018129797.1A DE102018129797A1 (en) 2017-12-26 2018-11-26 METHOD AND APPARATUS FOR SEVERE MEMBRANE EARLY TREATMENT
CN201811415031.8A CN110032530A (en) 2017-12-26 2018-11-26 The method and apparatus to degrade for the multi-level store early stage page

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/854,357 US10860244B2 (en) 2017-12-26 2017-12-26 Method and apparatus for multi-level memory early page demotion

Publications (2)

Publication Number Publication Date
US20190042145A1 US20190042145A1 (en) 2019-02-07
US10860244B2 true US10860244B2 (en) 2020-12-08

Family

ID=65231830

Family Applications (1)

Application Number Title Priority Date Filing Date
US15/854,357 Active 2038-01-01 US10860244B2 (en) 2017-12-26 2017-12-26 Method and apparatus for multi-level memory early page demotion

Country Status (3)

Country Link
US (1) US10860244B2 (en)
CN (1) CN110032530A (en)
DE (1) DE102018129797A1 (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11567877B2 (en) * 2019-05-03 2023-01-31 Intel Corporation Memory utilized as both system memory and near memory
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
US20210081318A1 (en) * 2019-09-17 2021-03-18 Micron Technology, Inc. Flexible provisioning of multi-tier memory
US11397694B2 (en) 2019-09-17 2022-07-26 Micron Technology, Inc. Memory chip connecting a system on a chip and an accelerator chip
US11163490B2 (en) 2019-09-17 2021-11-02 Micron Technology, Inc. Programmable engine for data movement
US11416422B2 (en) 2019-09-17 2022-08-16 Micron Technology, Inc. Memory chip having an integrated data mover
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
US11573709B2 (en) 2020-01-07 2023-02-07 International Business Machines Corporation Maintaining data structures in a memory subsystem comprised of a plurality of memory devices
US11620055B2 (en) 2020-01-07 2023-04-04 International Business Machines Corporation Managing data structures in a plurality of memory devices that are indicated to demote after initialization of the data structures
US11907543B2 (en) * 2020-01-07 2024-02-20 International Business Machines Corporation Managing swappable data structures in a plurality of memory devices based on access counts of the data structures
US11656979B2 (en) * 2020-12-22 2023-05-23 SK Hynix Inc. Data tiering in heterogeneous memory system
US12124865B2 (en) * 2021-03-31 2024-10-22 Advanced Micro Devices, Inc. System and method for providing page migration

Citations (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1100540A (en) 1994-08-18 1995-03-22 奥克利系统公司 Compressed BIOS system
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6035432A (en) 1997-07-31 2000-03-07 Micron Electronics, Inc. System for remapping defective memory bit sets
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
US20030023825A1 (en) * 2001-07-30 2003-01-30 Woo Steven C Consolidation of allocated memory to reduce power consumption
WO2005002060A2 (en) 2003-06-16 2005-01-06 Intel Corporation Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan
US20050273584A1 (en) 2004-06-07 2005-12-08 Wisecup George D Locating environment variables in non-volatile memory
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US20070067382A1 (en) * 2005-08-30 2007-03-22 Xian-He Sun Memory server
US20070255891A1 (en) 2004-04-05 2007-11-01 Super Talent Electronics Inc. High-Speed Controller for Phase-Change Memory Peripheral Device
CN101079003A (en) 2006-05-23 2007-11-28 北京金元龙脉信息科技有限公司 System and method for carrying out safety risk check to computer BIOS firmware
US20080016269A1 (en) 2004-03-17 2008-01-17 Super Talent Electronics Inc. Flash / Phase-Change Memory in Multi-Ring Topology Using Serial-Link Packet Interface
US20080034148A1 (en) 2006-08-01 2008-02-07 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US20080082766A1 (en) 2006-09-28 2008-04-03 Okin Kenneth A Systems and apparatus with programmable memory control for heterogeneous main memory
US20080109629A1 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Asymmetric memory migration in hybrid main memory
US20080235443A1 (en) 2000-01-06 2008-09-25 Super Talent Electronics Inc. Intelligent Solid-State Non-Volatile Memory Device (NVMD) System With Multi-Level Caching of Multiple Channels
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
US20090119498A1 (en) 2007-10-26 2009-05-07 Narayanan Vimal V Hot-plugging a memory device
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
CN101620539A (en) 2008-07-01 2010-01-06 联想(北京)有限公司 Method for start-up and shutdown and computer
US20100110748A1 (en) 2007-04-17 2010-05-06 Best Scott C Hybrid volatile and non-volatile memory device
US20100131827A1 (en) 2007-05-12 2010-05-27 Anobit Technologies Ltd Memory device with internal signap processing unit
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US20100291867A1 (en) 2009-05-13 2010-11-18 Mostafa Naguib Abdulla Wireless interface to program phase-change memories
US20100293317A1 (en) 2009-05-14 2010-11-18 Emanuele Confalonieri Pcm memories for storage bus interfaces
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US20100306446A1 (en) 2009-05-26 2010-12-02 Corrado Villa Method and devices for controlling power loss
US20100318718A1 (en) 2009-06-11 2010-12-16 Sean Eilert Memory device for a hierarchical memory architecture
US20110047365A1 (en) 2009-08-18 2011-02-24 Dell Products, Lp System and Method to Manipulate a System Setting When Booting an Information Handling System
US20110060869A1 (en) 2009-09-08 2011-03-10 Ocz Technology Group, Inc. Large capacity solid-state storage devices and methods therefor
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US20110153916A1 (en) 2009-12-23 2011-06-23 Chinnaswamy Kumar K Hybrid memory architectures
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
US20110291884A1 (en) 2010-05-31 2011-12-01 Samsung Electronics Co., Ltd. Method and apparatus for determining accuracy of location information
US20120023300A1 (en) * 2010-07-26 2012-01-26 International Business Machines Corporation Memory page management in a tiered memory system
US8463948B1 (en) 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US20130227218A1 (en) * 2012-02-29 2013-08-29 Jichuan Chang Data Migration between Memory Locations
US20130268741A1 (en) 2012-04-04 2013-10-10 International Business Machines Corporation Power reduction in server memory system
US20130275661A1 (en) 2011-09-30 2013-10-17 Vincent J. Zimmer Platform storage hierarchy with non-volatile random access memory with configurable partitions
US20130282967A1 (en) 2011-09-30 2013-10-24 Raj K. Ramanujan Statistical wear leveling for non-volatile system memory
US20130290597A1 (en) 2011-09-30 2013-10-31 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US8605531B2 (en) 2011-06-20 2013-12-10 Intel Corporation Fast verify for phase change memory with switch
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8626997B2 (en) 2009-07-16 2014-01-07 Micron Technology, Inc. Phase change memory in a dual inline memory module
US20140019677A1 (en) * 2012-07-16 2014-01-16 Jichuan Chang Storing data in presistent hybrid memory
US20140032818A1 (en) * 2012-07-30 2014-01-30 Jichuan Chang Providing a hybrid memory
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US20140129767A1 (en) 2011-09-30 2014-05-08 Raj K Ramanujan Apparatus and method for implementing a multi-level memory hierarchy
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US20140297938A1 (en) 2011-09-30 2014-10-02 Leena K. Puthiyedath Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US20150074339A1 (en) * 2013-09-10 2015-03-12 Hicamp Systems, Inc. Hybrid main memory using a fine-grain level of remapping
US20150121024A1 (en) * 2013-10-28 2015-04-30 Lenovo Enterprise Solutions (Singapore) Ptw. Ltd. Operating A Memory Management Controller
US20150199126A1 (en) * 2014-01-10 2015-07-16 Advanced Micro Devices, Inc. Page migration in a 3d stacked hybrid memory
US20160034195A1 (en) * 2013-04-30 2016-02-04 Hewlett-Packard Development Company, L.P. Memory network
US20160085585A1 (en) * 2013-05-31 2016-03-24 Huawei Technologies Co., Ltd. Memory System, Method for Processing Memory Access Request and Computer System
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
US9378133B2 (en) 2011-09-30 2016-06-28 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
US9378142B2 (en) 2011-09-30 2016-06-28 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9430372B2 (en) 2011-09-30 2016-08-30 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
US20160269501A1 (en) * 2015-03-11 2016-09-15 Netapp, Inc. Using a cache cluster of a cloud computing service as a victim cache
US20160342363A1 (en) * 2014-01-30 2016-11-24 Hewlett Packard Enterprise Development Lp Migrating data between memories
US9583182B1 (en) 2016-03-22 2017-02-28 Intel Corporation Multi-level memory management
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
US20180024923A1 (en) * 2016-07-19 2018-01-25 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US20180107598A1 (en) * 2016-10-17 2018-04-19 Advanced Micro Devices, Inc. Cluster-Based Migration in a Multi-Level Memory Hierarchy
US20180136838A1 (en) * 2016-11-11 2018-05-17 Scale Computing, Inc. Management of block storage devices based on access frequency
US20180336142A1 (en) * 2017-05-22 2018-11-22 Arm Ltd Method and apparatus for hardware management of multiple memory pools
US20180365167A1 (en) * 2017-06-19 2018-12-20 Advanced Micro Devices, Inc. Mechanism for reducing page migration overhead in memory systems

Patent Citations (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1100540A (en) 1994-08-18 1995-03-22 奥克利系统公司 Compressed BIOS system
US6035432A (en) 1997-07-31 2000-03-07 Micron Electronics, Inc. System for remapping defective memory bit sets
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
US20080235443A1 (en) 2000-01-06 2008-09-25 Super Talent Electronics Inc. Intelligent Solid-State Non-Volatile Memory Device (NVMD) System With Multi-Level Caching of Multiple Channels
US20030023825A1 (en) * 2001-07-30 2003-01-30 Woo Steven C Consolidation of allocated memory to reduce power consumption
WO2005002060A2 (en) 2003-06-16 2005-01-06 Intel Corporation Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan
US20080016269A1 (en) 2004-03-17 2008-01-17 Super Talent Electronics Inc. Flash / Phase-Change Memory in Multi-Ring Topology Using Serial-Link Packet Interface
US20070255891A1 (en) 2004-04-05 2007-11-01 Super Talent Electronics Inc. High-Speed Controller for Phase-Change Memory Peripheral Device
US20050273584A1 (en) 2004-06-07 2005-12-08 Wisecup George D Locating environment variables in non-volatile memory
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US20070067382A1 (en) * 2005-08-30 2007-03-22 Xian-He Sun Memory server
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
CN101079003A (en) 2006-05-23 2007-11-28 北京金元龙脉信息科技有限公司 System and method for carrying out safety risk check to computer BIOS firmware
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US20080034148A1 (en) 2006-08-01 2008-02-07 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US20080082766A1 (en) 2006-09-28 2008-04-03 Okin Kenneth A Systems and apparatus with programmable memory control for heterogeneous main memory
US8051253B2 (en) 2006-09-28 2011-11-01 Virident Systems, Inc. Systems and apparatus with programmable memory control for heterogeneous main memory
US20080109629A1 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Asymmetric memory migration in hybrid main memory
US7774556B2 (en) 2006-11-04 2010-08-10 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
US20100110748A1 (en) 2007-04-17 2010-05-06 Best Scott C Hybrid volatile and non-volatile memory device
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
US20100131827A1 (en) 2007-05-12 2010-05-27 Anobit Technologies Ltd Memory device with internal signap processing unit
US20090119498A1 (en) 2007-10-26 2009-05-07 Narayanan Vimal V Hot-plugging a memory device
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
CN101620539A (en) 2008-07-01 2010-01-06 联想(北京)有限公司 Method for start-up and shutdown and computer
CN101620539B (en) 2008-07-01 2013-12-25 联想(北京)有限公司 Method for start-up and shutdown and computer
US20100291867A1 (en) 2009-05-13 2010-11-18 Mostafa Naguib Abdulla Wireless interface to program phase-change memories
US20100293317A1 (en) 2009-05-14 2010-11-18 Emanuele Confalonieri Pcm memories for storage bus interfaces
US20100306446A1 (en) 2009-05-26 2010-12-02 Corrado Villa Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US20100318718A1 (en) 2009-06-11 2010-12-16 Sean Eilert Memory device for a hierarchical memory architecture
US8626997B2 (en) 2009-07-16 2014-01-07 Micron Technology, Inc. Phase change memory in a dual inline memory module
US20110047365A1 (en) 2009-08-18 2011-02-24 Dell Products, Lp System and Method to Manipulate a System Setting When Booting an Information Handling System
US20110060869A1 (en) 2009-09-08 2011-03-10 Ocz Technology Group, Inc. Large capacity solid-state storage devices and methods therefor
US20110153916A1 (en) 2009-12-23 2011-06-23 Chinnaswamy Kumar K Hybrid memory architectures
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
US20110208900A1 (en) 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
US20110291884A1 (en) 2010-05-31 2011-12-01 Samsung Electronics Co., Ltd. Method and apparatus for determining accuracy of location information
US20120023300A1 (en) * 2010-07-26 2012-01-26 International Business Machines Corporation Memory page management in a tiered memory system
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US9690493B2 (en) 2010-12-22 2017-06-27 Intel Corporation Two-level system main memory
US9087584B2 (en) 2010-12-22 2015-07-21 Intel Corporation Two-level system main memory
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US8605531B2 (en) 2011-06-20 2013-12-10 Intel Corporation Fast verify for phase change memory with switch
US8463948B1 (en) 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
US20130282967A1 (en) 2011-09-30 2013-10-24 Raj K. Ramanujan Statistical wear leveling for non-volatile system memory
US9600416B2 (en) 2011-09-30 2017-03-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US20170249250A1 (en) 2011-09-30 2017-08-31 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US20130290597A1 (en) 2011-09-30 2013-10-31 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US20140129767A1 (en) 2011-09-30 2014-05-08 Raj K Ramanujan Apparatus and method for implementing a multi-level memory hierarchy
US20130275661A1 (en) 2011-09-30 2013-10-17 Vincent J. Zimmer Platform storage hierarchy with non-volatile random access memory with configurable partitions
US20140297938A1 (en) 2011-09-30 2014-10-02 Leena K. Puthiyedath Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US20170249266A1 (en) 2011-09-30 2017-08-31 Intel Corporation Memory channel that supports near memory and far memory access
US20170139649A1 (en) 2011-09-30 2017-05-18 Leena K. Puthiyedath Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US9619408B2 (en) 2011-09-30 2017-04-11 Intel Corporation Memory channel that supports near memory and far memory access
US9600407B2 (en) 2011-09-30 2017-03-21 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US20170031821A1 (en) 2011-09-30 2017-02-02 Raj K. Ramanujan Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9529708B2 (en) 2011-09-30 2016-12-27 Intel Corporation Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
US9378133B2 (en) 2011-09-30 2016-06-28 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
US9378142B2 (en) 2011-09-30 2016-06-28 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9430372B2 (en) 2011-09-30 2016-08-30 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
US20130227218A1 (en) * 2012-02-29 2013-08-29 Jichuan Chang Data Migration between Memory Locations
US20130268741A1 (en) 2012-04-04 2013-10-10 International Business Machines Corporation Power reduction in server memory system
US20140019677A1 (en) * 2012-07-16 2014-01-16 Jichuan Chang Storing data in presistent hybrid memory
US20140032818A1 (en) * 2012-07-30 2014-01-30 Jichuan Chang Providing a hybrid memory
US20160034195A1 (en) * 2013-04-30 2016-02-04 Hewlett-Packard Development Company, L.P. Memory network
US20160085585A1 (en) * 2013-05-31 2016-03-24 Huawei Technologies Co., Ltd. Memory System, Method for Processing Memory Access Request and Computer System
US20150074339A1 (en) * 2013-09-10 2015-03-12 Hicamp Systems, Inc. Hybrid main memory using a fine-grain level of remapping
US20150121024A1 (en) * 2013-10-28 2015-04-30 Lenovo Enterprise Solutions (Singapore) Ptw. Ltd. Operating A Memory Management Controller
US20150199126A1 (en) * 2014-01-10 2015-07-16 Advanced Micro Devices, Inc. Page migration in a 3d stacked hybrid memory
US20160342363A1 (en) * 2014-01-30 2016-11-24 Hewlett Packard Enterprise Development Lp Migrating data between memories
US20160269501A1 (en) * 2015-03-11 2016-09-15 Netapp, Inc. Using a cache cluster of a cloud computing service as a victim cache
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
US9583182B1 (en) 2016-03-22 2017-02-28 Intel Corporation Multi-level memory management
US20180024923A1 (en) * 2016-07-19 2018-01-25 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US20180107598A1 (en) * 2016-10-17 2018-04-19 Advanced Micro Devices, Inc. Cluster-Based Migration in a Multi-Level Memory Hierarchy
US20180136838A1 (en) * 2016-11-11 2018-05-17 Scale Computing, Inc. Management of block storage devices based on access frequency
US20180336142A1 (en) * 2017-05-22 2018-11-22 Arm Ltd Method and apparatus for hardware management of multiple memory pools
US20180365167A1 (en) * 2017-06-19 2018-12-20 Advanced Micro Devices, Inc. Mechanism for reducing page migration overhead in memory systems

Non-Patent Citations (24)

* Cited by examiner, † Cited by third party
Title
"Phase change memory-based ‘moneta’ system points to the future of computer storage", ScienceBlog, Jun. 2, 2011, 7 pgs.
"The Non-Volatile Systems Laboratory Coding for non-volatile memories", http://nvsl.ucsd.edu/ecc, printed Sep. 1, 2011. 2 pgs.
"The Non-Volatile Systems Laboratory Moneta and Onyx: Very Fast SS", http://nvsl.ucsd.edu/moneta/, 3 pgs., Sep. 1, 2011.
"The Non-Volatile Systems Laboratory NV-Heaps: Fast and Safe Persistent Objects", http://nvsl.ucsd.edu/nvuheaps/, 2 pgs., Sep. 1, 2011.
Akel et al., "Onyx: A Prototype Phase Change Memory Storage Array," https://www.flashmemorysummit.com/English/Collaterals/Proceedings/2011/Pr- oceedings.sub.--Chrono.sub.--2011.html, Flash Memory Summit 2011 Proceedings, Aug. 11, 2011.
Bailey et al., "Operating System Implications of Fast, Cheap, Non-Volatile Memory" 13th USENIX, HOTOS11 2011, May 9-11, 2011, 5 pages.
Bock et al. (Concurrent Page Migration for Mobile Systems with OS-Managed Hybrid Memory) ACM 978-1-4503-2870-8, pp. 10 (Year: 2014). *
Caulfield et al., "Moneta: A High-performance Storage Array Architecture for Next-generation, Non-volatile Memories", Micro 43: Proceedings of the 43rd Annual IEEE/ACM International Symposium on Microarchitecture, Atlanta, GA Dec. 2010 pp. 385-395.
Chen et al., "Rethinking Database Algorithms for Phase Change Memory", 5th Biennial Conference on Innovative Data Systems Research {CIDR '11 }, Jan. 9, 2011, 11 pgs., Asilomar, California, USA.
Condit et al, "Better 1/0 Through Byte-Addressable, Persistent Memory", SOSP '09, Oct. 11, 2009, pp. 133-146. Big Sky, Montana, USA.
Dhiman, et al. "PDRAM: A Hybrid PRAM and DRAM Main Memory System", Jul. 26, 2009, Department of Computer Science and Engineering, 6 pages.
Freitas et al., "Storage-class memory: The next storage system technology", IBM J. Res. & Dev., Jul./Sep. 2008, pp. 439-447, vol. 52, No. 4/5.
H.H.S. Lee, et al., "Eager Writeback—A Technique for Improving Bandwidth Utilization", Proceedings 33rd Annual IEEE/ACM International Symposium On Microarchitecture, MICRO-332000, Monterey, Ca, 2000, pp. 11-21.
Jacob, "The Memory System You Can't Avoid It, You Can't Ignore It, You Can't Fake It," Morgan & Claypool, Synthesis Lectures on Computer Architecture, vol. 4, No. 1, pp. 1-77, Jun. 2009.
Kant, Dr. Krishna, "Exploiting NVRAM for Building Multi-Level Memory Systems", InternationalWorkshop on Operating System Technologies for Large Scale NVRAM, Oct. 21, 2008, Jeju, Korea, 19 pages.
Lee et al., "Architecting Phase Change Memory as a Scalable DRAM Alternative", ISCA '09 Proceedings of the 36th Annual International Symposium on Computer Architecture, pp. 2-13, Jun. 20-24, 2009.
Mearian, "IBM announces computer memory breakthrough Phase-change memory offers 100 times the write performance of Nano flash", Jun. 30, 2011, 3 pgs.
Mogul et al., "Operating System Support for NVM+DRAM Hybrid Main Memory", 12th Workshop on Hot Topics in Operating Systems {HatOS XII), May 18, 2009, 9 pgs.
Oskin, Mark, et al., "A Software-Managed Approach to Die-Stacked DRAM", International Conference on Parallel Architectures and Compilation Techniques (PACT), San Francisco, CA, Oct. 2015.
Quereshi et al., "Scalable High Performance Main Memory System Using Phase-Change Memory Technology", ISCA '09, Jun. 20, 2009, 10 pgs., Austin, Texas, USA.
Ramos et al. (Page Placement in Hybrid Memory Systems), ACM 978-1-4503-0102; pp. 85-95 (Year: 2011). *
Raoux et al., "Phase-Change Random Access Memory: A Scalable Technology," IBM Journal of Research and Development, vol. 52, Issue 4, pp. 465-479, Jul. 2008.
Su et al. (HpMC: An Energy-aware Management System of Multi-level Memory Architectures). ACM ISBN 123-4567-24-567/08/06, Oct. 5-8, 2015, pp. 167-178 (Year: 2015). *
Wu et al., "eNVy: A Non-Volatile, Main Memory Storage System," ASPLOS VI Proceedings of the Sixth International Conference on Architectural Support for Programming Languages and Operating Systems, 12 pages, Oct. 1994.

Also Published As

Publication number Publication date
DE102018129797A1 (en) 2019-06-27
US20190042145A1 (en) 2019-02-07
CN110032530A (en) 2019-07-19

Similar Documents

Publication Publication Date Title
US10860244B2 (en) Method and apparatus for multi-level memory early page demotion
CN107408079B (en) Memory controller with coherent unit for multi-level system memory
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
US20170177482A1 (en) Computing system having multi-level system memory capable of operating in a single level system memory mode
US11741011B2 (en) Memory card with volatile and non volatile memory space having multiple usage model configurations
US20180088853A1 (en) Multi-Level System Memory Having Near Memory Space Capable Of Behaving As Near Memory Cache or Fast Addressable System Memory Depending On System State
US20180095884A1 (en) Mass storage cache in non volatile level of multi-level system memory
US10108549B2 (en) Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10120806B2 (en) Multi-level system memory with near memory scrubbing based on predicted far memory idle time
US10191664B2 (en) Memory system
US9990283B2 (en) Memory system
CN108139983B (en) Method and apparatus for fixing memory pages in multi-level system memory
US10949356B2 (en) Fast page fault handling process implemented on persistent memory
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US10915453B2 (en) Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
US9977604B2 (en) Memory system
US20170109277A1 (en) Memory system
US20170109074A1 (en) Memory system
US20170109043A1 (en) Memory system
EP3506112A1 (en) Multi-level system memory configurations to operate higher priority users out of a faster memory level
US20170109072A1 (en) Memory system
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US20170109086A1 (en) Memory system
US20170109071A1 (en) Memory system
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: INTEL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PHAM, BINH;WILKERSON, CHRIS;ALAMELDEEN, ALAA;AND OTHERS;REEL/FRAME:045158/0712

Effective date: 20180104

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4