A programming element for programming data into a plurality of
non-volatile memory cells of a non-volatile memory cell array, the data
being transferred to the non-volatile memory cell array in a data word
comprising a plurality of data items. The programming element comprises a
detection element for detecting at least a first data word and a second
data word which are to be transferred to the non-volatile memory cell
array, a determination element for determining the number of data items
in the first data word and the second data word that need a change of the
state of a respective non-volatile memory cell, a comparator element for
comparing the determined number of data items with a maximum number of
programmable data items using one programming pulse, a data word merge
control element for merging the first data word with the second data word
into a merged data word to be programmed into the non-volatile memory
cell array if the determined number is less or equal to the maximum
number, wherein the merged data word is to be programmed into the
non-volatile memory cells together using the same at least one
programming pulse.