Memory cell programming method and semiconductor device programming a plurality of memory block group simultaneously

A memory cell programming method is provided to improve programming speed by programming a plurality of memory block groups. In a memory cell programming method of programming M bit data in a plurality of memory blocks, a plurality of memory blocks is divided into a plurality of memory block groups. In a plurality of memory blocks, An i(i is the natural number less than M) number of bit is written in a plurality of memory block groups having memory block groups more than 2, and i+1 number of the bit in the memory block group more than 2.