همه چيز در باره بايوس كامپيوترتان
اغلب براي افراد مشکل است که تفاوت بين سخت افزار و نرم افزار را درک نمايند و اين به اين دليل است که اين دو موضوع در طراحي،ساخت وپياده سازي سيستم‌ها بسيار به هم وابسته‌اند . براي درک بهتر تفاوت بين آنها لازم است که ابتدا مفهوم BOIS را درک کنيد.
BOISتنها کلمه اي است که مي‌تواند تمام درايورهايي را که در يک سيستم به عنوان واسط سخت افزار سيستم و سيستم عامل کار مي‌کنند ، را شرح دهد.
BOISدر حقيقت نرم افزار را به سخت افزار متصل مي‌نمايد . قسمتي از بايوس بر روي چيپ ROM مادربرد و قسمتي ديگر بر روي چيپ کارتهاي وفق دهنده قرار دارد که FIRE WARE(يعني ميانه افزار يا سفت افزار)ناميده ميشود .

يک PC مي‌تواند شامل لايه‌هايي (بعضي نرم افزاري و بعضي سخت افزاري ) باشد که واسط بين يکديگرند. در اکثر اوقات شما مي‌توانيد يک کامپيوتر (PC) را به چهار لا يه تقسيم کنيد که هر کدام از لايه‌ها به زير مجموعه‌هايي کوچکتر تقسيم کنيم . در شکل ۱-۵ چهار لايه نمونه از يک PC را مشاهده مي‌کنيد . هدف از اين نوع طراحي اين است که سيستم عامل‌ها و نرم افزار‌هاي مختلف بر روي سخت افزار‌هاي مختلف اجرا شوند (حالت مستقل از سخت افزار ) . شکل ۱-۵ نشان مي‌دهد که چگونه دو ماشين متفاوت با سخت افزار‌هاي مختلف که از يک نسخه بايوس استفاده مي‌کنند ، مي‌توانند انواع نرم افزارها و سيستم عامل‌هاي مختلف را اجرا کنند . بدين طريق دو ماشين با دو پردازنده مختلف، رسانه‌هاي ذخيره سازي متفاوت و دو نوع واحد گرافيکي و غيره … ، يک نرم افزار را اجرا کنند .

در معماري اين لايه‌ها برنامه‌هاي کاربردي با سيستم عامل از طريق API(Application Program Interface) ارتباط برقرار مي‌کنند .
API بر اساس سيستم عاملي که مورد استفاده قرار مي‌گيرد و مجموعه توابع و دستورالعملهايي که براي يک بسته نرم افزاري ارائه مي‌دهد ، متغير مي‌باشد . به طور مثال يک بسته نرم افزاري مي‌تواند از سيستم عامل براي ذخيره و بازيابي اطلاعات استفاده کند و خود نرم افزار مجبور نيست که اين کارها را انجام دهد.
نرم افزارها طوري طراحي شده‌اند که ما مي‌توانيم آنرا بر روي سيستمهاي ديگر نصب و اجرا نمائيم و اين به دليل مجزا شدن سخت افزار از نرم افزار است و نرم افزار از سيستم عامل براي دستيابي به سخت اقزار سيستم استفاده مي‌کند . سپس سيستم عامل از طريق واسط‌ها به لايه‌هاي بايوس دستيابي پيدا مي‌کند .بايوس شامل نرم افزارهاي گرداننده اي است که بين سخت افزار و سيستم عامل ارتباط برقرار مي‌کند . به خودي خود سيستم عامل هيچگاه نمي تواند مستقيما به سخت افزار دستيابي پيدا کند ، در عوض مجبور است از طريق برنامه‌هاي گرداننده اي که به اين کار تخصيص يافته‌اند عمل کند .

