حافظه فلش

درایو یک یواس‌بی فلش. قطعه طرف چپ حافظه فلش و میکروکنترولر در طرف راست است.
حافظه فلش یا فلش مموری ، حافظه غیر فرار ذخیره‌سازی رایانه‌ای است که می‌توان آن را به صورت الکتریکی پاک و دوباره برنامه‌ریزی کرد. این فناوری عمدتا در کارت‌های حافظه و یواس‌بی استفاده می‌شود و برای ذخیره‌سازی عمومی و انتقال داده‌ها بین رایانه‌ها و دیگر محصولات دیجیتال به کار می‌رود. این نوع خاصی از EEPROM (حافظه فقط خواندنی پاک‌شدنی و قابل برنامه‌ریزی به صورت الکتریکی) است که در قطعات بزرگ، پاک و برنامه‌ریزی شده‌است.
از آنجا که حافظه فلش غیر فرار است، هیچ نیرویی برای نگه داشتن اطلاعات درون قطعه مورد نیاز نیست.
علاوه بر این، این حافظه به ارائه گذاشتن سریع اطلاعات در هر دسترسی (اگر چه به اندازه حافظه فرار دینامیک دسترسی تصادفی (DRAM)، که برای حافظه اصلی در رایانه‌ها به کار می‌رود سریع نیست) ولی مقاوم‌تر از دیسک سخت (Hard disk) در برابر شوک حرکتی می‌باشد.
دو نوع حافظه فلش وجود دارد که بر حسب منطق‌های NAND , NOR نام‌گذاری شده‌اند سلول‌های مستقل حافظه فلش مشخصات درونی مشابهی با دروازه مربوطه را نشان می‌دهند. در حالی که EPROMها باید قبل از نوشته شدن به‌طور کامل پاک شوند، فلش‌های نوع NANDمی‌توانند هم‌زمان در بلوک‌هایی که معمولا از کل دستگاه کوچکترند خوانده و نوشته شوند. فلش‌های NOR به یک کلمه ماشینی تنها (بایت) اجازه می‌دهند بر روی یک محل پاک شده بدون وابستگی نوشته یا خواند شوند.
نوع NAND به صورت عمده در کارت‌های حفظ فلش‌های یواس‌بی و درایوهای حالت جامد و محصولات مشابه برای ذخیره معمولی و انتقال داده استفاده می‌شود. فلش‌های NAND, NOR معمولا برای ذخیره پیکر بندی داده‌ها در بسیاری از محصولات دیجیتالی استفاده می‌شوند مسئولیتی که در گذشته به وسیله EPROMها یا حافظه استاتیک باتری دار ممکن می‌شد. یکی از معایب حافظه فلش تعداد محدود چرخه‌های خواندن یا نوشتن در یک بلوک خاص است.
فلش‌های NOR و NAND نام خود را از روابط داخلی بین سلول‌های حافظه‌شان می‌گیرند. مشابه گیت نند، در فلش‌های نند هم گیت‌ها در سری‌هایی به هم متصل هستند. در یک گیت NOR ترانزیستورها به‌طور موازی به هم متصل هستند و مانند آن در فلش NOR سلول‌ها به‌طور موازی به خطوط بیت متصل هستند و به همین دلیل است که سلول‌ها می‌توانند جداگانه و مستقل، خوانده و برنامه‌نویسی شوند. در مقایسه با فلش‌های NOR جایگزین کردن یک ترانزیستور با گروه‌های سری لینک شده یک سطح آدرس دهی اضافی به آن‌ها می‌افزاید. در حالی که فلش‌های NOR می‌توانند حافظه را با صفحه و سپس کلمه آدرس دهی کنند. فلش‌های NAND می‌توانند آن را با صفحه، کلمه و بیت آدرس دهی کنند.
انواع حافظه فلش
فلش NOR
هر سلول در فلش NOR یک بخش پایانی دارد که مستقیما به زمین متصل است و بخش پایانی دیگری که مستقیما به یک خط بیت متصل است. این ترتیب به این دلیل NOR نامید شده‌است که مثل یک گیت NOR عمل می‌کند. وقتی یکی از خطوط کلمه‌ها High شود ترانزیستور ذخیره‌کننده مربوطه عمل می‌کند تا خط بیت خروجی را Low کند.
فلش NAND
فلش NAND نیز از ترانزیستورهایی با گیت شناور استفاده می‌کند اما آن‌ها به صورتی به هم متصل اند که گیت NAND را شبیه‌سازی می‌کنند. تعداد زیادی از ترانزیستورها به صورت سری متصل اند و خط بیت تنها در صورتی Low می‌شود که تمامی خطوط کلمه‌ها High شده باشند. سپس این گروه‌ها به وسیله تعداد اضافی ترانزیستور به یک آرایه با استایل NOR متصل شده‌اند مشابه حالتی که ترانزیستورهای تنها در یک فلش NOR به هم ارتباط پیدا کرده‌اند.
فلش نند عمودی (Vertical NAND)
در حافظه نند عمودی (Vertical NAND)، سلول‌های حافظه بطور عمودی روی هم قرار می‌گیرند. با این کار بدون احتیاج به سلول‌هایی کوچکتر می‌توان تراکم سطحی بالاتری برای سلول‌ها ایجاد کرد.
ساختار
در ساختاری که در نند عمودی استفاده شده‌است، بار الکتریکی روی یک فیلم سیلیکون نیترید ذخیره می‌شود. فیلم‌های سیلیکون نیترید قابلیت این را دارند که ضخیم‌تر شوند و بار بیشتری بر روی خود جا دهند و علاوه بر آن مقاومت بالایی دارند.
بارهای الکتریکی نمی‌توانند به‌طور عمودی در واسطه سیلیکون نیترید حرکت کنند، در نتیجه سلول‌های حافظه در لایه‌های عمودی متفاوت، با هم هیچ تداخلی ندارند. هر مجموعه عمودی، از نظر الکتریکی مشابه گروه‌های متصل به همی که در ساختار نند معمولی استفاده می‌شوند، می‌باشد.
عملکرد
از سال ۲۰۱۳ عملیات نوشتن و خواندن توسط حافظه نند عمودی، با سرعتی معادل دو برابر سرعت حافظه نند معمولی اتفاق می‌افتد. از طرفی حافظه نند عمودی با مصرف تنها ۵۰ درصد انرژی مصرفی حافظه نند معمولی تا ۱۰ برابر آن عمر می‌کند.
محدودیت‌های حافظه فلش
پاک کردن بلوکی
در حافظه فلش هر یک از بیت‌ها جداگانه قابل برنامه‌نویسی یا خواندن می‌باشند، اما اگر بخواهیم یک بیت دلخواه را پاک کنیم کل بلوک پاک می‌شود. یعنی وقتی حتی تنها یک بیت صفر شده‌است برای یک کردن آن بیت باید کل بلوک را یک کنیم.
حافظه فلش (بطور خاص فلش NOR)، به ما قابلیت اجرای عملیات دوباره نویسی و پاک کردن، همراه با دسترسی تصادفی و دلخواه نمی‌دهد.
تحلیل حافظه
حافظه فلش تعداد محدودی حلقه نوشتن و پاک کردن را پشتیبانی می‌کند. بیشتر فلش‌های در دسترس ما، به‌طور تضمینی قبل از اینکه تحلیل رفتن حافظه کیفیت آن را پایین بیاورد، حدود ۱۰۰۰۰۰ حلقه نوشتن و پاک کردن را پوشش می‌دهند.
برای کمتر کردن آثار این مشکل در بعضی از سیستم‌ها از روشی استفاده می‌شود که در آن با شمارش تعداد عملیات نوشتن و بازنگاری پویای بلوک‌ها جهت توزیع عملیات نوشتن در بین بخش‌های مختلف، باعث پایین آمدن سطح تحلیل حافظه می‌شویم. این روش یکسان کردن تحلیل نام‌گذاری شده‌است.
در سال ۲۰۱۲، مهندسان تایوانی در IEEE، نشست دستگاه‌های الکترونی ۲۰۱۲، اعلام کردند که با استفاده از پروسه‌ای به نام خوداصلاحی، موفق شدند تعداد چرخه‌های حافظه فلش نند را از ۱۰۰۰۰ به ۱۰۰ میلیون افزایش دهند. نتیجه این پروسه این است که یک تراشه می‌تواند بارها و بارها پاک و دوباره‌نویسی شود، بدون اینکه از کار بیفتد.
اختلال در خواندن
اختلال در خواندن وقتی اتفاق می‌افتد که در طول عملیات خواندن یک بیت یا بیشتر تغییر کنند. اختلال در خواندن درون بلوکی که در حال خوانده شدن است، اما در صفحه یا صفحات دیگر که در حال خوانده شدن نیستند، اتفاق می‌افتد. اگر تعداد زیادی عملیات خواندن (حدود چند ۱۰۰۰۰۰ یا چند میلیون) قبل از انجام عملیات پاک کردن انجام دهیم، این اختلال ممکن است اتفاق بیفتد. بعد از وقوع این اختلال باید بلوکی را که اختلال در آن اتفاق افتاده‌است را پاک کنیم و دوباره داده‌ها را در آن بنویسیم.