WO2016160136A1 - Fail-safe write back caching mode device driver for non volatile storage device - Google Patents
Fail-safe write back caching mode device driver for non volatile storage device Download PDFInfo
- Publication number
- WO2016160136A1 WO2016160136A1 PCT/US2016/017339 US2016017339W WO2016160136A1 WO 2016160136 A1 WO2016160136 A1 WO 2016160136A1 US 2016017339 W US2016017339 W US 2016017339W WO 2016160136 A1 WO2016160136 A1 WO 2016160136A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- storage device
- non volatile
- system memory
- driver
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/603—Details of cache memory of operating mode, e.g. cache mode or local memory mode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
- G06F2212/6046—Using a specific cache allocation policy other than replacement policy
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- Computing systems typically include system memory (or main memory) that contains data and program code of the software that the system's processor(s) are currently executing.
- system memory or main memory
- non volatile storage such as a disk drive
- Computer scientists are frequently trying to squeeze more performance out of non volatile storage (because it is usually slower than system memory) and reduce system memory power consumption.
- Fig. la shows a prior art storage device and device driver
- Fig. lb shows a prior art storage device, device driver and driver filter
- Fig. 2 shows a computing system having a multi-level system memory
- Fig. 3 shows a first embodiment of a storage device, device driver and driver filter installed on a computing system having a multi-level system memory
- Fig. 4 shows a second embodiment of a storage device and device driver installed on a computing system having a multi-level system memory
- Fig. 5 shows a methodology that can be performed by either of the embodiments presented in Figs. 4 and 5;
- Fig. 6 shows a more detailed embodiment of a computing system. Detailed Description
- Fig. la shows a prior art storage device 101 and device driver 102.
- a device driver is low level program code that is written for a particular item of hardware (in this case, storage device 101) so that the hardware item is useable to higher level software and/or person referred herein as a "user" 103.
- the user 103 may be a virtual machine monitor, an operating system or operating system instance, or, an application software program (any of which may also include an actual person using or otherwise interfacing with the same).
- a device driver "plugs-into" or is integrated within an operating system or operating system instance for the use of the higher level user 103.
- the storage device 101 is "block” based which means units of data are read from the storage device 101 and written into the storage device 101 in larger chunks (e.g., “blocks”, “sectors”, “pages”) than nominal accesses to system memory (or “main” memory) which typically write/read to/from in smaller sized data units (e.g., byte addressable cache lines).
- a problem is that traditional block based storage devices (e.g., hard disk drives, solid state drives (SSDs)) tend to be slow.
- a "filter driver" 104 which is a separate instance of program code that can be installed to use an interface offered by the driver 102.
- the filter driver 104 incorporates caching intelligence into the overall solution to effectively boost the performance of the storage device 101 from the perspective of the user 103.
- a caching layer 105 formed of an inherently faster memory or storage technology (e.g., a faster non volatile storage device or dynamic random access memory (DRAM) system memory).
- DRAM dynamic random access memory
- blocks of information that are directed by higher level software toward the driver 102/104 for storage in the storage device 101 are instead cached in the faster caching layer.
- the filter driver 104 includes caching policy program code 106 which determines which blocks are to be stored in cache and which blocks are to be evicted from cache.
- the caching policies result in more recently and/or more frequently used items of data being kept in the caching layer 105 and, as a consequence, the user 103 should enjoy reduced accessed times obtaining these items.
- the caching policy code 106 also typically implements a "write-through" rather than "write -back" caching policy.
- the caching layer 105 is typically a block based storage resource. That is, units of information are written to and read from the caching layer 105 in block units. Even in the case where the caching layer 105 is implemented as a section of DRAM system memory (in which case the filter driver 104 is referred to as a "DRAM filter driver"), the units of data that are written to and read from caching layer 105 are performed in units of blocks (e.g., by aggregating multiple system memory cache lines into a block). In cases where the cache 105 is implemented in system memory, the filter driver 104 is allocated a region of system memory which the filter driver 104 uses as the cache 105.
- the filter driver 104 is responsible for managing the content of the caching layer 102 and for invoking the storage device 101 as appropriate with the caching scheme that is in place.
- the management and interfacing between the two different layers by the filter driver 104 can result in a number of complications which, in turn, may somewhat negate the performance boost to the storage device and overall system that the caching layer 105 is supposed to provide.
- These complications include "overhead" processes needed to maintain the data consistency between cached blocks and blocks that are stored in a low level storage device 101 of a system storage hierarchy.
- a "write-through" cache is typically implemented.
- a duplicate copy of any data written into cache 111 is also automatically written 112 into the low level storage of a system storage hierarchy (e.g., as a follow-up process).
- a user is not typically informed that a write operation is "complete” until the copy has been written 112 into the low level storage 101 of a system storage hierarchy even if the data has already been written 111 into cache.
- a user is not informed a write operation is complete after a write operation into cache 111. Rather, the user is only informed that the write operation is complete after the duplicate copy has been written 112 into the low level storage device 101 of a system storage hierarchy. Thus, with respect to writes anyway, a user may not even observe a performance improvement with the use of the cache (a performance improvement will be observed in cases of write-once-read-many, however).
- traffic is understood to be the various flows of information within the system. That is the write through process 112 not only introduces more traffic within the system but also causes filter driver 104 to include additional complex code in order to setup/arrange/control the write-through caching system. Further still, even if write-through caching is not adopted, again in the case a DRAM filter driver, because of the volatile nature of DRAM, the content of the caching layer 105 will need to be "dumped" 113 into the low level storage 101 of a system storage hierarchy upon a system power down cycle to preserve the content of the cached information. The problem of having more internal traffic as a consequence has been handled by reducing the effectiveness or "enjoyment" of the cache for write operations. That is, in some configurations, write operations are denied usage of the cache and the cache is only used for read operations.
- Fig. 2 shows an embodiment of a computing system 200 having a multi-tiered or multi-level system memory 212.
- the multi-tiered system memory 212 includes an upper level 213 that has reduced access times as compared to the access times of the lower level 214.
- the lower level 214 is comprised of an emerging non volatile byte addressable random access memory technology such as, to name a few possibilities, a phase change based memory (e.g., PCM), 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) or a "Memristor" based memory.
- PCM phase change based memory
- FRAM ferro-electric based memory
- MRAM magnetic based memory
- STT-RAM spin transfer torque based memory
- ReRAM resistor based memory
- ReRAM resistor based memory
- Such emerging non volatile random access memories technologies typically have some combination of the following: 1) higher storage densities than DRAM (e.g., by being constructed in three dimensional (3D), e.g., crosspoint or otherwise, circuit structures); 2) lower power consumption densities than DRAM (e.g., for a same clock speed); 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
- FLASH traditional non- volatile memory technologies
- the later characteristic in particular permits the emerging non volatile memory technology to be used in a main system memory role rather than a low level storage role of a system storage hierarchy (which is the traditional architectural location of non volatile storage (other than BIOS/firmware)).
- the lower level 214 is comprised of a non volatile memory
- at least a portion of the non volatile memory acts as a true system memory in that it supports finer grained data accesses (e.g., byte addressable cache lines) rather than larger blocked based accesses associated with traditional, low level non volatile storage of a system storage hierarchy, and/or, otherwise acts as an addressable memory that the program code being executed by processor(s) of the CPU operate out of.
- the upper layer 213 may act as a cache for the lower layer 214 or as a level of system memory having a higher priority than the lower layer 214 (e.g., where more time sensitive (e.g., "real time") data is kept).
- the upper layer 213 may not have its own uniquely addressable system memory space (unique memory addresses are assigned to the lower level 214).
- both the upper and lower layers 213, 214 may have their own separate uniquely addressable system memory space.
- the upper layer 213 is comprised of a DRAM based memory.
- Fig. 3 shows an improved approach in which, as with the approach of Fig. lb, a filter driver 304 is installed that uses an interface offered by a storage device driver 302 to implement a non volatile caching layer 305 for a storage device 301 so that the perceived performance of the storage device 301 is improved.
- the filter driver 304 of Fig. 3 does not perform write-through caching because the caching layer 305 is implemented within a non volatile region of system memory such as region 214 of Fig. 2 discussed above.
- the caching layer 305 is non- volatile, the need to synchronize a data block in cache 305 with any copy of itself (if any) in the low level storage device 301 of a system storage hierarchy in real time is greatly reduced. Should the system suffer a sudden power failure the data blocks in cache 305 will be preserved because of the non-volatile nature of the cache 305. As such, the motivation for a write-through caching scheme is largely
- the filter driver 304 may configure itself (e.g., as a default) in a non write-through mode (e.g., a write-back mode as discussed further below).
- a user may be specifically informed by the filter driver 304 that write-through caching will not be implemented unless the user specifically requests it.
- the user may be informed by the filter driver 304 that a write-back cache will be implemented and/or that write through caching is not being implemented.
- prior art solutions may have only used the cache for read operations to avoid write through penalties for writes, with the new system, there is no penalty for writes and writes are free to use the cache as much as reads.
- a filter driver 304 that implements a caching layer 305 within a layer of non volatile region of system memory may default or be hard-coded into a write-back mode rather than a write-through mode.
- a user has to affirmatively select it over and above a (e.g., default, preferred or suggested) write-back mode.
- the implementation of the write-back mode may result in an immediate improvement in performance from the perspective of the user 303 relative to the prior art solution of Fig. lb in two ways.
- the performance of the storage device 301 may be noticeably improved because the user 303 may be informed that a write is complete after it has been written in cache 305 rather than the after the additional latency has been consumed writing the block through to the storage device 301.
- the overall system has been freed of the write through transactions to the storage device 301, the system overall should be less congested resulting in faster performance of the system as a whole.
- the filter driver 304 does not need to implement a "dump" of all cached information from the cache 305 into the low level storage device 301 of a system storage hierarchy upon a sequenced power down process. That is, as part of the system's normal power down procedure, the information within the caching layer 305 remains there rather than being transferred to the storage device 301. As such, system power down procedures should be greatly simplified and/or consume less time (at least with respect to the storage device 301 itself if not the overall computing system).
- Fig. lb may have been able to offer a power-fail- safe mode but which operated with significant internally complicated processes. That is, in order to implement a power- fail- safe mode with the prior art approach of Fig. lb, a write-through caching process had to be performed. Alternatively, if a write-through mode was not selected (e.g., a write-back mode was selected for higher performance), the system would not be able to operate in a power- safe-fail mode. Thus a user had to choose between performance and power-safe-fail.
- Fig. 3 permits a user to use a single configuration that includes both higher performance (through write-back caching rather than write-through caching) and a power-safe fail mode.
- FIG. 3 demonstrated one embodiment where a filter driver 304 uses an interface offered by a storage device driver 302.
- Fig. 4 shows that the
- the filter driver 304 of Fig. 3 can be integrated into the device driver 403 of the storage device. That is, whereas, the filter driver 304 and device driver 302 of Fig. 3 are physically separable items of program code (the filter driver 304 is installed on top of the device driver 302), by contrast, in the approach of Fig. 4, the cache filtering and storage driver functions are integrated into a single unit of un-separable code (storage device driver 402).
- the device driver 402 includes caching functionality code 406 (including, e.g., caching inclusion/eviction policy code).
- the caching functionality code 406 includes a mode of operation in which blocks of information that are written to cache 405 are not automatically written through to low level storage of a system storage hierarchy 401 nor are blocks of information in cache "dumped" into low level storage 401 of a system storage hierarchy upon a system power down cycle.
- the device driver 402 only a single item of program code (the device driver 402) needs to be installed into the system in order to effect system memory level caching for a storage device 401 that employs a write-back caching mode (and not write-through caching) and yet is still a power- safe-fail solution.
- Fig. 5 shows a first embodiment of a methodology performed by either of the solutions of Figs. 3 and 4.
- a user of a storage device is informed that a power-safe-fail caching scheme for a storage device is in effect 501.
- Block items of data are then written to a cache implemented within a non volatile system memory region but no duplicate copy of the information is written through to the storage device 502.
- blocks within the cache are not saved into the storage device (rather, they remain in cache) 503.
- the process will immediately look to non volatile memory cache for certain data items rather than the storage device.
- a same filter driver function may service/support more than one storage device.
- the same filter driver may support both a hard disk drive and a solid state drive (e.g., by operating through the respective interfaces of their respective device drivers).
- Fig. 6 shows a depiction of an exemplary computing system 600 such as a personal computing system (e.g., desktop or laptop) or a mobile or handheld computing system such as a tablet device or smartphone.
- the basic computing system may include a central processing unit 601 (which may include, e.g., a plurality of general purpose processing cores and a main memory controller disposed on an applications processor or multi-core processor), system memory 602, a display 603 (e.g., touchscreen, flat-panel), a local wired point- to-point link (e.g., USB) interface 04, 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
- a central processing unit 601 which may include, e.g., a plurality of general purpose processing cores and a main memory controller disposed on an
- System interface 608 various sensors 609_1 through 609_N (e.g., one or more of a gyroscope, an accelerometer, a magnetometer, a temperature sensor, a pressure sensor, a humidity sensor, etc.), a camera 610, a battery 611, a power management control unit 612, a speaker and microphone 613 and an audio coder/decoder 614.
- sensors 609_1 through 609_N e.g., one or more of a gyroscope, an accelerometer, a magnetometer, a temperature sensor, a pressure sensor, a humidity sensor, etc.
- 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 operating system and application software of the computing system.
- the graphics processing units 616 typically execute 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.
- the system memory 602 may be a multi-level system memory such as the multi-level system memory 212 observed in Fig. 2 having a non volatile memory region.
- the power management control unit 612 generally controls the power consumption of the system 600.
- GPS interface 608, the sensors 609, the camera 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 camera 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.
- 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 hardware components that contain hardwired logic 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.
- 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)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
A method is described that includes performing the following by a device driver of a non volatile storage device: caching information targeted for the storage device into a non volatile region of a system memory without writing the information through into the storage device.
Description
FAIL-SAFE WRITE BACK CACHING MODE DEVICE DRIVER FOR NON
VOLATILE STORAGE DEVICE
Field of Invention
Fail-Safe Write Back Caching Mode Device Driver For Non Volatile Storag
Background
Computing systems typically include system memory (or main memory) that contains data and program code of the software that the system's processor(s) are currently executing. Traditionally, non volatile storage (such as a disk drive) is used to store the program code when the system is powered off. Computer scientists are frequently trying to squeeze more performance out of non volatile storage (because it is usually slower than system memory) and reduce system memory power consumption.
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. la shows a prior art storage device and device driver;
Fig. lb shows a prior art storage device, device driver and driver filter;
Fig. 2 shows a computing system having a multi-level system memory;
Fig. 3 shows a first embodiment of a storage device, device driver and driver filter installed on a computing system having a multi-level system memory;
Fig. 4 shows a second embodiment of a storage device and device driver installed on a computing system having a multi-level system memory;
Fig. 5 shows a methodology that can be performed by either of the embodiments presented in Figs. 4 and 5;
Fig. 6 shows a more detailed embodiment of a computing system. Detailed Description
Fig. la shows a prior art storage device 101 and device driver 102. A device driver, as is understood in the art, is low level program code that is written for a particular item of hardware (in this case, storage device 101) so that the hardware item is useable to higher level
software and/or person referred herein as a "user" 103. Here, the user 103 may be a virtual machine monitor, an operating system or operating system instance, or, an application software program (any of which may also include an actual person using or otherwise interfacing with the same). Typically, a device driver "plugs-into" or is integrated within an operating system or operating system instance for the use of the higher level user 103.
In a common application the storage device 101 is "block" based which means units of data are read from the storage device 101 and written into the storage device 101 in larger chunks (e.g., "blocks", "sectors", "pages") than nominal accesses to system memory (or "main" memory) which typically write/read to/from in smaller sized data units (e.g., byte addressable cache lines).
A problem is that traditional block based storage devices (e.g., hard disk drives, solid state drives (SSDs)) tend to be slow. As such, referring to Fig. lb, some prior art solutions have opted to include a "filter driver" 104 which is a separate instance of program code that can be installed to use an interface offered by the driver 102. The filter driver 104 incorporates caching intelligence into the overall solution to effectively boost the performance of the storage device 101 from the perspective of the user 103.
As observed in Fig. lb, with the use of a filter driver 104, a caching layer 105 formed of an inherently faster memory or storage technology (e.g., a faster non volatile storage device or dynamic random access memory (DRAM) system memory). Here, blocks of information that are directed by higher level software toward the driver 102/104 for storage in the storage device 101 are instead cached in the faster caching layer. The filter driver 104 includes caching policy program code 106 which determines which blocks are to be stored in cache and which blocks are to be evicted from cache. Typically, the caching policies result in more recently and/or more frequently used items of data being kept in the caching layer 105 and, as a consequence, the user 103 should enjoy reduced accessed times obtaining these items. As discussed in more detail further below, the caching policy code 106 also typically implements a "write-through" rather than "write -back" caching policy.
The caching layer 105, as implemented by the filter driver 104, is typically a block based storage resource. That is, units of information are written to and read from the caching layer 105 in block units. Even in the case where the caching layer 105 is implemented as a section of DRAM system memory (in which case the filter driver 104 is referred to as a "DRAM filter driver"), the units of data that are written to and read from caching layer 105 are performed in units of blocks (e.g., by aggregating multiple system memory cache lines into a block). In
cases where the cache 105 is implemented in system memory, the filter driver 104 is allocated a region of system memory which the filter driver 104 uses as the cache 105.
As can be seen in Fig. lb, the filter driver 104 is responsible for managing the content of the caching layer 102 and for invoking the storage device 101 as appropriate with the caching scheme that is in place. The management and interfacing between the two different layers by the filter driver 104 can result in a number of complications which, in turn, may somewhat negate the performance boost to the storage device and overall system that the caching layer 105 is supposed to provide. These complications include "overhead" processes needed to maintain the data consistency between cached blocks and blocks that are stored in a low level storage device 101 of a system storage hierarchy.
With respect to data consistency issues, in the case of a DRAM filter driver, because of the non volatile nature of the DRAM caching layer 105, a "write-through" cache is typically implemented. In the case of a write-through cache, as observed in Fig. lb, a duplicate copy of any data written into cache 111 is also automatically written 112 into the low level storage of a system storage hierarchy (e.g., as a follow-up process). Adding to the penalty of a write-through cache, a user is not typically informed that a write operation is "complete" until the copy has been written 112 into the low level storage 101 of a system storage hierarchy even if the data has already been written 111 into cache. That is, a user is not informed a write operation is complete after a write operation into cache 111. Rather, the user is only informed that the write operation is complete after the duplicate copy has been written 112 into the low level storage device 101 of a system storage hierarchy. Thus, with respect to writes anyway, a user may not even observe a performance improvement with the use of the cache (a performance improvement will be observed in cases of write-once-read-many, however).
Additionally, more traffic is introduced internally within the system (here, traffic is understood to be the various flows of information within the system). That is the write through process 112 not only introduces more traffic within the system but also causes filter driver 104 to include additional complex code in order to setup/arrange/control the write-through caching system. Further still, even if write-through caching is not adopted, again in the case a DRAM filter driver, because of the volatile nature of DRAM, the content of the caching layer 105 will need to be "dumped" 113 into the low level storage 101 of a system storage hierarchy upon a system power down cycle to preserve the content of the cached information. The problem of having more internal traffic as a consequence has been handled by reducing the effectiveness or
"enjoyment" of the cache for write operations. That is, in some configurations, write operations are denied usage of the cache and the cache is only used for read operations.
Fig. 2 shows an embodiment of a computing system 200 having a multi-tiered or multi-level system memory 212. Here, the multi-tiered system memory 212 includes an upper level 213 that has reduced access times as compared to the access times of the lower level 214. According to various embodiments, the lower level 214 is comprised of an emerging non volatile byte addressable random access memory technology such as, to name a few possibilities, a phase change based memory (e.g., PCM), 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) or a "Memristor" based memory.
Such emerging non volatile random access memories technologies typically have some combination of the following: 1) higher storage densities than DRAM (e.g., by being constructed in three dimensional (3D), e.g., crosspoint or otherwise, circuit structures); 2) lower power consumption densities than DRAM (e.g., for a same clock speed); and/or 3) access latency that is slower than DRAM yet still faster than traditional non- volatile memory technologies such as FLASH. The later characteristic in particular permits the emerging non volatile memory technology to be used in a main system memory role rather than a low level storage role of a system storage hierarchy (which is the traditional architectural location of non volatile storage (other than BIOS/firmware)). Thus, even though the lower level 214 is comprised of a non volatile memory, in various embodiments at least a portion of the non volatile memory acts as a true system memory in that it supports finer grained data accesses (e.g., byte addressable cache lines) rather than larger blocked based accesses associated with traditional, low level non volatile storage of a system storage hierarchy, and/or, otherwise acts as an addressable memory that the program code being executed by processor(s) of the CPU operate out of.
The upper layer 213 may act as a cache for the lower layer 214 or as a level of system memory having a higher priority than the lower layer 214 (e.g., where more time sensitive (e.g., "real time") data is kept). In the former case (upper layer 213 acts as a cache for the lower layer 214), the upper layer 213 may not have its own uniquely addressable system memory space (unique memory addresses are assigned to the lower level 214). In the later case (upper layer 213 acts as a higher priority system memory level), both the upper and lower layers 213, 214 may have their own separate uniquely addressable system memory space. In various embodiments the upper layer 213 is comprised of a DRAM based memory.
The presence of a non volatile level 214 of system memory opens up a wealth of possible system performance improvements and novel internal system workings and/or processes. Fig. 3 shows an improved approach in which, as with the approach of Fig. lb, a filter driver 304 is installed that uses an interface offered by a storage device driver 302 to implement a non volatile caching layer 305 for a storage device 301 so that the perceived performance of the storage device 301 is improved. However, unlike the filter driver 104 of Fig. lb, the filter driver 304 of Fig. 3 does not perform write-through caching because the caching layer 305 is implemented within a non volatile region of system memory such as region 214 of Fig. 2 discussed above. Here, because the caching layer 305 is non- volatile, the need to synchronize a data block in cache 305 with any copy of itself (if any) in the low level storage device 301 of a system storage hierarchy in real time is greatly reduced. Should the system suffer a sudden power failure the data blocks in cache 305 will be preserved because of the non-volatile nature of the cache 305. As such, the motivation for a write-through caching scheme is largely
diminished. This frees the filter driver 304 and the overall system of the costly internal write- through processes associated with the prior art approach of Fig. lb.
Because of the lack of motivation to instill a write-through caching process, the filter driver 304 may configure itself (e.g., as a default) in a non write-through mode (e.g., a write-back mode as discussed further below). Here, a user may be specifically informed by the filter driver 304 that write-through caching will not be implemented unless the user specifically requests it. For example, the user may be informed by the filter driver 304 that a write-back cache will be implemented and/or that write through caching is not being implemented. As such, whereas prior art solutions may have only used the cache for read operations to avoid write through penalties for writes, with the new system, there is no penalty for writes and writes are free to use the cache as much as reads.
In the case of a write-back cache, no duplicate copy of a data block that is written 311 to cache 305 is written back to the storage device 301. Thus, in an embodiment, a filter driver 304 that implements a caching layer 305 within a layer of non volatile region of system memory may default or be hard-coded into a write-back mode rather than a write-through mode. To the extent the filter driver 304 may offer write-through mode, in an embodiment, a user has to affirmatively select it over and above a (e.g., default, preferred or suggested) write-back mode.
The implementation of the write-back mode may result in an immediate improvement in performance from the perspective of the user 303 relative to the prior art
solution of Fig. lb in two ways. First, the performance of the storage device 301 may be noticeably improved because the user 303 may be informed that a write is complete after it has been written in cache 305 rather than the after the additional latency has been consumed writing the block through to the storage device 301. Second, because the overall system has been freed of the write through transactions to the storage device 301, the system overall should be less congested resulting in faster performance of the system as a whole.
Additionally, also as observed in Fig. 3, the filter driver 304 does not need to implement a "dump" of all cached information from the cache 305 into the low level storage device 301 of a system storage hierarchy upon a sequenced power down process. That is, as part of the system's normal power down procedure, the information within the caching layer 305 remains there rather than being transferred to the storage device 301. As such, system power down procedures should be greatly simplified and/or consume less time (at least with respect to the storage device 301 itself if not the overall computing system).
Thus, as a basis of comparison, the prior art approach of Fig. lb may have been able to offer a power-fail- safe mode but which operated with significant internally complicated processes. That is, in order to implement a power- fail- safe mode with the prior art approach of Fig. lb, a write-through caching process had to be performed. Alternatively, if a write-through mode was not selected (e.g., a write-back mode was selected for higher performance), the system would not be able to operate in a power- safe-fail mode. Thus a user had to choose between performance and power-safe-fail.
By contrast, the improved approach of Fig. 3 permits a user to use a single configuration that includes both higher performance (through write-back caching rather than write-through caching) and a power-safe fail mode.
The approach of Fig. 3 demonstrated one embodiment where a filter driver 304 uses an interface offered by a storage device driver 302. By contrast, Fig. 4 shows that the
functionality of the filter driver 304 of Fig. 3 can be integrated into the device driver 403 of the storage device. That is, whereas, the filter driver 304 and device driver 302 of Fig. 3 are physically separable items of program code (the filter driver 304 is installed on top of the device driver 302), by contrast, in the approach of Fig. 4, the cache filtering and storage driver functions are integrated into a single unit of un-separable code (storage device driver 402).
Here, the device driver 402 includes caching functionality code 406 (including, e.g., caching inclusion/eviction policy code). The caching functionality code 406 includes a mode of
operation in which blocks of information that are written to cache 405 are not automatically written through to low level storage of a system storage hierarchy 401 nor are blocks of information in cache "dumped" into low level storage 401 of a system storage hierarchy upon a system power down cycle. As such, only a single item of program code (the device driver 402) needs to be installed into the system in order to effect system memory level caching for a storage device 401 that employs a write-back caching mode (and not write-through caching) and yet is still a power- safe-fail solution.
Fig. 5 shows a first embodiment of a methodology performed by either of the solutions of Figs. 3 and 4. As observed in Fig. 5, a user of a storage device is informed that a power-safe-fail caching scheme for a storage device is in effect 501. Block items of data are then written to a cache implemented within a non volatile system memory region but no duplicate copy of the information is written through to the storage device 502. In response to a power down cycle, blocks within the cache are not saved into the storage device (rather, they remain in cache) 503. In the alternative, in the case of an unplanned power down, upon system initialization, the process will immediately look to non volatile memory cache for certain data items rather than the storage device.
In any of the embodiments described above with respect to Figs. 3, 4, 5 (and particularly with respect to the non integrated approach of Figs. 3 and 4), note that a same filter driver function may service/support more than one storage device. For example, the same filter driver may support both a hard disk drive and a solid state drive (e.g., by operating through the respective interfaces of their respective device drivers).
Fig. 6 shows a depiction of an exemplary computing system 600 such as a personal computing system (e.g., desktop or laptop) or a mobile or handheld computing system such as a tablet device or smartphone. As observed in Fig. 6, the basic computing system may include a central processing unit 601 (which may include, e.g., a plurality of general purpose processing cores and a main memory controller disposed on an applications processor or multi-core processor), system memory 602, a display 603 (e.g., touchscreen, flat-panel), a local wired point- to-point link (e.g., USB) interface 04, 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_N (e.g., one or more of a gyroscope, an accelerometer, a magnetometer, a temperature sensor, a pressure sensor, a humidity sensor,
etc.), a camera 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 operating system and application software of the computing system. The graphics processing units 616 typically execute 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. The system memory 602 may be a multi-level system memory such as the multi-level system memory 212 observed in Fig. 2 having a non volatile memory region. During operation, data and/or instructions are typically transferred between low level non volatile (e.g., "disk") storage 620 of a system storage hierarchy and system memory 602. The power management control unit 612 generally controls the power consumption of the system 600. Each of the touchscreen display 603, the communication interfaces 604 - 607, the
GPS interface 608, the sensors 609, the camera 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 camera 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.
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 hardware components that contain hardwired logic 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
1. A method, comprising: performing the following by a device driver of a non volatile storage device: caching information targeted for said storage device into a non volatile region of a system memory and not writing said information through into said storage device.
2. The method of claim 1 further comprising leaving said information within said non volatile region of system memory and not transferring said information from said non volatile region of system memory to said storage device as part of a power down cycle of a computing system having said device driver and said storage device.
3. The method of claim 1 wherein said device driver is a filter driver.
4. The method of claim 1 wherein said device driver does not communicate with a lower, separable device driver in order to access said storage device.
5. The method of claim 1 wherein said system memory is a multi-level system memory.
6. The method of claim 1 wherein said non volatile region of system memory is composed of any of: a phase change memory; a ferro-electric memory; a magnetic memory; a spin transfer torque memory; a resistor memory; an Memristor memory.
7. The method of claim 1 wherein said method further comprises informing a user that said storage device is operating in a power-fail- safe mode.
8. The method of claim 1 further comprising permitting a user to over-ride a default write-back caching mode in favor of a write-through mode.
9. A computer readable storage medium having stored thereon device driver program code for a non volatile storage device that when processed by one or more processors of a computing system causes a method to be performed, the method comprising: caching information targeted for said storage device into a non volatile region of a system memory and not writing the information through the said storage device.
10. The computer readable storage medium of claim 9 further comprising leaving said information within said non volatile region of system memory and not transferring said information from said non volatile region of system memory to said storage device as part of a power down cycle of a computing system having said device driver and said storage device.
11. The computer readable storage medium of claim 9 wherein said device driver is a filter driver.
12. The computer readable storage medium of claim 9 wherein said device driver does not communicate with a lower, separable device driver in order to access said storage device.
13. The computer readable storage medium of claim 9 wherein said system memory is a multi- level system memory.
14. The computer readable storage medium of claim 9 wherein said non volatile region of system memory is composed of any of: a phase change memory;
a ferro-electric memory; a magnetic memory; a spin transfer torque memory; a resistor memory; an Memristor memory.
15. The computer readable storage medium of claim 9 wherein said method further comprises informing a user that said storage device is operating in a power-fail-safe mode.
16. The computer readable storage medium of claim 9 further comprising permitting a user to over-ride a default write-back caching mode in favor of a write-through mode.
17. A computing system, comprising: a) one or more processors coupled to a memory controller; b) a multi-level system memory coupled to said memory controller, said multi-level system memory comprising a non volatile system memory region; c) a computer readable storage medium having stored thereon device driver program code for a non volatile storage device of said computing system that when processed by one or more processors of said computing system causes a method to be performed, the method comprising: caching information targeted for said storage device into said non volatile region of a system memory and not writing the information through into the storage device.
18. The computer system of claim 17 further comprising leaving said information within said non volatile region of system memory and not transferring said information from said non volatile region of system memory to said storage device as part of a power down cycle of a computing system having said device driver and said storage device.
19. The computer system of claim 18 wherein said device driver is a filter driver.
20. The computer system of claim 17 wherein said device driver does not communicate with a lower, separable device driver in order to access said storage device.
21. The computer system of claim 17 wherein said system memory is a multi-level system memory.
22. The computer system of claim 17 wherein said non volatile region of system memory is composed of any of: a phase change memory; a ferro-electric memory; a magnetic memory; a spin transfer torque memory; a resistor memory; an Memristor memory.
23. The computer system of claim 17 wherein said method further comprises informing a user that said storage device is operating in a power-fail-safe mode.
24. The computer system of claim 17 further comprising permitting a user to over-ride a default write-back caching mode in favor of a write-through mode.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201680018802.2A CN107430547A (en) | 2015-03-27 | 2016-02-10 | Failure safe write back cache pattern device for non-volatile memory device drives |
| KR1020177023840A KR20170130386A (en) | 2015-03-27 | 2016-02-10 | Fault-safe write back caching mode device drivers for non-volatile storage devices |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/671,871 US20160283385A1 (en) | 2015-03-27 | 2015-03-27 | Fail-safe write back caching mode device driver for non volatile storage device |
| US14/671,871 | 2015-03-27 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2016160136A1 true WO2016160136A1 (en) | 2016-10-06 |
Family
ID=56976374
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2016/017339 Ceased WO2016160136A1 (en) | 2015-03-27 | 2016-02-10 | Fail-safe write back caching mode device driver for non volatile storage device |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20160283385A1 (en) |
| KR (1) | KR20170130386A (en) |
| CN (1) | CN107430547A (en) |
| WO (1) | WO2016160136A1 (en) |
Families Citing this family (52)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10163479B2 (en) | 2015-08-14 | 2018-12-25 | Spin Transfer Technologies, Inc. | Method and apparatus for bipolar memory write-verify |
| US10192601B2 (en) | 2016-09-27 | 2019-01-29 | Spin Transfer Technologies, Inc. | Memory instruction pipeline with an additional write stage in a memory device that uses dynamic redundancy registers |
| US10818331B2 (en) | 2016-09-27 | 2020-10-27 | Spin Memory, Inc. | Multi-chip module for MRAM devices with levels of dynamic redundancy registers |
| US10437491B2 (en) | 2016-09-27 | 2019-10-08 | Spin Memory, Inc. | Method of processing incomplete memory operations in a memory device during a power up sequence and a power down sequence using a dynamic redundancy register |
| US10628316B2 (en) | 2016-09-27 | 2020-04-21 | Spin Memory, Inc. | Memory device with a plurality of memory banks where each memory bank is associated with a corresponding memory instruction pipeline and a dynamic redundancy register |
| US10437723B2 (en) * | 2016-09-27 | 2019-10-08 | Spin Memory, Inc. | Method of flushing the contents of a dynamic redundancy register to a secure storage area during a power down in a memory device |
| US10460781B2 (en) | 2016-09-27 | 2019-10-29 | Spin Memory, Inc. | Memory device with a dual Y-multiplexer structure for performing two simultaneous operations on the same row of a memory bank |
| US10360964B2 (en) | 2016-09-27 | 2019-07-23 | Spin Memory, Inc. | Method of writing contents in memory during a power up sequence using a dynamic redundancy register in a memory device |
| US10446210B2 (en) | 2016-09-27 | 2019-10-15 | Spin Memory, Inc. | Memory instruction pipeline with a pre-read stage for a write operation for reducing power consumption in a memory device that uses dynamic redundancy registers |
| US10192602B2 (en) | 2016-09-27 | 2019-01-29 | Spin Transfer Technologies, Inc. | Smart cache design to prevent overflow for a memory device with a dynamic redundancy register |
| US10546625B2 (en) | 2016-09-27 | 2020-01-28 | Spin Memory, Inc. | Method of optimizing write voltage based on error buffer occupancy |
| US10366774B2 (en) | 2016-09-27 | 2019-07-30 | Spin Memory, Inc. | Device with dynamic redundancy registers |
| US10489245B2 (en) | 2017-10-24 | 2019-11-26 | Spin Memory, Inc. | Forcing stuck bits, waterfall bits, shunt bits and low TMR bits to short during testing and using on-the-fly bit failure detection and bit redundancy remapping techniques to correct them |
| US10481976B2 (en) | 2017-10-24 | 2019-11-19 | Spin Memory, Inc. | Forcing bits as bad to widen the window between the distributions of acceptable high and low resistive bits thereby lowering the margin and increasing the speed of the sense amplifiers |
| US10529439B2 (en) | 2017-10-24 | 2020-01-07 | Spin Memory, Inc. | On-the-fly bit failure detection and bit redundancy remapping techniques to correct for fixed bit defects |
| US10656994B2 (en) | 2017-10-24 | 2020-05-19 | Spin Memory, Inc. | Over-voltage write operation of tunnel magnet-resistance (“TMR”) memory device and correcting failure bits therefrom by using on-the-fly bit failure detection and bit redundancy remapping techniques |
| WO2019133223A1 (en) * | 2017-12-27 | 2019-07-04 | Spin Transfer Technologies, Inc. | A method of flushing the contents of a dynamic redundancy register to a secure storage area during a power down in a memory device |
| US10811594B2 (en) | 2017-12-28 | 2020-10-20 | Spin Memory, Inc. | Process for hard mask development for MRAM pillar formation using photolithography |
| US10395712B2 (en) | 2017-12-28 | 2019-08-27 | Spin Memory, Inc. | Memory array with horizontal source line and sacrificial bitline per virtual source |
| US10360962B1 (en) | 2017-12-28 | 2019-07-23 | Spin Memory, Inc. | Memory array with individually trimmable sense amplifiers |
| US10395711B2 (en) | 2017-12-28 | 2019-08-27 | Spin Memory, Inc. | Perpendicular source and bit lines for an MRAM array |
| US10891997B2 (en) | 2017-12-28 | 2021-01-12 | Spin Memory, Inc. | Memory array with horizontal source line and a virtual source line |
| US10424726B2 (en) | 2017-12-28 | 2019-09-24 | Spin Memory, Inc. | Process for improving photoresist pillar adhesion during MRAM fabrication |
| US10367139B2 (en) | 2017-12-29 | 2019-07-30 | Spin Memory, Inc. | Methods of manufacturing magnetic tunnel junction devices |
| US10424723B2 (en) | 2017-12-29 | 2019-09-24 | Spin Memory, Inc. | Magnetic tunnel junction devices including an optimization layer |
| US10886330B2 (en) | 2017-12-29 | 2021-01-05 | Spin Memory, Inc. | Memory device having overlapping magnetic tunnel junctions in compliance with a reference pitch |
| US10546624B2 (en) | 2017-12-29 | 2020-01-28 | Spin Memory, Inc. | Multi-port random access memory |
| US10840436B2 (en) | 2017-12-29 | 2020-11-17 | Spin Memory, Inc. | Perpendicular magnetic anisotropy interface tunnel junction devices and methods of manufacture |
| US10840439B2 (en) | 2017-12-29 | 2020-11-17 | Spin Memory, Inc. | Magnetic tunnel junction (MTJ) fabrication methods and systems |
| US10784439B2 (en) | 2017-12-29 | 2020-09-22 | Spin Memory, Inc. | Precessional spin current magnetic tunnel junction devices and methods of manufacture |
| US10438995B2 (en) | 2018-01-08 | 2019-10-08 | Spin Memory, Inc. | Devices including magnetic tunnel junctions integrated with selectors |
| US10438996B2 (en) | 2018-01-08 | 2019-10-08 | Spin Memory, Inc. | Methods of fabricating magnetic tunnel junctions integrated with selectors |
| US10446744B2 (en) | 2018-03-08 | 2019-10-15 | Spin Memory, Inc. | Magnetic tunnel junction wafer adaptor used in magnetic annealing furnace and method of using the same |
| US11107978B2 (en) | 2018-03-23 | 2021-08-31 | Spin Memory, Inc. | Methods of manufacturing three-dimensional arrays with MTJ devices including a free magnetic trench layer and a planar reference magnetic layer |
| US10784437B2 (en) | 2018-03-23 | 2020-09-22 | Spin Memory, Inc. | Three-dimensional arrays with MTJ devices including a free magnetic trench layer and a planar reference magnetic layer |
| US11107974B2 (en) | 2018-03-23 | 2021-08-31 | Spin Memory, Inc. | Magnetic tunnel junction devices including a free magnetic trench layer and a planar reference magnetic layer |
| US10734573B2 (en) | 2018-03-23 | 2020-08-04 | Spin Memory, Inc. | Three-dimensional arrays with magnetic tunnel junction devices including an annular discontinued free magnetic layer and a planar reference magnetic layer |
| US10411185B1 (en) | 2018-05-30 | 2019-09-10 | Spin Memory, Inc. | Process for creating a high density magnetic tunnel junction array test platform |
| US10692569B2 (en) | 2018-07-06 | 2020-06-23 | Spin Memory, Inc. | Read-out techniques for multi-bit cells |
| US10559338B2 (en) | 2018-07-06 | 2020-02-11 | Spin Memory, Inc. | Multi-bit cell read-out techniques |
| US10600478B2 (en) | 2018-07-06 | 2020-03-24 | Spin Memory, Inc. | Multi-bit cell read-out techniques for MRAM cells with mixed pinned magnetization orientations |
| US10593396B2 (en) | 2018-07-06 | 2020-03-17 | Spin Memory, Inc. | Multi-bit cell read-out techniques for MRAM cells with mixed pinned magnetization orientations |
| US10650875B2 (en) | 2018-08-21 | 2020-05-12 | Spin Memory, Inc. | System for a wide temperature range nonvolatile memory |
| US10699761B2 (en) | 2018-09-18 | 2020-06-30 | Spin Memory, Inc. | Word line decoder memory architecture |
| US11621293B2 (en) | 2018-10-01 | 2023-04-04 | Integrated Silicon Solution, (Cayman) Inc. | Multi terminal device stack systems and methods |
| US10971680B2 (en) | 2018-10-01 | 2021-04-06 | Spin Memory, Inc. | Multi terminal device stack formation methods |
| US11107979B2 (en) | 2018-12-28 | 2021-08-31 | Spin Memory, Inc. | Patterned silicide structures and methods of manufacture |
| CN110941397B (en) * | 2019-11-22 | 2022-03-08 | 苏州浪潮智能科技有限公司 | Node mode adjustment method and related components when storage cluster BBU fails |
| US11494125B2 (en) | 2020-12-17 | 2022-11-08 | Western Digital Technologies, Inc. | Storage system and method for dual fast release and slow release responses |
| US12374886B2 (en) | 2023-08-08 | 2025-07-29 | Energy Vault, Inc. | Systems and methods for fault tolerant energy management systems configured to manage heterogeneous power plants |
| US12142916B1 (en) | 2023-08-08 | 2024-11-12 | Energy Vault, Inc. | Systems and methods for fault tolerant energy management systems configured to manage heterogeneous power plants |
| US12355236B2 (en) | 2023-08-08 | 2025-07-08 | Energy Vault, Inc. | Systems and methods for fault tolerant energy management systems configured to manage heterogeneous power plants |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140173190A1 (en) * | 2009-03-30 | 2014-06-19 | Sanjeev N. Trika | Techniques to perform power fail-safe caching without atomic metadata |
| WO2014142908A1 (en) * | 2013-03-14 | 2014-09-18 | Hewlett-Packard Development Company, L.P. | Multiversioned nonvolatile memory hierarchy for persistent memory |
| KR20150002139A (en) * | 2013-06-28 | 2015-01-07 | 세종대학교산학협력단 | Memory including virtual cache and management method thereof |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6725342B1 (en) * | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
| US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
| US8583865B1 (en) * | 2007-12-21 | 2013-11-12 | Emc Corporation | Caching with flash-based memory |
| JP4886866B2 (en) * | 2010-02-10 | 2012-02-29 | 株式会社バッファロー | Method for speeding up access to main storage device and storage device system |
| WO2015047348A1 (en) * | 2013-09-27 | 2015-04-02 | Intel Corporation | Cache operations for memory management |
-
2015
- 2015-03-27 US US14/671,871 patent/US20160283385A1/en not_active Abandoned
-
2016
- 2016-02-10 KR KR1020177023840A patent/KR20170130386A/en not_active Ceased
- 2016-02-10 CN CN201680018802.2A patent/CN107430547A/en active Pending
- 2016-02-10 WO PCT/US2016/017339 patent/WO2016160136A1/en not_active Ceased
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140173190A1 (en) * | 2009-03-30 | 2014-06-19 | Sanjeev N. Trika | Techniques to perform power fail-safe caching without atomic metadata |
| WO2014142908A1 (en) * | 2013-03-14 | 2014-09-18 | Hewlett-Packard Development Company, L.P. | Multiversioned nonvolatile memory hierarchy for persistent memory |
| KR20150002139A (en) * | 2013-06-28 | 2015-01-07 | 세종대학교산학협력단 | Memory including virtual cache and management method thereof |
Non-Patent Citations (2)
| Title |
|---|
| MEENAKSHI SUNDARAM BHASKARAN ET AL.: "Bankshot: Caching Slow Storage in Fast Non-Volatile Memory", PROCEEDINGS OF THE 1ST WORKSHOP ON INTERACTIONS OF NVM/FLASH WITH OPERATING SYSTEMS AND WORKLOADS (INFLOW '13, 2013, XP058050148 * |
| ZIQI FAN ET AL.: "H-ARC: A Non-Volatile Memory Based Cache Policy for Solid State Drives", PROCEEDINGS OF 30TH SYMPOSIUM ON MASS STORAGE SYSTEMS AND TECHNOLOGIES (MSST, 2 June 2014 (2014-06-02), pages 1 - 14, XP032620540 * |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20170130386A (en) | 2017-11-28 |
| CN107430547A (en) | 2017-12-01 |
| US20160283385A1 (en) | 2016-09-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20160283385A1 (en) | Fail-safe write back caching mode device driver for non volatile storage device | |
| US9852069B2 (en) | RAM disk using non-volatile random access memory | |
| US20170177482A1 (en) | Computing system having multi-level system memory capable of operating in a single level system memory mode | |
| CN113448504A (en) | Solid state drive with external software execution for implementing internal solid state drive operation | |
| CN107408079B (en) | Memory controller with coherent unit for multi-level system memory | |
| EP3839747B1 (en) | Multi-level memory with improved memory side cache implementation | |
| US20140089602A1 (en) | System cache with partial write valid states | |
| US20180032429A1 (en) | Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators | |
| JP2017138853A (en) | Information processor and program | |
| US10007606B2 (en) | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory | |
| US20170091099A1 (en) | Memory controller for multi-level system memory having sectored cache | |
| US20180095884A1 (en) | Mass storage cache in non volatile level of multi-level system memory | |
| US20170147429A1 (en) | Adjustable error protection for stored data | |
| 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 | |
| US10185501B2 (en) | Method and apparatus for pinning memory pages in a multi-level system memory | |
| US20170083443A1 (en) | Method and apparatus for pre-fetching data in a system having a multi-level system memory | |
| US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
| US10180796B2 (en) | Memory system | |
| US9396122B2 (en) | Cache allocation scheme optimized for browsing applications | |
| US20170109070A1 (en) | Memory system | |
| EP3506112A1 (en) | Multi-level system memory configurations to operate higher priority users out of a faster memory level | |
| US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
| JP2017068806A (en) | Information processing apparatus and information processing method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16773624 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 20177023840 Country of ref document: KR Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 16773624 Country of ref document: EP Kind code of ref document: A1 |