يکي از وظايف توليد کنندگان قطعات سخت افزاري آن است که گرداننده اي براي قطعات توليدي خود ارائه دهند ، و چون گرداننده‌ها بايد بين سخت افزار و نرم افزار عمل نمايند ، بايد گرداننده‌هاي هر سيستم عامل مجزا توليد شوند . بنابراين کارخانه سازنده قطعات بايد گرداننده‌هاي مختلفي ارائه دهد تا قطعه مورد نظر بتواند بر روي سيستم عاملهاي مزسوم کار کند .

چون لايه‌هاي بايوس همانند يک سيستم عامل به نظر مي‌رسند ، مهم نيست که با چه سخت افزاري کار مي‌کند ، و ما مي‌توانيم سيستم عاملها را بر روي هر کامپيوتري و با هر نوع مشخصات سخت افزاري نصب و استفاده نمائيم .
براي مثال شما مي‌توانيد Windows 98 را بر روي دو سيستم متفاوت با پردازنده ،هارد ديسک،و کارت گرافيکي و … که متفاوت از يکديگرند نصب و اجرا کنيد، اما بر روي هر دو سيستم همان کارائي خود را داراست، و زيرا که گرداننده‌ها همان عملکرد پايه را انجام مي‌دهند و مهم نيست که بر روي چه سخت افزاري کار مي‌کنند .

معماري سخت افزار و نرم افزار بايوس
البته بايوس ، نرم افزاري است که شامل گرداننده‌هاي مختلفي است که که رابط بين سخت افزار و سيستم عامل هستند يعني بايوس نرم افزاري است که همه آن از روي ديسک بارگذاري نمي شود بلکه قسمتي از آن ، قبلا بر روي چيپهاي موجود در سيستم يا برروي کارتهاي وفق دهنده نصب شده اند.

بايوس در سيستم به سه صورت وجود دارد :
۱-ROM BIOS نصب شده بر روي مادر برد.
۲- بايوس نصب شده بر روي کارتهاي وفق دهنده (همانند کارت ويدئويي)
۳- بارگذاري شده از ديسک(گرداننده‌ها)

چون بايوس مادربرد مقدمات لازم را براي گردادننده‌ها و نرم افزارها ي مورد نياز فراهم ميکند ،د اکثرا به صورت سخت افزاري که شامل يک چيپ ROM مي‌باشد موجود است.
سالهاي پيش هنگامي که سيستم عامل DOS بر روي سيستم اجرا ميشد خود به تنهائي کافي بود و گرداننده اي (Driver) مورد نياز نداشت . بايوس مادربرد به طور عادي شامل گرداننده‌هايي است که براي يک سيستم پايه همانند صفحه کليد، فلاپي درايو،‌هارد ديسک ، پورتهاي سزيال و موازي و غيره … است.

به جاي اينکه براي دستکاههاي جديد لازم باشد که بايوس مادربرد را ارتقاء دهيد، يک نسخه از گرداننده آن را بر روي سيستم عامل خود نصب مي‌نمائيد تا سيستم عامل پيکربندي لازم را در هنگام بوت شدن سيستم را براي استفاده ار آن دستگاه انجام دهد ، براي مثال مي‌توانيم CD ROM،Scanner،Printer،گرداننده‌هاي PC CARD را نام برد.چون اين دستکاهها لازم نيستند که در هنگام راه اندازي سيستم فعال باشند ، سيستم ابتدا از‌هارد ديسک راه اندازي مي‌شود وسپس گرداننده‌هاي آنرا بار گذاري مي‌نمايد.

البته بعضي از دستگاهها لازم است که در طول راه اندازي سيستم عامل فعال باشند ، اما اين امر چگونه امکان پذير است مثلا قبل از آنکه گرداننده کارت ويدئويي از ROM BIOS و يا از روي‌هارد ديسک فراخواني شود شما چگونه مي‌توانيد اطلاعات را بر روي مانيتور ببينيد ..
يک جواب اين است که در ROM تمام گرداننده‌هاي کارت گرافيکي وحود داشته باشد اما اين کار غير ممکن نيست زيرا کارتهاي بسيار متنوعي وجو دارد که هر کدام گرداننهده مربوط به خود را داراست که اين خود باعث مي‌شود صدها نوع ROM مادربرد به وجود آيد که هر کدام مربوط به يک کارت گرافيکي مي‌باشد.
اما هنگامي که IBM،PC‌هاي اوليه خود را اختراع نمود راه حل بهتري ارائه داد . او ROM مادربرد را طوري طراحي کرد که شکاف (Slot)کارت گرافيکي را براي پيدا کردن ROM نصب شده روي کارت گرافيکي را جستجو کند .

