NVDIMM adaptive access mode and smart partition mechanism
A system and method for using a Non-Volatile Dual In-Line Memory Module (NVDIMM) (110, 115) is disclosed. The NVDIMM (110, 115) can support two or more access modes. An application can specify which access mode is desired for an address space requested by the application. A Non-Volatile Memory (NVM) governor (150) can store an address mask and the access mode for the address space (305, 310, 315) in an NVM control register (155). When the application requests read or write access to an address (605), the NVM governor (150) can compare the requested address (605) with the address masks in the NVM control register (155), determine the access mode from the access mode corresponding to the matched address mask, and use that access mode to satisfy the request for the address (605).
Latest Samsung Electronics Patents:
- RADIO FREQUENCY SWITCH AND METHOD FOR OPERATING THEREOF
- ROBOT USING ELEVATOR AND CONTROLLING METHOD THEREOF
- DECODING APPARATUS, DECODING METHOD, AND ELECTRONIC APPARATUS
- DISHWASHER
- NEURAL NETWORK DEVICE FOR SELECTING ACTION CORRESPONDING TO CURRENT STATE BASED ON GAUSSIAN VALUE DISTRIBUTION AND ACTION SELECTING METHOD USING THE NEURAL NETWORK DEVICE
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 62/192,028, filed Jul. 13, 2015, which is incorporated by reference herein.
FIELDThis inventive concept relates to memory, and more particularly to a Non-Volatile Dual In-Line Memory Module (NVDIMM) that supports multiple access modes.
BACKGROUNDThe Non-Volatile Dual In-Line Memory Module (NVDIMM) places non-volatile memory into the memory channel in a Dual In-Line Memory Module (DIMM) form factor. But NVDIMM introduces a new wrinkle not generally found in DRAM. Whereas DIMMs normally only support byte-addressable storage (although DIMMs can support block-addressable storage with help from the operating system), NVDIMMs can support either byte-addressable or block-addressable storage.
A simple solution would be to force the NVDIMM to use only one addressing mode: that is, a particular NVDIMM functions only as either byte-addressable main memory/storage or block-addressable storage, not both. But this is a simplistic solution; and even as a simplistic solution, this approach does not work in all situations.
Because different applications can have different memory requirements, limiting an NVDIMM to a particular address mode can lead to suboptimal utilization of resources. One NVDIMM, using one access mode, might be overworked, while another NVDIMM, using a different address mode, might be underutilized. And this scenario assumes that a computer system includes multiple NVDIMMs. If the computer system includes only one NVDIMM, then an access mode not offered by that NVDIMM might be completely unavailable.
A need remains for a way to permit the use of multiple access modes in an NVDIMM.
Reference will now be made in detail to embodiments of the inventive concept, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth to enable a thorough understanding of the inventive concept. It should be understood, however, that persons having ordinary skill in the art may practice the inventive concept without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first module could be termed a second module, and, similarly, a second module could be termed a first module, without departing from the scope of the inventive concept.
The terminology used in the description of the inventive concept herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the inventive concept. As used in the description of the inventive concept and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. The components and features of the drawings are not necessarily drawn to scale.
Embodiments of the inventive concept can include a Non-Volatile Dual In-Line Memory Module (NVDIMM) with an adaptive access mode and smart partitioning mechanism. To implement the smart partitioning mechanism, a Non-Volatile Memory (NVM) governor can include hardware and/or software modules configured to allocate address spaces in the NVDIMM in either byte- or block-addressable mode, as requested by an application. The NVM governor can dynamically partition the NVDIMM into byte- and block-addressable portions at runtime according to application behaviors. The smart partition mechanism can also include an NVM control register, which can store which address ranges have which access modes.
The NVM governor can accept application requests for NVDIMM address space with a related access mode (applications can request more than one address space with different access modes). The NVM governor can store information in the NVM control register, such as an address mask and access mode corresponding to the requested address space and mode.
To process read and write requests to an address space, the NVM governor can check the address masks in the NVM control register, either individually or in parallel. When a match to the address space and access mode is found, the NVM governor can schedule the request with the selected access mode.
Processor 105 can also be coupled to storage 130. Storage 130 can be any desired storage, including technologies such as hard disk drives (HDDs), Solid State Drives (SSDs), and/or other non-volatile memory technologies. In addition, storage 130 can include a mix of different storage types: for example, both an HDD and an SSD. Finally, storage 130 can be connected to processor 105 in any desired manner, including a direct connection via a bus or through an interface to an external storage, such as Universal Serial Bus (USB) interface.
Processor 105 can support the operation of operating system 135. Operating system 135 can be any desired operating system, supporting the operation of only one application at a time or any number of applications in parallel. In addition, operating system 135 can support virtual machines, which provide each virtual machine the appearance of complete use of all resources within the computer system. In
Operating system 135 can include Non-Volatile Memory (NVM) governor 150. NVM governor 150 can manage the allocation of address spaces within NVDIMMs 110 and 115 and the processing of read/write requests from address spaces within NVDIMMs 110 and 115. Supporting the operation of NVM governor 150 is NVM control register 155, which can be stored in processor 105, or can be stored in a memory controller, among other possibilities. As described further below with reference to
Although
In addition, NVM governor 150 of
While the above example describes increasing the size of address spaces 305, 310, and 315, the size of address spaces 305, 310, and 315 can be shrunk in a similar manner. If the application indicates that it wants to release some unneeded memory and/or storage, that memory and/or storage can be considered unallocated by NVM governor 150 of
As will be described further below with reference to
The number of bits in an address mask can affect the size of address spaces 305, 310, and 315. For example, assume that an individual address includes 64 bits. If 48 bits are used for an address mask, then 16 (least significant) bits would be used to distinguish addresses within that address space. This would mean that address spaces 305, 310, and 315 stores 65,536 bits, or 8192 bytes, of data. If the application were to request that address space 305, 310, and/or 315 be expanded to store, for example, 16,777,216 bits, or 2,097,152 bytes, then the address mask could be reduced from 48 bits to 40 bits.
One consequence of how the length of the address mask can affect the size of address space 305, 310, and/or 315 is that address spaces 305, 310, and 315 are sized as powers of two. But just because the sizes of address spaces 305, 310, and 315 are powers of two does not mean that the application must be given access to the entire address spaces 305, 310, and 315, although the portion of address spaces 305, 310, and 315 to which the application lacks access might end up unusable. To avoid having unusable memory and/or storage, if an application requires additional memory and/or storage that cannot appropriately be achieved by expanding address spaces 305, 310, and 315 to a power of two in size, different address spaces 305, 310, and 315 of different sizes can be used (with additional entries in NVM control register 155 of
NVM governor 150 stores data to and accesses data from NVM control register 155. When NVM governor 150 uses allocation logic 405, NVM governor 150 can store an address mask and an access mode in NVM control register 155. Then, when NVM governor 150 receives a request to access an address, NVM governor 150 can use the address masks and access modes stored in NVM control register 155 to determine what access mode to use when accessing the requested address.
While
In
As described above, embodiments of the inventive concept consider two access modes: byte-addressable and block-addressable.
Two comments about block 910 are worth mentioning. First, establishing the byte-addressable access mode as the default access mode is a choice. But other access modes, such as the block-addressable access mode, can be considered the default access mode, in which case address masks associated with block-addressable address spaces can be omitted instead. Second, if NVDIMMs 110 and/or 115 only offer two access modes (such as byte-addressable address mode and block-addressable address mode), then the access mode can be omitted from NVM control register 155 of
The following discussion is intended to provide a brief, general description of a suitable machine or machines in which certain aspects of the inventive concept can be implemented. Referring to
The machine or machines can be controlled, at least in part, by input from conventional input devices, such as keyboards, mice, etc., as well as by directives received from another machine, interaction with a virtual reality (VR) environment, biometric feedback, or other input signal. As used herein, the term “machine” is intended to broadly encompass a single machine, a virtual machine, or a system of communicatively coupled machines, virtual machines, or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, etc., as well as transportation devices, such as private or public transportation, e.g., automobiles, trains, cabs, etc.
The machine or machines can include embedded controllers, such as programmable or non-programmable logic devices or arrays, Application Specific Integrated Circuits (ASICs), embedded computers, smart cards, and the like. The machine or machines can utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communicative coupling. Machines can be interconnected by way of a physical and/or logical network, such as an intranet, the Internet, local area networks, wide area networks, etc. One skilled in the art will appreciate that network communication can utilize various wired and/or wireless short range or long range carriers and protocols, including radio frequency (RF), satellite, microwave, Institute of Electrical and Electronics Engineers (IEEE) 802.11, Bluetooth®, optical, infrared, cable, laser, etc.
Embodiments of the present inventive concept can be described by reference to or in conjunction with associated data including functions, procedures, data structures, application programs, etc. which when accessed by a machine results in the machine performing tasks or defining abstract data types or low-level hardware contexts. Associated data can be stored in, for example, the volatile and/or non-volatile memory, e.g., RAM, ROM, etc., or in other storage devices and their associated storage media, including hard-drives, floppy-disks, optical storage, tapes, flash memory, memory sticks, digital video disks, biological storage, etc. Associated data can be delivered over transmission environments, including the physical and/or logical network, in the form of packets, serial data, parallel data, propagated signals, etc., and can be used in a compressed or encrypted format. Associated data can be used in a distributed environment, and stored locally and/or remotely for machine access.
Embodiments of the inventive concept can include a tangible, non-transitory machine-readable medium comprising instructions executable by one or more processors, the instructions comprising instructions to perform the elements of the inventive concepts as described herein.
Having described and illustrated the principles of the inventive concept with reference to illustrated embodiments, it will be recognized that the illustrated embodiments can be modified in arrangement and detail without departing from such principles, and can be combined in any desired manner. And, although the foregoing discussion has focused on particular embodiments, other configurations are contemplated. In particular, even though expressions such as “according to an embodiment of the inventive concept” or the like are used herein, these phrases are meant to generally reference embodiment possibilities, and are not intended to limit the inventive concept to particular embodiment configurations. As used herein, these terms can reference the same or different embodiments that are combinable into other embodiments.
The foregoing illustrative embodiments are not to be construed as limiting the inventive concept thereof. Although a few embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible to those embodiments without materially departing from the novel teachings and advantages of the present disclosure. Accordingly, all such modifications are intended to be included within the scope of this inventive concept as defined in the claims.
Embodiments of the invention can extend to the following statements, without limitation:
Statement 1. An embodiment of the inventive concept includes a system, comprising:
a Non-Volatile Dual In-Line Memory Module (NVDIMM) (110, 115);
a Non-Volatile Memory (NVM) governor (150) operative to allocate a first address space (305, 310, 315) for a first application (140) in the NVDIMM (110, 115) in a first access mode (520, 525, 530) and a second address space (305, 310, 315) for a second application (145) in the NVDIMM (110, 115) in a second access mode (520, 525, 530) and to store at least a first address mask (505, 510, 515) for the first address space (305, 310, 315) in a Non-Volatile Memory (NVM) control register (155), the first address mask (505, 510, 515) associated with associated with the first access mode (520, 525, 530).
Statement 2. An embodiment of the inventive concept includes a system according to statement 1, wherein the first access mode (520, 525, 530) is different from the second access mode (520, 525, 530).
Statement 3. An embodiment of the inventive concept includes a system according to statement 1, wherein:
the first access mode (520, 525, 530) includes a block-addressable mode; and
the second access mode (520, 525, 530) includes a byte-addressable mode.
Statement 4. An embodiment of the inventive concept includes a system according to statement 3, wherein:
the NVM control register (155) is operative to store a plurality of address masks (505, 510, 515), each of the plurality of address masks (505, 510, 515) associated with an address space (305, 310, 315) using the block-addressable mode; and
the NVM governor (150) is operative to treat any address space (305, 310, 315) for which no address mask is stored in the NVM control register (155) as an address space (305, 310, 315) using the byte-addressable mode.
Statement 5. An embodiment of the inventive concept includes a system according to statement 3, wherein:
the NVM control register (155) is operative to store a plurality of address masks (505, 510, 515), each of the plurality of address masks (505, 510, 515) associated with an address space (305, 310, 315) using the byte-addressable mode; and
the NVM governor (150) is operative to treat any address space (305, 310, 315) for which no address mask is stored in the NVM control register (155) as an address space (305, 310, 315) using the block-addressable mode.
Statement 6. An embodiment of the inventive concept includes a system according to statement 3, wherein the NVM control register (155) is operative to store a second address mask (505, 510, 515) for the second address space (305, 310, 315) the second address mask (505, 510, 515) associated with associated with the second access mode (520, 525, 530).
Statement 7. An embodiment of the inventive concept includes a system according to statement 3, wherein the NVM control register (155) is operative to store 16 address masks (505, 510, 515) and 16 access modes (520, 525, 530) to support 16 address spaces (305, 310, 315) in the NVDIMM (110, 115), each of the 16 address masks (505, 510, 515) being 48 bits in size.
Statement 8. An embodiment of the inventive concept includes a system according to statement 3, wherein the NVM governor (150) includes allocation logic (405) to allocate the address space (305, 310, 315) in the NVDIMM (110, 115) in either byte-addressable mode or block-addressable mode.
Statement 9. An embodiment of the inventive concept includes a system according to statement 3, wherein the NVM governor (150) includes:
byte-addressable logic (410) to access the first address space (305, 310, 315) using the byte-addressable mode; and
software (420) to emulate accessing the second address space (305, 310, 315) using the block-addressable mode, the software (420) using the byte-addressable logic (410).
Statement 10. An embodiment of the inventive concept includes a system according to statement 3, wherein the NVM governor (150) includes:
byte-addressable logic (410) to access the first address space (305, 310, 315) using the byte-addressable mode; and
block-addressable logic (415) to access the second address space (305, 310, 315) using the block-addressable mode.
Statement 11. An embodiment of the inventive concept includes a system according to statement 3, wherein the NVM governor (150) is operative to perform a parallel access check with all address masks (505, 510, 515) in the NVM control register (155) and schedule an address request using an access mode (520, 525, 530) associated with a matched address mask.
Statement 12. An embodiment of the inventive concept includes a system according to statement 3, wherein the NVM control register (155) is operative to associate each of the plurality of address masks (505, 510, 515) with one of any number of access modes (520, 525, 530).
Statement 13. An embodiment of the inventive concept includes a system according to statement 3, further comprising a processor (105) coupled to the NVDIMM (110, 115), the processor (105) including the NVM control register (155).
Statement 14. An embodiment of the inventive concept includes a system according to statement 13, further comprising an operating system (135) capable of running on the processor (105), the operating system (135) including the NVM governor (150).
Statement 15. An embodiment of the inventive concept includes a method, comprising:
receiving (705) a request to allocate an address space in a Non-Volatile Dual In-Line Memory Module (NVDIMM) (110, 115);
receiving (710) an access mode (520, 525, 530) for the requested address space, the access mode (520, 525, 530) drawn from a set including at least two access modes;
identifying (715) an address space (305, 310, 315) in the NVDIMM (110, 115); and
returning (725) the address space (305, 310, 315) as the requested address space.
Statement 16. An embodiment of the inventive concept includes a method according to statement 15, further comprising storing (720) an address mask for the address space (305, 310, 315) and the access mode (520, 525, 530) for the address space (305, 310, 315) in a Non-Volatile Memory (NVM) control register (155).
Statement 17. An embodiment of the inventive concept includes a method according to statement 16, wherein storing (720) an address mask for the address space (305, 310, 315) includes storing (910) only an address mask for the address space (305, 310, 315) if the access mode (520, 525, 530) for the address space (305, 310, 315) is a block-addressable mode.
Statement 18. An embodiment of the inventive concept includes a method according to statement 16, wherein storing (720) an address mask for the address space (305, 310, 315) includes storing (910) only an address mask for the address space (305, 310, 315) if the access mode (520, 525, 530) for the address space (305, 310, 315) is a byte-addressable mode.
Statement 19. An embodiment of the inventive concept includes a method according to statement 15, wherein receiving (710) an access mode (520, 525, 530) for the requested address space includes receiving (810) a block-addressable mode for the requested address space.
Statement 20. An embodiment of the inventive concept includes a method according to statement 15, wherein receiving (710) an access mode (520, 525, 530) for the requested address space includes receiving (805) a byte-addressable mode for the requested address space.
Statement 21. An embodiment of the inventive concept includes a method, comprising:
receiving (1005) a request to access an address space (305, 310, 315) from a Non-Volatile Dual In-Line Memory Module (NVDIMM) (110, 115);
determining (1010) an access mode (520, 525, 530) for the address space (305, 310, 315); and
scheduling (1015) the request to access the address space (305, 310, 315) from the NVDIMM using the access mode (520, 525, 530).
Statement 22. An embodiment of the inventive concept includes a method according to statement 21, wherein determining (1010) an access mode (520, 525, 530) for the address space (305, 310, 315) includes determining (1110) a block-addressable mode for the address space (305, 310, 315).
Statement 23. An embodiment of the inventive concept includes a method according to statement 21, wherein determining (1010) an access mode (520, 525, 530) for the address space (305, 310, 315) includes determining (1105) a byte-addressable mode for the address space (305, 310, 315).
Statement 24. An embodiment of the inventive concept includes a method according to statement 21, wherein determining (1010) an access mode (520, 525, 530) for the address space (305, 310, 315) includes determining (1010) the access mode (520, 525, 530) from a Non-Volatile Memory (NVM) control register (155) in a processor (105).
Statement 25. An embodiment of the inventive concept includes a method according to statement 24, wherein determining (1010) the access mode (520, 525, 530) from a NVM control register (155) includes:
attempting (1205) to match the address space (305, 310, 315) with an address mask in the NVM control register (155); and
determining (1215) the access mode (520, 525, 530) corresponding to the address mask in the NVM control register (155) that matches the address space (305, 310, 315).
Statement 26. An embodiment of the inventive concept includes a method according to statement 25, wherein attempting (1205) to match the address space (305, 310, 315) with an address mask in the NVM control register (155) includes comparing (1205) the address space (305, 310, 315) with each address mask in the NVM control register (155).
Statement 27. An embodiment of the inventive concept includes a method according to statement 26, wherein comparing (1205) the address space (305, 310, 315) with each address mask in the NVM control register (155) includes comparing (1205) the address space (305, 310, 315) with each address mask in the NVM control register (155) in parallel.
Statement 28. An embodiment of the inventive concept includes a method according to statement 25, wherein determining (1215) the access mode (520, 525, 530) from a NVM control register (155) further includes determining (1220) the access mode (520, 525, 530) as a byte-addressable mode if the address space (305, 310, 315) does not match an address mask in the NVM control register (155).
Statement 29. An embodiment of the inventive concept includes a method according to statement 25, wherein determining (1215) the access mode (520, 525, 530) from a NVM control register (155) further includes determining (1220) the access mode (520, 525, 530) as a block-addressable mode if the address space (305, 310, 315) does not match an address mask in the NVM control register (155).
Consequently, in view of the wide variety of permutations to the embodiments described herein, this detailed description and accompanying material is intended to be illustrative only, and should not be taken as limiting the scope of the invention. What is claimed as the invention, therefore, is all such modifications as may come within the scope and spirit of the following claims and equivalents thereto.
Claims
1. A system, comprising:
- a Non-Volatile Dual In-Line Memory Module (NVDIMM);
- a Non-Volatile Memory (NVM) governor operative to allocate a first address space for a first application in the NVDIMM in a first access mode and a second address space for a second application in the NVDIMM in a second access mode and to store at least a first address mask for the first address space in a Non-Volatile Memory (NVM) control register, the first address mask associated with the first access mode,
- wherein the first address space in the NVDIMM may be allocated using the first access mode responsive to a first allocation request and allocated using the second access mode responsive to a second allocation request,
- wherein the NVM control register does not store address masks for address spaces allocated using the second access mode; and
- wherein the NVM governor is operable to treat any address space for which no address mask is stored in the NVM control register as an address space using the second access mode.
2. A system according to claim 1, wherein the first access mode and the second access mode are each drawn from a set including a block-addressable mode and a byte-addressable mode.
3. A system according to claim 2, wherein the NVM governor includes:
- byte-addressable logic to access a byte-addressable address space using the byte-addressable mode; and
- software to emulate accessing a block-addressable address space using the block-addressable mode, the software using the byte-addressable logic.
4. A system according to claim 2, wherein the NVM governor includes:
- byte-addressable logic to access a byte-addressable address space using the byte-addressable mode; and
- block-addressable logic to access a block-addressable address space using the block-addressable mode.
5. A system according to claim 2, wherein the NVM governor is operative to perform a parallel access check with all address masks in the NVM control register and schedule an address request using an access mode associated with a matched address mask.
6. A system according to claim 2, further comprising a processor coupled to the NVDIMM, the processor including the NVM control register.
7. A system according to claim 6, further comprising an operating system capable of running on the processor, the operating system including the NVM governor.
8. A system according to claim 1, wherein the first access mode specifies how a first Input/Output (I/O) request reads or writes data from the first address space and the second access mode specifies how a second I/O request reads or writes data from the first address space.
9. A system according to claim 1, wherein the first address space includes a first size and the second address space includes a second size, where the first size is different from the second size.
10. A method, comprising:
- receiving a request to allocate an address space in a Non-Volatile Dual In-Line Memory Module (NVDIMM);
- receiving an access mode for the requested address space, the access mode drawn from a set including at least two access modes;
- identifying an address space in the NVDIMM;
- if the access mode is not a first access mode, storing an address mask for the address space and the access mode for the address space in a Non-Volatile Memory (NVM) control register;
- returning the address space as the requested address space; and
- treating any address space for which no address mask is stored in the NVM control register as an address space using the first access mode.
11. A method according to claim 10, wherein storing an address mask for the address space includes storing the address mask for the address space if the access mode for the address space is a block-addressable mode.
12. A method according to claim 10, wherein storing an address mask for the address space includes storing the address mask for the address space if the access mode for the address space is a byte-addressable mode.
13. A method according to claim 10, wherein:
- receiving a request to allocate an address space in a Non-Volatile Dual In-Line Memory Module (NVDIMM) includes receiving the request to allocate the address space in the NVDIMM from an application;
- receiving an access mode for the requested address space includes receiving the access mode for the requested address space from the application, the access mode drawn from a set including at least two access modes;
- identifying an address space in the NVDIMM includes allocating the address space in the NVDIMM using the access mode; and
- returning the address space as the requested address space includes returning the address space as the requested address space to the application, the address space designed to be accessed using the access mode.
14. A method according to claim 10, wherein the address space may be allocated using the first access mode of the at least two access modes responsive to a first allocation request and allocated using a second access mode of the at least two access modes responsive to a second allocation request.
15. A method according to claim 10, wherein each of the at least two access modes specifies how an Input/Output (I/O) request reads or writes data from the address space.
16. A method according to claim 10, wherein the address space includes a first size and a second address space in the NVDIMM includes a second size, where the first size is different from the second size.
17. A method, comprising:
- receiving a request to access an address space from a Non-Volatile Dual In-Line Memory Module (NVDIMM);
- attempting to match the address space with an address mask in a Non-Volatile Memory (NVM) control register, wherein the NVM control register stores an access mode corresponding to each address mask;
- if the address space does not match an address mask in the NVM control register, determining an access mode for the address space as a first access mode;
- if the address space matches an address mask in the NVM control register, determining the access mode for the address space as the access mode corresponding to the matched address mask from the NVM control register; and
- scheduling the request to access the address space from the NVDIMM using the access mode,
- wherein the address space is designed to be allocated using the access mode responsive to a first allocation request and allocated using a second access mode responsive to a second allocation request.
18. A method according to claim 17, wherein determining an access mode for the address space includes determining the access mode as one of a block-addressable mode and a byte-addressable mode for the address space.
19. A method according to claim 17, wherein determining an access mode for the address space from a Non-Volatile Memory (NVM) control register includes determining the access mode from the NVM control register in a processor.
20. A method according to claim 17, wherein attempting to match the address space with an address mask in the NVM control register includes comparing the address space with each address mask in the NVM control register.
21. A method according to claim 20, wherein comparing the address space with each address mask in the NVM control register includes comparing the address space with each address mask in the NVM control register in parallel.
22. A method according to claim 17, wherein the access mode specifies how a first Input/Output (I/O) request reads or writes data from the address space and the second access mode specifies how a second I/O request reads or writes data from the address space.
23. A method according to claim 17, wherein the address space includes a first size and a second address space includes a second size, where the first size is different from the second size.
24. A method, comprising:
- receiving a request to allocate an address space in a Non-Volatile Dual In-Line Memory Module (NVDIMM);
- receiving an access mode for the requested address space, the access mode drawn from a set including exactly two access modes;
- identifying an address space in the NVDIMM;
- if the access mode is not a first access mode, storing an address mask for the address space in a Non-Volatile Memory (NVM) control register;
- returning the address space as the requested address space,
- wherein the access mode may be determined responsive to whether or not the address mask is stored in the NVM control register.
25. A method according to claim 24, wherein storing an address mask for the address space includes storing the address mask for the address space if the access mode for the address space is a block-addressable mode.
26. A method according to claim 24, wherein storing an address mask for the address space includes storing the address mask for the address space if the access mode for the address space is a byte-addressable mode.
27. A method according to claim 24, wherein storing an address mask for the address space in a Non-Volatile Memory (NVM) control register includes storing the address mask and the access mode for the address space in the NVM control register.
6141739 | October 31, 2000 | Provence |
6496916 | December 17, 2002 | Fadavi-Ardekani |
8832408 | September 9, 2014 | Nazarian et al. |
8880777 | November 4, 2014 | Kim |
9396769 | July 19, 2016 | Chang |
20050251617 | November 10, 2005 | Sinclair et al. |
20060069849 | March 30, 2006 | Rudelic |
20060143396 | June 29, 2006 | Cabot |
20080250220 | October 9, 2008 | Ito |
20110060887 | March 10, 2011 | Thatcher |
20120011300 | January 12, 2012 | Hung |
20120185640 | July 19, 2012 | Hung |
20130117632 | May 9, 2013 | Fujinami |
20130275661 | October 17, 2013 | Zimmer |
20140181365 | June 26, 2014 | Fanning |
20140208016 | July 24, 2014 | Malik |
20160253123 | September 1, 2016 | Jacob |
20160321083 | November 3, 2016 | Costa |
20160378672 | December 29, 2016 | Dulloor |
20170068452 | March 9, 2017 | Xia |
Type: Grant
Filed: Dec 2, 2015
Date of Patent: Feb 6, 2018
Patent Publication Number: 20170017402
Assignee: SAMSUNG ELECTRONICS CO., LTD.
Inventors: Hongzhong Zheng (Sunnyvale, CA), Dimin Niu (Sunnyvale, CA)
Primary Examiner: Hal Schnee
Application Number: 14/957,568
International Classification: G06F 3/06 (20060101); G06F 12/02 (20060101); G11C 8/06 (20060101); G11C 16/08 (20060101);