حافظه اصلی و انواع آن
در علوم رایانه، به هر وسیله که توانایی نگهداری اطلاعات را داشته باشد، حافظه میگویند. حافظه یکی از قسمتهای ضروری و اساسی یک رایانه به شمار میرود. همان طور که انسان برای نگهداری اطلاعات مورد نیاز خود علاوه بر حافظه درونی خویش از ابزارهای گوناگون دیگری همانند کاغذ، تخته سیاه، نوار ضبط صوت، نوار ویدیو و ... استفاده میکند رایانه هم میتواند از انواع گوناگون حافظه استفاده کند. به طور کلی دو نوع حافظه داریم :
«حافظه اصلی» که به آن «حافظه اولیه» یا «حافظه درونی» نیز میگویند .
«حافظه جانبی» که به آن «حافظه ثانویه» یا «حافظه کمکی» نیز میگویند .
حافظه اصلی
کلیه دستورالعملها و داده ها، برای این که مورد اجرا و پردازش قرار گیرند، نخست باید به حافظه اصلی رایانه منتقل گردند و نتایج پردازش نیز به آنجا فرستاده شود. حافظه اصلی رایانه از جنس نیمه رسانا ( الکترونیکی ) است و در نتیجه، سرعت دسترسی به اطلاعات موجود در آنها در مقایسه با انواع حافظه جانبی که بصورت مکانیکی کار میکنند مانند دیسک سخت، دیسکگردان، و لوح فشرده بالاست و قیمت آن نیز گران تر است اما در مقابل حافظههایی، که به پردازنده نزدیکتر هستند و از ظرفیت کمتری برخوردارند مانند ثبات(به انگلیسی: Processor Registers) و حافظه نهان سیپییو (به انگلیسی:Cache)ارزانتر و از سرعت دسترسی پایینتری بهره میبرند. حافظههای اصلی نیز به دو دسته تبدیل میشوند:
حافظه خواندنی/ نوشتنی (به انگلیسی: RWM)، حافظه دسترسی تصادفی (به انگلیسی: Random Access Memory یا RAM) از این نوع است.
حافظه فقط خواندنی (به انگلیسی: Read Only Memory یا ROM)
حافظه خواندنی/ نوشتنی [ویرایش]
همان طور که از نام این حافظه پیداست، پردازنده میتواند هم در این نوع حافظه بنویسد و هم از آنها بخواند. به طور کلی، برنامهها (به انگلیسی: Codes)، دستورالعملها (به انگلیسی: Instructions)، و دادههایی (به انگلیسی: Data) در این حافظه قرار میگیرند که پردازشگر بخواهد بر روی آنها کاری انجام دهد. به این نوع حافظه ها، حافظه فَرّار نیز میگویند زیرا با قطع برق، محتویات آنها از بین میرود. RAMها غالباً دو نوع اند :
DRAM
(RAMدینامیک ) : در این نوع حافظه اطلاعات به طور اتوماتیک توسط رایانه تازه (به انگلیسی:Refresh) میشوند. به دلیل چگالی بیشتر دادهها و ارزان بودن RAM دینامیک پراستفاده است و در حافظه دسترسی تصادفی (به انگلیسی: RAM) از آن بیشتر استفاده میشود.
SRAM
(RAMاستاتیک ) : سرعت این نوع حافظه بالاتر از نوع دینامیک است. از این نوع RAM در حافظه نهان (به انگلیس:Cache) که بین حافظه اصلی و پردازنده قرار دارد، استفاده میشود.
حافظه فقط خواندنی [ویرایش]
همانگونه که از نام حافظه فقط خواندنی (به انگلیسی: ROM) مستفاد میشود، پردازنده نمیتواند به صورت خودکار اطلاعات موجود در این نوع حافظه را تغییر دهد، بلکه فقط میتواند آن را بخواند. هنگام خاموش شدن رایانه نیز این اطلاعات از بین نمیرود و ثابت می ماند. سامانهٔ ورودی/خروجیِ پایه (به انگلیسی: Basic Input/Output System یا 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 از دید مقایسهای میباشد.
حافظههای Flash در خیلی از مواردی که به صورت معمول ازE2PROM و EPROM و یا مجموعه SRAM و باتری و یا DRAM و دیسک مغناطیسی استفاده میشود، کاربرد دارند و میتوانند جایگزین انواع بالا بشوند. هزینه برنامه ریزی دوباره کمتر برای حافظه Flash از مزایای عمده این نوع تراشهها بوده و از این لحاظ کاربرد آنها در طولانی مدت به مراتب از کاربرد EPROM مقرون به صرفه تر است. یکی از عیوب این حافظهها تعداد محدود دفعات نوشتن و پاک کردن آنها میباشد که مقدار حداکثر آن در مدارک فنی سازندگان در حال حاضر ده هزار یاد میشود و این در حالی است که تعداد دفعات پاک کردن و برنامه ریزی مجدد برای EPROMها در حدود یک هزار بار میباشد و از لحاظ نظری این رقم برای حافظههای RAM بی نهایت میباشد. نکته دیگری که قابل بیان است این که تعداد E2PROMهای ساخته شده از لحاظ تنوع به مراتب از EPROMها کمتر میباشد.
سرعت کار حافظهها به صورت سرعت دسترسی به اطلاعات آنها در زمان خواندن بیان میشود که به صورت پسوندی پس از شماره قطعه حافظه قید میگردد. مثلا ۲۷C۵۱۲-۱۲۰ نشان دهنده یک نوع حافظه EPROM با ظرفیت ۵۱۲ کیلو بایت و با زمان دسترسی ۱۲۰ نانو ثانیه میباشد در صورتی که ۲۷C۵۱۲-۲۵۵ نشان دهنده همین نوع حافظه منتها با زمان دسترسی ۲۵۵ نانو ثانیه میباشد.
نکته دیگری که در مورد حافظههای EPROM قابل ذکر است اینکه معمولاً برای هر نوع EPROM و ROM معادل نیز توسط سازندگان عرضه میشود و این بدان دلیل است که سازندگان دستگاه پس از اتمام دوره نمونه سازی و در دوران تولید انبوه بتواند EPROM خود را با ROM معادل که هم از نظر قیمت خیلی ارزانتر و هم از نظر پایداری اطلاعات ضبط شده خیلی بادوامتر و مطمئن تر میباشد جایگزین نمایند.
به عنوان مثال تراشه ROM ۲۳۳۲ معادل EPROM ۲۷۳۲ بوده و تراشه ROM ۲۷X۵۱۲ معادل ۲۷C۵۱۲ که یک EPROM ، ۵۱۲ کیلو بایتی است، میباشد. جدول۲- نشان دهنده تعدادی از EPROMهای معمول موجود در بازار و ROM مشابه آنها و بعضی از اطلاعات اساسی مربوطه میباشد. در دو ستون آخر این جدول نمونههایی از حافظههای E2PROM و Flash که از لحاظ ظرفیت و سازماندهی داخلی همانند EPROMهای هم ردیف خود میباشند، آمده اند.