و اگر ROM روي کارت را مي‌توانست پيدا مي‌کرد ، مرحله اوليه راه اندازي را قبل از اينکه سيستم عامل از روي ديسک فراخواني (Load) شود ،اجرا مي‌نمود. بدين وسيله از تعويض ROM قرار داده شده بر روي مادربرد براي استفاده و فعال کردن دستگاه مورد نظر،ممانعت مي‌کند.
کارتهاي مختلفي که تقريبا بر روي همه آنها ROM وجود دارد ، شامل موارد زير هستند :
کارتهاي ويدئويي که هميشه داراي BIOS مي‌باشند.
وفق دهنده‌هاي SCSI که امکان استفاده از دستگاههاي با اتصالات SCSI را فراهم مي‌آورد .
کارتهاي شبکه که امکان راه اندازي سيستم با استفاده از فايل سرور که معمولا Boot Rom يا IPL(Initial Program Load) ROM ناميده مي‌شوند، را فراهم مي‌آورد ..
استفاده از دستگاههاي IDE
بردهاي Y2K که براي کامل کردن CMOS RAM هستند .

BIOS و CMOS RAM
اکثر افراد BIOS رابا CMOS RAM اشتباه مي‌گيرند ، اين از آنجا سرچشمه مي‌گيرد که برنامه Setup براي پيکربندي BIOS و ذخيره آن در CMOS RAM مي‌شود استفاده مي‌شود.

در حقيقت BIOS و CMOS RAM دو چيز متفاوت از هم مي‌باشند. بايوس مادربرد در يک چيپ ROM به طور ثابت ذخيره شده است.
همچنين بر روي مادربرد يک چيپ است که RTC/NVRAM ناميده مي‌شود ، که زمان سيستم را نگهداري مي‌کند و يک حافظه فرار و ثابت است که اولين بار در چيپ MC146818 ساخت شرکت موتورلا استفاده شده است، و ظرفيت آن ۶۴ بايت است که ۱۰ بايت آن مربوط به توابع ساعت است ..
اگرچه اين چيپ غير فرار ناميده مي‌شود اما با قطع برق ، ساعت و تاريخ تنظيم شده در آن و داده‌هاي درون RAM پاک مي‌شود .
در حقيقت غير فرار ناميده مي‌شود چون با استفاده از تکنولوژي CMOS(Complementarry Metal-Oxide Semicondector) ساخته شده است ، در نتيجه با يک جريان بسيار کم که بوسيله باطري سيستم تامين مي‌گردد ، پايدار باقي مي‌ماند که اکثر مردم به اين چيپ ،CMOS RAM مي‌گويند .

هنگامي که وارد BIOS Setup مي‌شويد و پارامترهاي خود راتنظيم و ذخيره مي‌نماييد ، اين تنظيمات در ناحيه اي از چيپ RTC/NVRAM ذخيره مي‌شوند(که همچنين CMOS RAM نيز ناميده مي‌شود).
و در هر موقع که سيستم خود را راه اندازي مي‌کنيد پارامترها از CMOS RAM خوانده مي‌شوند و تعيين مي‌کنند که سيستم چگونه پيگربندي شده است.

