همه چیز از ROM شروع شد. شرکت های تولید کننده ی قطعات نیمه هادی به دنبال حافظه ی غیرفرار و کوچکی بودند که بتوان داده هایی را بر روی آن ها ذخیره کرد. دستگاه های ذخیره ساز دائمی موجود در آن زمان بسیار بزرگ و بدقلق بودند. با معرفی ROM حافظه های دائمی الکترونیکی ای بوجود آمد که می توانست داده ها را ذخیره و نگه داری کند. این پیشرفت بسیار بزرگ و چشم گیر بود اما مشکل اصلی آن این بود که حافظه باید در حین پروسه ی ساخت پُر می شد، بدین معنا که داده ی هدف باید در حین پروسه ی ساخت حافظه معلوم باشد و همان لحظه و توسط شرکت سازنده ی چیپ حافظه بر روی آن ها نوشته شود. عملا این محدودیت این نوع حافظه را محدود به استفاده در محصولاتی می کند که اولا نهایی شده باشند، در ثانی تعداد بسیار زیادی از آن ها تولید شود و ثالثا به هیچ وجه قصد بازنویسی در آن حافظه را نداشته باشیم. (مثلا یک اسباب بازی)
طبیعی است که با پیشرفت تکنولوژی، مهندسین الکترونیک به این فکر افتادند تا به نوعی مشکل نوشتن در این نوع حافظه را حل کنند. آن ها حافظه های PROM را ساختند. در این نوع حافظه نوشتن در حافظه دیگر در مرحله ی تولید چیپ صورت نمی گیرد و شرکت مصرف کننده می تواند این حافظه را خریداری کرده و به کمک دستگاه Programmer ای که در اختیار دارد، در کمپانی خود حافظه را به دلخواه خودش پُر کند. اما به محض نوشتن بر روی آن دیگر هیچ تغییری نمی توان در آن ایجاد کرد.
نسل بعدی از حافظه های ROM این مشکل را نیز حل کردند. این نسل EPROM ها بودند که این توانایی را داشتند که با استفاده از نور ماورای بنفش بتوان محتوای آن ها را پاک کرده و مجددا در آن ها نوشت. این حافظه ها یک قطعه ی شیشه ای تمیز بر روی خود داشتند که نور ماورا بنفش با عبور از آن ناحیه حافظه را پاک می کرد. طبیعی است که برای جلوگیری از ورود ناخواسته ی اشعه های فرابنفشی که از خورشید به سطح زمین می رسد باید پس از پاک کردن حافظه و نوشتن بر روی آن این قطعه ی شیشه ای را با چیزی پوشاند.
نسل بعدی حافظه های ROM، حافظه های EEPROM بود. این حافظه ها می توانستند با استفاده از الکتریسه (به جای نور ماورای بنفش) پاک شوند. لذا استفاده از آن ها بسیار راحت تر شد. اما این خانواده نیز مثل نسل های قبلی خود گران قیمت و کُند بود.
در 1984 توشیبا حافظه ی جدیدی به اسم Flash را معرفی کرد که مشکلات ROM را بهبود داد و به سرعت به حافظه ای فراگیر تبدیل شد. این حافظه در واقع گونه ی خاصی از EEPROM است با این تفاوت که به جای این که حافظه را بایت به بایت در دسترس قرار دهد به صورت بلوکی با آن برخورد می کند. (دقیقا مثل هارد دیسک ها)
به طور خلاصه می توان گفت:
1- حافظه ی Flash نوع خاصی از EEPROM است.
2- حافظه ی Flash از نوع حافظه ی NAND است ولی EEPROM از نوع NOR است.
3- حافظه ی Flash به صورت بلوکی به حافظه ارجاع می دهد ولی حافظه ی EEPROM به صورت بایتی.
4- حافظه ی Flash بسیار ارزان تر از EEPROM است و لذا مواقعی که حافظه ی اندکی مورد نیاز است از EEPROM استفاده می شود. (در حد چند بایت یا چند کیلو بایت)