IP Library › Granted Patent US 9,710,335
Granted Patent B2
US 9,710,335 · App. 14/785,421 · Granted Jul 18, 2017

Versioned memory Implementation

Inventors: Doe Hyun Yoon (Palo Alto, CA); Terence P. Kelly (Palo Alto, CA); Jichuan Chang (Palo Alto, CA); Naveen Muralimanohar (Palo Alto, CA); Robert Schreiber (Palo Alto, CA); Parthasarathy Ranganathan (Palo Alto, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F11/1451G06F11/1072G06F11/1435G06F11/1471G11C29/52G06F3/0614G06F3/0628G06F2201/84
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,710,335
App. No.
14/785,421
Granted
Jul 18, 2017
Kind
B2
Abstract

According to an example, versioned memory implementation may include comparing a global memory version to a block memory version. The global memory version may correspond to a plurality of memory blocks, and the block memory version may correspond to one of the plurality of memory blocks. A subblock-bit-vector (SBV) corresponding to a plurality of subblocks of the one of the plurality of memory blocks may be evaluated. Based on the comparison and the evaluation, a determination may be made as to which level in a cell of one of the plurality of subblocks of the one of the plurality of memory blocks checkpoint data is stored.

Claims (71)

1. A method for versioned memory implementation, the method comprising:

comparing, by a processor, a global memory version to a block memory version, the global memory version corresponding to a plurality of memory blocks, and the block memory version corresponding to one of the plurality of memory blocks;

evaluating a subblock-bit-vector (SBV) corresponding to a plurality of subblocks of the one of the plurality of memory blocks; and

based on the comparison and the evaluation, determining in which level n a cell of one of the plurality of subblocks of the one of the plurality of memory blocks checkpoint data is stored.

2. The method of claim 1 , wherein the cell is one of a 1-bit cell (2LC) and a 2-bit cell (4LC).

3. The method of claim 1 , further comprising:

detecting an error state of data stored in the cell; and

reading the checkpoint data stored in the determined level in the cell to recover from the error state.

4. The method of claim 1 , further comprising:

receiving instructions to read data from a subblock of the one of the plurality of memory blocks;

determining if the block memory version is less than or equal to the global memory version; and

based on the determination that the block memory version is less than or equal to the global memory version, reading from a working version (WV) of the subblock.

5. The method of claim 1 , further comprising:

receiving instructions to read data from a subblock of the one of the plurality of memory blocks;

determining if the block memory version is greater than the global memory version; and

based on the determination that the block memory version is greater than the global memory version, further determining:

if a value for the SBV corresponding to the subblock is set, and based on the determination that the value for the SBV corresponding to the subblock is set, reading from a checkpoint version (CV) of the subblock,

if the value for the SBV corresponding to the subblock is not set, and based on the determination that the value for the SBV corresponding to the subblock is not set, reading from a working version (WV) of the subblock,

identifying subblocks of the one of the plurality of memory blocks for which corresponding values of the SBV are set,

for the identified subblocks, copying the CV of the identified subblocks to the WV of the identified subblocks, and

setting the block memory version to a previous global memory version.

6. The method of claim 1 , further comprising:

receiving instructions to write data to a subblock of the one of the plurality of memory blocks;

determining if the block memory version is less than the global memory version; and

based on the determination that the block memory version is less than the global memory version:

resetting values of the SBV,

copying the working version (WV) of the subblock to the checkpoint version (CV) of the subblock,

writing the received data into the WV of the subblock,

setting the block memory version to the global memory version, and

setting a value of the SBV corresponding to the subblock to a predetermined value.

7. The method of claim 1 , further comprising:

receiving instructions to write data to a subblock of the one of the plurality of memory blocks;

determining if the block memory version is equal to the global memory version; and

based on the determination that the block memory version is equal to the global memory version:

determining if a value of the SBV corresponding to the subblock is set, and based on the determination that the value of the SBV corresponding to the subblock is set, writing the received data into the working version (WV) of the subblock.

8. The method of claim 1 , further comprising:

receiving instructions to write data to a subblock of the one of the plurality of memory blocks;

determining if the block memory version is equal to the global memory version; and

based on the determination that the block memory version is equal to the global memory version:

determining if a value of the SBV corresponding to the subblock is not set, and based on the determination that the value of the SBV corresponding to the subblock is not set:

copying the working version (WV) of the subblock to the checkpoint version (CV) of the subblock,

writing the received data into the WV of the subblock, and

setting a value of the SBV corresponding to the subblock to a predetermined value.

9. The method of claim 1 , further comprising:

receiving instructions to write data to a subblock of the one of the plurality of memory blocks;

determining if the block memory version is greater than the global memory version; and

based on the determination that the block memory version is greater than the global memory version:

identifying subblocks of the one of the plurality of memory blocks for which corresponding values of the SBV are set, and for the identified subblocks, copying the checkpoint version (CV) of the identified subblocks to the working version (WV) of the identified subblocks,

setting values of the SBV to a predetermined value,

copying the WV of the subblock to the CV of the subblock, and

writing the received data into the WV of the subblock.

10. A non-transitory computer readable medium having stored thereon machine readable instructions to provide versioned memory implementation, the machine readable instructions, when executed, cause a computer system to:

compare, by a processor, a global memory version to a block memory version, the global memory version corresponding to a plurality of memory blocks, and the block memory version corresponding to one of the plurality of memory blocks;

evaluate a subblock-bit-vector (SBV) corresponding to a plurality of subblocks of the one of the plurality of memory blocks;

based on the comparison and the evaluation, determine in which level in a cell of one of the plurality of subblocks of the one of the plurality of memory blocks checkpoint data is stored;

detect an error state of data stored in the cell; and

read the checkpoint data stored in the determined level in the cell to recover from the error state.

11. The non-transitory computer readable medium of claim 10 , wherein the cell is one of a 1-bit cell (2LC) and a 2-bit cell (4LC).

12. A versioned memory implementation apparatus comprising:

a memory controller circuit to:

compare a global memory version to a block memory version, the global memory version corresponding to a plurality of memory blocks, and the block memory version corresponding to one of the plurality of memory blocks;

evaluate a subblock-bit-vector (SBV) corresponding to a plurality of subblocks of the one of the plurality of memory blocks; and

based on the comparison and the evaluation, determine in which level in a cell of one of the plurality of subblocks of the one of the plurality of memory blocks checkpoint data is stored.

13. The versioned memory implementation apparatus of claim 12 , wherein the cell is one of a 1-bit cell (2LC) and a 2-bit cell (4LC).

14. The versioned memory implementation apparatus of claim 12 , wherein the cell is a 1-bit cell (2LC), the memory controller circuit is further to:

divide rows of the 2LC into a plurality of sets;

designate one set of the plurality of sets as working versions (WVs);

designate another set of the plurality of sets as checkpoint versions (CVs); and

use the designated sets of the divided rows to implement versioned memory.

15. The versioned memory implementation apparatus of claim 14 , wherein the memory controller circuit is further to:

copy data through a row buffer used with the 2LC.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2017
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042189/0098 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2015
From: YOON, DOE HYUN; KELLY, TERENCE P.; CHANG, JICHUAN; MURALIMANOHAR, NAVEEN; SCHREIBER, ROBERT; RANGANATHAN, PARTHASARATHY
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 036820/0885 →
Continuity (1)
Related Publication 20160077922A1 · Mar 17, 2016