Patent ID: 8553474

Claim:
A method for storing data in a heterogeneous memory, the method comprising: receiving a write message and a write address corresponding to a block of memory cells, at least two of the memory cells supporting different data levels; determining physical characteristics of the memory cells; identifying virtual memories associated with the block of memory cells in response to the physical characteristics; performing for each of the virtual memories: generating a constraint vector that describes virtual cells in the virtual memory, the generating responsive to the physical characteristics of the physical memory cells, to previously generated constraint vectors, and to previously generated virtual write vectors; and calculating a virtual write vector in response to the constraint vector and the write message, the calculating including writing the write message, bit by bit, in order, into the virtual memory, skipping locations known to be stuck to a particular value as indicated by the constraint vector; combining the virtual write vectors into a write word; and outputting the write word to the block of memory cells.