A nonvolatile memory, comprising: an array of memory cells organized into a plurality of blocks, each block being a plurality of memory cells that are erasable together; said array being partitioned into a first group of blocks and a second group of blocks; a group of read/write circuits for reading or programming in the memory array a corresponding page of memory cells in parallel; and a controller for controlling writing data in a fragment of one or more partial page selectively either to the first group of blocks in granularity of a page or to the second group of blocks in granularity of one or more partial page, wherein, said first group of blocks having first-group pages that are each once programmable in between erasure; said second group of blocks having second-group pages that are each multi-time programmable with a partial page being once programmable each time; and the selection to write to either first or second group is a function of predefined attributes of the data and predefined states of said first group of blocks and said second group of blocks, characterised in that: the memory cells in the first-group pages are configured to each store more than one bit of data; and the memory cells in the second-group pages are configured to each store one bit of data; wherein said predefined state of said first group of blocks includes whether or not the capacity of said first group of blocks has reached a predefined threshold; and wherein said predefined state of said second group of blocks includes whether or not the capacity of said second group of blocks has reached a predefined threshold. an array of memory cells organized into a plurality of blocks, each block being a plurality of memory cells that are erasable together; said array being partitioned into a first group of blocks and a second group of blocks; a group of read/write circuits for reading or programming in the memory array a corresponding page of memory cells in parallel; and a controller for controlling writing data in a fragment of one or more partial page selectively either to the first group of blocks in granularity of a page or to the second group of blocks in granularity of one or more partial page, wherein, said first group of blocks having first-group pages that are each once programmable in between erasure; said second group of blocks having second-group pages that are each multi-time programmable with a partial page being once programmable each time; and the selection to write to either first or second group is a function of predefined attributes of the data and predefined states of said first group of blocks and said second group of blocks, characterised in that: the memory cells in the first-group pages are configured to each store more than one bit of data; and the memory cells in the second-group pages are configured to each store one bit of data; wherein said predefined state of said first group of blocks includes whether or not the capacity of said first group of blocks has reached a predefined threshold; and wherein said predefined state of said second group of blocks includes whether or not the capacity of said second group of blocks has reached a predefined threshold. the memory cells in the first-group pages are configured to each store more than one bit of data; and the memory cells in the second-group pages are configured to each store one bit of data; wherein said predefined state of said first group of blocks includes whether or not the capacity of said first group of blocks has reached a predefined threshold; and wherein said predefined state of said second group of blocks includes whether or not the capacity of said second group of blocks has reached a predefined threshold.