Improving floating-gate memory reliability by nanocrystal storage and pulsed tunnel programming