Patent ID: 8060718
Filing Date: 2011-11-15
Classification: G06F

Abstract:
1. A processor-implemented method of updating a storage class memory that includes a first plurality of storage class memory blocks to maintain a generally even wear across the first plurality of storage class memory blocks, the method comprising: maintaining an update count for a first storage class memory block, where the first storage class memory block uses a material selected from the group consisting of chalcogenides, perovskites, phase change materials, and magnetic bubbles, and the first storage class memory block is one of the first plurality of storage class memory blocks, wherein upon the update count reaching a predetermined wear level threshold: incrementing a wear counter each time the first storage class memory block is updated, wherein the wear counter is logically divided into segments including a wear level group segment, a higher count segment, and a lower count segment; wherein the lower count segment counts a number of updates; wherein the wear level group segment is incremented when the lower count segment carries into the higher count segment when the wear counter is incremented; setting a wear value such that the first storage class memory block is changed after a predetermined number of write cycles; comparing a current wear level group segment of the first storage class memory block to a plurality of current wear level group segments of at least some of other of the first plurality of storage class memory blocks, to determine whether to update in place or move first data on the first storage class memory block to a less-worn second storage class memory block to provide even wear on the first and second storage class memory blocks; wherein updating in place comprises updating the first data without moving the first data where the wear level group segment of the first storage class memory block is greater than or equal to a wear level group segment of a current group plus one, wherein a minimum of four wear level group segments are specified; identifying second data in the first storage class memory block that is updated infrequently; exchanging third data in the first storage class memory block that causes high wear with fourth data that causes lower wear; moving the second data that is updated infrequently to a more-worn third storage class memory block to provide even wear on the first and third storage class memory blocks; moving the second data that is updated infrequently, the second data being moved at a lower rate than a rate of the first data that is updated frequently; moving read-only data, the read-only data being moved at a lower rate than the rate of the first data that is updated frequently; associating an address table to the first plurality of storage class memory blocks; scanning the address table in response to one of the first storage class memory blocks reaching the number of updates in the lower count segment and a storage class memory block count in a least worn empty storage class memory block being below a predetermined minimum value; performing background processing that minimizes a frequency of moving data with low update frequency by updating in place until a predetermined threshold is reached; and converting the current group plus one to the current group, and the current group plus two to the current group plus one, each time the second data that is updated infrequently has completed a move, and an empty block count is zero.