به هر وسیله که توانایی نگهداری اطلاعات را داشته باشد، حافظه میگویند. حافظه یکی از قسمتهای ضروری و اساسی یک رایانه به شمار میرود. همان طور که انسان برای نگهداری اطلاعات مورد نیاز خود علاوه بر حافظه درونی خویش از ابزارهای گوناگون دیگری همانند کاغذ، تخته سیاه، نوار ضبط صوت، نوار ویدیو و ... استفاده میکند رایانه هم میتواند از انواع گوناگون حافظه استفاده کند. به طور کلی دو نوع حافظه داریم : ۱-حافظه «اصلی» که به آن «حافظه اولیه و «درونی» میگویند . ۲-حافظه «جانبی» که به آن «حافظه ثانویه» و «کمکی» میگویند .
الف ) حافظه اصلی
کلیه دستورالعملها و داده ها، برای این که مورد اجرا و پردازش قرارگیرند نخست باید به حافظه اصلی رایانه منتقل گردند و نتایج پردازش نیز به آنجا فرستاده شود. حافظه اصلی رایانه از جنس نیمه رسانا ( الکترونیکی ) است و در نتیجه، سرعت دسترسی به اطلاعات موجود در آنها در مقایسه با انواع دیگر حافظه بالاست و قیمت آن نیز گران تر است. حافظههای اصلی نیز به دو دسته تبدیل میشوند(ROM،RAM) .
= حافظه فقط خواندنی( ROM)
CPU معمولاً اطلاعات موجود در این نوع حافظه را تغییر نمیدهد، بلکه فقط میتواند آن را بخواند. هنگام خاموش شدن نیز این اطلاعات از بین نمیرود و ثابت می ماند. برنامه BIOS که وظیفه آزمایش و راه اندازی قسمتهای گوناگون رایانه را به هنگام روشن شدن سیستم برعهده دارد در این نوع حافظه قرار داده میشود.
ساخت مدارهای منطقی به کمک ROM و تراشههای همانند
ROM و ساختارهای همانند PROM وRAM از اعضای مهم خانواده تراشههای قابل برنامه ریزی میباشند. توسط ROM هر نوع تابع ترکیبی را میتوان به وجود آورد زیرا که این تراشه در برگیرنده تمام عبارات حداقلی (Minterm ) میباشد ولی نکتهای که نباید از نظر دور داشت این است که استفاده از ROM اضافه بر کاهش سرعت سیستم در خیلی از مواقع ممکن است نوعی به هدر دادن منابع بوده و ازلحاظ اقتصادی مقرون به صرفه نباشد چون کمتر مدارهایی وجود دارند که احتیاج به استفاده از چنین آرایههای بزرگی داشته باشند. در موارد زیر استفاده از حافظه های یاد شده به منظور پیاده سازی مدارهای منطقی میتواند مفید و مقرون به صرفه باشد.
الف: زمانی که مسا له در ابتدا به صورت جدول درستی بیان شده باشد زیرا که محتویات جدول مذکور مستقیماً قابل پیاده شدن بر روی ROM میباشد وهیچ نیازی به پردازش و ساده سازی صورت مساله نخواهد بود. جداول تبدیل انواع رمزها به یکدیگر(Look Up Tables) و کنترلرهای ریز برنامهای مثالهای مناسبی از این نوع مدارهای منطقی میباشند. در یک چنین حالاتی درست نخواهد بود که ساختاری که مستقیماً قابل پیاده شدن بر روی ROM است را به هم زده و پردازشهای گوناگون بر روی آن انجام دهیم به خاطر آن که بخواهیم جواب مساله را با استفاده از دریچهها طراحی کرده و یا به عبارتی آن را به صورت مجموع حاصلضربهای ساده شده درآوریم.
ب: زمانی که تابع مورد نظر احتیاج به عوامل حاصل ضربی خیلی زیاد داشته که بیش از امکانات PLDهای موجود باشد یک چنین حالاتی معمولاً در مورد توابع حسابی پیش میآید.
ج: مواردی که به منظور ساخت بلوکهای منطقی تغییر پذیر بوده و تعداد عوامل حاصلضربی مورد نیاز در تغییرات آینده قابل پیش بینی نباشد، در این مواقع استفاده ازحافظهها یکی از راه حلهای مناسب خواهد بود.
همان گونه که یاد آور شدیم، کاربرد مورد الف در تبدیل رمزها به همدیگر است. مثلا رایانههای بزرگ غالبا دادههای خود را به صورت رمز EBCDIC به سمت دستگاههای چاپگر می فرستند. حال اگر بنا باشد از یک دستگاه چاپگر ارزان PC به جای چاپگر ویژه بزرگ استفاده گردد باید رمز دادههای ارسالی را به ASCII تبدیل نمود، در یک چنین موردی جدول درستی تبدیل EBCDIC به ASCII مستقیماً قابل پیاده شدن بر روی ROM میباشد. رمز EBCDIC به عنوان آدرس ROM و رمز ASCII به عنوان محتویات ROM به حساب خواهند آمد.
مثال دیگر از این نوع، تبدیل رمز دودویی خالص Pure Binary داخلی سیستمهای میکروکنترلر به رمز BCD برای نمایش اطلاعات خروجی میباشد. با توجه به مطالب بالا میتوانیم نتیجه گیری کنیم که در توابعی که خروجیها به صورت مشابه با محتویات و ورودیها مشابه با ورودیهای آدرس حافظهها باشند، این تراشهها نامزدهای مناسبی برای پیاده سازی توابع یاد شده در بالا میباشند.
به عنوان مثال اگر منظور ساخت یک علامت الکتریکی رقمی متشکل از ۱۶ وضعیت گوناگون در یک پریود خود باشد، میتوان از یک ROM ، ۱۶ خانه تک رقمی استفاده نمود. پریود موج تولید شده شانزده برابر زمان لازم برای خواندن دادهها از روی ROM خواهد بود. خطوط آدرس این ROM ﺗﻮسط خروجیهای یک شمارنده ۱۶ حالتی طبیعی فرمان داده میشوند.
نام دیگری که در چنین مواردی برای ROM مورد استفاده قرار میگیرد، واژه PLE خلاصه شده عبارت Programmable Logic Element میباشد. این واژه به این دلیل برای نامیدن ROM مورد استفاده قرار میگیرد، که ROM به صورت اصولی یک تراشه تولید توابع منطقی نیز میباشد.
یک ابزار نرمافزاری به همین منظور، یعنی کمک به پیاده سازی مدارهای منطقی به کمک ROM زمانی به بازار عرضه گردید که به نام' PLEASM 'که خلاصه شده Programmable Logic Element Assembler میباشد، نامیده میشد. این ابزار خصوصیات طرح منطقی مورد نظر را به صورت معادلات دودویی و یا توابع حسابی قبول کرده و خروجی خود را به صورت جدول درستی که مستقیماً قابل پیاده شدن بر روی ROM و یا به عبارتی PLE باشد آماده می نمود. ROMها را در ابعاد و سرعتها و تکنولوژیها گوناگون می سازند. انواع دو قطبی BIPOLAR آن با زمان دسترسی حدود ۱۰ نانو ثانیه و گونههای CMOS آن با حداقل زمان دسترسی تقریباً چندین برابر این مقدار در بازار وجود دارند. انواع قابل برنامه ریزی (PROM ) نیز وجود دارند که بعضی به توسط فیوزها برنامه ریزی میشوند و قابل پاک شدن نیستند و بعضیها هم با پرتو فرابنفش قابل پاک شدن میباشند که به آنها EPROM گفته میشود.
در حافظههای PROMتمام ﺑﻴﺖهای کلمات در ابتدا برابر ۱ هستند.برای داشتن صفر در کلمات حافظه می باﻳﺴتی ﻳﻚ جریان پالسی در خروجیROM برای هر آدرس قرار داد بطوری که ﻓیوزی که داخلPROM قرار داردمی سوزد.در اﻳن صورت آن ﺑﻴتی که ﻓیوز آن سوخته است دارای اطلاعات صفر میشود. به اﻳن ترﺗﻴب کاربر متناسب با ﻧﻴاز در آزماﻳﺸگاه خودPROM را برنامه ریزی میکندو در هر کلمه حافظه PROMاطلاعات مورد نظر را قرار میدهد. گونههای دیگری نیز وجود دارند که از لحاظ تکنیک ساخت و طرز کار ما بین ROM و RAM قرار میگیرند که از آن جمله میتوان از: E۲PROM=Electrically Erasable Programmable Read Only Memory و Flash Memoryها نام برد.
مختصری در مورد E2PROM و Flash Memory
استفاده از این نوع حافظهها که از نوع غیر فرار'Nonvolatile 'بوده و یعنی از این لحاظ شبیه بقیه انواع ROM میباشند، زمانی به کار میآید که نیاز باشد تراشه بدون برداشته شدن از روی مدارقابل برنامه ریزی مجدد باشد.
Flash Memory از لحاظ تکنولوژی ساخت تلفیقی از روشهای ساخت حافظههای EPROM و E2PROM میباشد ودر واقع مزایای هر یک از حافظههای یاد شده در بالا را دارا میباشد. Flash Memoryها میتوانند همانند E2PROMها به صورت الکتریکی پاک شوند با این تفاوت که اینها بر خلاف E2PROMها که خط به خط پاک میشوند به صورت یک جا تمام محتویات آنها قابل پاک شدن میباشد. و از این لحاظ شبیه EPROM میباشند. البته با این تفاوت که نوع اخیر توسط نور فرابنفش شدید در مدتی در حدود ۱۵ الی ۲۰ دقیقه پاک میشود. در صورتی که این عمل برای حافظههای از نوع Flash در یک لحظه خیلی کوتاه انجام می پذیرد و کل عمل پاک کردن و برنامه ریزی دوباره در عرض چند ثانیه قابل انجام است. بنابراین از این لحاظ این نوع حافظه سریع تر از E2PROMها میباشد.
نکته دیگری که قابل توجه است، این که در این نوع از حافظه احتیاج به ایجاد پنجره شفاف جهت انجام عمل پاک کردن محتویات تراشه شبیه آنچه در EPROM موجود بود، نمیباشد و از این لحاظ ساخت تراشه ارزانتر تمام خواهد شد. حافظههای E۲PROM و Flash معمولاً ولتاژ تغذیه دیگری علاوه بر تغذیه استاندارد ۵ ولتی نیز دارند که در مورد حافظههای یاد شده در بالا این ولتاژ در خیلی از مواقع حدود ۱۲ ولت بوده و برای انجام عمل نوشتن و پاک کردن مورد استفاده قرار میگیرد و با قطع آن محتویات داخلی تراشه ثابت خواهند ماند و به عبارتی در مقابل پاک شوندگی و یا تغییرات ناخواسته اتفاقی مصونیت پیدا خواهند کرد. جدول ۱- نشان دهنده خواص عمده از خانواده حافظههای غیر فرار یعنی EPROM و E2PROM و Flash از دید مقایسهای میباشد.