BIOS مادربرد :
همه مادربردها شامل يک چيپ مخصوص هستند که بر روي آن نرم افزاري قرار دارد که BIOS يا ROM BIOS ناميده مي‌شود . اين چيپ ROM شامل برنامه‌هاي راه اندازي و گرداننده‌هايي است که که در هنگام راه اندازي سيستم مورد نياز است و يک واسطه به سخت افزار پايه سيستم است .
اغلب به CMOS RAM (حافظه پاک نشدني NVRAM(Non-Volatile نيز مي‌گويند ، چون با ۱ ميلينيوم آمپر فعال مي‌شود و تا هنگامي که باطري ليتيوم فعال باشد ، داده‌ها باقي مي‌مانند.

BIOS مجموعه اي از برنامه‌هايي است که در يک يا چند چيپ ذخيره شده است ، که در طول راه اندازي سيستم اين مجموعه از برنامه‌ها قبل از هر برنامه اي حتي سيستم عامل بارگذاري مي‌شوند .
BIOS در اکثر سيستمهاي PC‌ها شامل چهار تابع است:
POST(Power Self On Test): اين برنامه پردازنده، حافظه ،چيپستها ،وفق دهنده ويدوئويي ، ديسک کنترلر ،گرداننده‌هاي ديسکي ،صفحه کليد ،و مدارات ديگر را تست مي‌کند.

BIOS Setup: برنامه اي است که در طول اجراي برنامه POST بافشار دادن کليد خاصي فعال مي‌شود و به شما اجازه مي‌دهد مادربرد را پيکربندي کنيد و تنظيم پارامترهايي همانند ساعت و تاريخ و پسورد و … را انجام دهيد. در سيستمهاي ۲۸۶ و ۳۸۶ برنامه Setup در ROM آنها وجود ندارد و لازم است که شما سيستم را توسط ديسک مخصوص Setup راه اندازي نمائيد.
بارگذارکننده يا لودر BootStrap :روالي است که سيستم ار براي پيدا کردن سکتور Boot جستجو مي‌کند .
BIOS: که مجموعه اي از گرداننده‌هايي است که واسط بين سخت افزار و سيستم عامل است.

سخت افزار ROM:
ROM نوعي از حافظه است که که داده‌ها را به طور دائم يا غير دائم نگهداري مي‌کند .به آن فقط خواندني مي‌گويند زيرا يک بار بر روي آن مي‌نويسند و بارها آنرا مي‌خوانند و اگر دوباره قابل نوشتن باشد بسيار دشوار است ..
ROM به حافظه غير فرار نيز معروف است ، زيرا هر داده اي که در آن ذخيره شود با قطع برق سيستم پاک نمي شود . توجه داشته باشيد که RAM و ROM تناقضي با يکديگر ندارند .

در حقيقت تکنولوژي ROM زير مجموعه اي از سيستم RAM مي‌باشد به طور خلاصه قسمتي از فضاي حافظه RAM به يک يا چند چيپ اشاره مي‌کنند.
به طور مثال هنگامي که کامپيوتر را روشن مي‌کنيم پردازنده به طور خودکار به آدرس FFFF0h پرش مي‌کند.که در اين آدرس دستوراتي است که به پردازنده مي‌گويند چه کاري انجام دهد .

اين محل ۱۶ بايتي درست در انتهاي اولين مگابايت RAM و همچنين در پايان حافظه ROM قرار گرفته است.معمولا سيستم ROM از آدرس F0000h شروع ميشود که ۶۴ کيلو بايت قبل از انتهاي اولين مگابايت مي‌باشد ، و معمولا چون اندازه ROM 64 کيلو بايت است ۶۴ کيلو بايت آخر اولين مگابايت را اشغال مي‌کند و در آدرس FFF0h دستورات راه اندازي سيستم قرار دارد .

افراد بسياري تعجب مي‌کنند که يک PC با اجراي دستورات ۱۶ بايت از حافظه ROM مي‌تواند راه اندازي شود ، اما اين طراحي کاملا حساب شده است.
اين طراحي بدين گونه است که در ۱۶ بايت آخر ROM يک دستور JMP به اول ROM است و کنترل برنامه را به ابتداي ROM مي‌برد ، پس به اين طريق مي‌توانيم اندازه ROM را به هر قدر که بخواهيم افزايش دهيم . ROM BIOS اصلي که برروي مادربرد است شامل يک چيپ ROM است.چون قسمت اصلي BIOS در ROM است ، ما اغلب آنرا ROM BIOS مي‌ناميم .
کارت‌هاي وفق دهنده اي که در طول راه اندازي سيستم مورد نياز هستند داراي يک ROM بر روي بردشان مي‌باشند . که از اين کارتها مي‌توان کارت ويدئو ،اکثر Small Small Cmputer System Interface) SCSI(‌ها ، کارت کنترلر IDE توسعه يافته، برخي از کارتهاي شبکه (براي راه اندازي توسط Server) .

ROMهايي که بر روي کارتهاي وفق دهنده هستند توسط برنامه POST در طول راه اندازي سيستم اسکن و خوانده مي‌شوند. ROM مادربرد قسمت خاصي ازRAM (از آدرس C00000h-DFFFFh) را رزرو مي‌کند و سپس دوبايت از آدرس ۵۵AAh را مي‌خواند که در آن آدرس شروع ROM قرار دارد .
سومين بايت اندازه ROM را در واحد ۵۱۲ بايت(که Paragraphناميده مي‌شود) نشان مي‌دهد و چهارمين بايت شروع برنامه راه انداز ميباشد. يکبايت نيز به منظور تست کردن توسط ROM مادربرد استفاده مي‌شود.

ROM Shadowing:
چيپهاي RAM طبيعتا در مقابل چيپهاي DRAMها کند مي‌باشند ، زيرا زمان دستيابي به ROM 150 نانوثانيه است، اما زمان دستيابي DRAM‌ها ۵۰ نانوثانيه مي‌باشد .
به همين دليل در بسياري از سيستمها ROM‌ها به صورت پنهان (Shadowing) هستند، بدين معني که ROMها در ابتداي راه اندازي يسيتم در چيپهاي DRAM کپي مي‌شوند که اين باعث دسترسي و اجراي سريعتر عمليات مي‌شود .
زيربرنامه‌ها و روالهايي که به روالهاي پنهاني (Shoadowing Procedure) محتويات ROM را در RAM کپي مي‌کنند و آدرس آن را به عنوان ROM معرفي مي‌کنند و ROM واقعي ار غير فعال مي‌کنند ،که اين باعث مي‌شود که به نظر برسد که سيستم با سرعت ۶۰ نانوثانيه کار مي‌کند.
استفاده از اين روش هنگامي مفيد است که از يک سيستم عامل ۱۶ بيتي مانند ِDOS و يا WIN3.1 لستفاده مي‌کنيم ..و اگر از سيستم عامل ۳۲ بيتي مانند WIN 98,WIN95,WIN NT استفاده مي‌کنيد ، اين روش تقريبا بي حاصل است زيرا اين سيستم عاملها هنگامي که بر روي سيستم اجرا مي‌شوند از کد ۱۶ بيتي ROM استفاده نمي کنند.

اما در عوض از گرداننده‌هاي ۳۲ بيتي که در طول راه اندازي سيستم عامل در حافظه RAM بارگذاري مي‌کنند ، استفاده مينمايند.
چهار نوع چيپ ROM وجود دارد :
* ROM
* PROM
*EPROM
EEPROM * که نيز Flash ROM نيز مي‌نامند.

PROM:
اين چيپها که از نوع ROM مي‌باشند در ابتداي ساخت خالي مي‌باشند و بايد با داده‌هايي که مي‌خواهيد برنامه ريزي کنيد. اين نوع حافظه‌ها در اواخر سال ۱۹۷۰ به وسيله شرکت Tenas Instruments ساخته شد ودر اندازه‌هاي مختلف ۱ کيلو بايت تا ۲ مگابايت و بيشتر هستند که شماره شناسايي آنها ۲۷nnnn مي‌باشد كه عدد ۲۷ شماره شناسايي چيپهاي PROM مي‌باشد و nnnn اندازه اين چيپ بر حسب بايت مي‌باشد.