بازدیدها: 114
قطعه بندی حافظه
با توجه به اینکه برای به دست آوردن آدرس 20 بیتی همواره محتویات یک ثبات قطعه با 16 بیت آدرس موثر ترکیب می گردد، لذا عملا با استفاده از این روش همه جای حافظه یک مگابایتی را می توان آدرس دهی کرد.
همانطوریکه ذکر شد محتویات یک ثبات قطعه در واقع، شروع یک قطعه حافظه را مشخص می سازد. (در فهرست مقالات سایت میکرو رایانه جستجو کنید) به عنوان مثال اگر محتویات ثبات CS را برابر 1A54H فرض کنیم، این بدان معنی است که ثبات قطعه CS شروع یک قطعه حافظه را مشخص می سازد و اولین محل این قطعه ی حافظه از ترکیب محتویات ثبات CS با عدد صفر (آدرس موثر 0000H) به دست می آید که آدرس فیزیکی 1A540H خواهد بود و آخرین محل این قطعهء حافظه نیز آدرسی است که CS با عدد FFFFH (حداکثر مقداری که آدرس موثر می تواند انتخاب شود) ترکیب می شود که این عدد به عنوان آخرین آدرس فیزیکی این قطعه خاص، برابر 2A53FH خواهد بود:
1A540 H + FFFF H =2A53F H
حال اگر محتویات ثبات CS تغییر کند یک قطعه دیگری از حافظه را آدرس دهی خواهد کرد. (شکل 7)
همانطوریکه ذکر شد هدف از قطعه بندی حافظه، الزاما تفکیک حافظه از هم نیست و تمام قطعه هایی که از طریق ثبات های قطعه آدرس دهی می شوند می توانند باهم تداخل داشته باشند و حتی همه آنها باهم همپوشانی تمام داشته و کامل روی هم قرار بگیرند. (حالتی که محتویات تمام ثبات های قطعه باهم مساوی باشند که در این صورت همه آنها یک قطعه مشخصی از حافظه را مشترکا آدرس دهی خواهند کرد). در شکل (8) دو حالت مختلف نشان داده شده است. در شکل (الف) قطعات حافظه که توسط ثبات های قطعه مشخص می شوند باهم تداخل دارند ولی در شکل (ب) این قطعات از هم مجزا هستند.
به طور کلی مزایای به کار بردن ثبات های قطعه در ریزپردازنده 8088/8086 را می توان به طور خلاصه به شرح زیر بیان کرد:
1- به دست آوردن حداکثر تا یک مگا بایت حجم آدرس دهی حافظه با آدرس های 16 بیتی. بنابراین در برنامه نویسی به راحتی می توان فقط با آدرس های 16 بیتی کار کرد.
2- به دست آوردن طول بیش از 64 کیلو بایت برای بخش داده ها و پشته و دستورالعمل های یک برنامه (با در نظر گرفتن بیش از یک مقدار برای ثبات های CS , DS , SS و ES.)
3- سادگی استفاده از نواحی مختلف و مجزای حافظه برای بخش های گوناگون برنامه، که به این ترتیب می توان حافظه را به قطعات 64 کیلو بایتی مجزا از هم تفکیک نموده و هر بخش از برنامه را در یک قطعه جای داد. (استفاده بهینه از حافظه) این ویژگی بخصوص برای پردازش های چندگانه بسیار مفید است.
لازم به ذکر است که در هر کدام از ثبات های قطعه، توسط نرم افزار یک آدرس پایه قرار می گیرد و به این ترتیب می توان برنامه های بزرگ را به صورت مدولار نوشته و هر بخش از آنها را در یک قطعه حافظه جا داد.
در واقع با استفاده از ویژگی سوم می توان برنامه های جابجا پذیر نوشت که باعث می شود به نحو موثری از حافظه استفاده بهینه گردد. در سیستمی که چند کار (یا برنامه) را انجام می دهد، برنامه های غیر فعال را می توان در دیسک ها نوشت و فضای حافظه مربوط به آن برنامه را به برنامه های دیگر اختصاص داد. حال اگر به برنامه ذخیره شده در فضای دیسک دوباره نیاز باشد می توان آن برنامه را به فضای خالی دیگر منتقل کرد و اجرای آن را دوباره شروع نمود.
نظیر این کار را می توان برای حالتی تکرار کرد که بخش های خالی حافظه، مجموعا حجم کافی برای وارد شدن برنامه ایی را دارا هستند ولی فواصلی بین این بخش ها وجود دارد. در این صورت می توان تمام برنامه های حافظه را فشرده کرده و در کنار هم قرار داد و حجم خالی حافظه را برای برنامه ای بزرگتر آماده ساخت.
حال دوباره به آدرس فیزیکی باز می گردیم. دیدیم که آدرس فیزیکی، آدرس واقعی بوده و 20 بیتی است و از ترکیب محتویات یک ثبات قطعه با یک آدرس موثر به دست می آید. در برنامه نویسی عملا از آدرس های فیزیکی استفاده نمی شود و به جای آنها از آدرس های منطقی استفاده می گردد.
منظور از آدرس های منطقی، همان دو آدرس 16 بیتی مورد نیاز برای تشکیل آدرس فیزیکی است، یعنی آدرس موثر و محتویات یک ثبات قطعه، که به صورت دو عدد کنار هم نشان داده می شود و با علامت دونقطه(:) از همدیگر جدا می شوند. اولین آدرس از سمت چپ مشخص کننده ثبات قطعه (یا محتویات آن) و دومین عدد آدرس موثر است. مثلا اگر محتویات ثبات قطعه عدد 1234H و آدرس موثر برابر 22H باشد، دو آدرس 1234H و 22H را آدرس های منطقی می گوییم و آدرس فیزیکی مورد نظر را با استفاده از دو آدرس مذکور به صورت 1234H:0022H نشان می دهیم.
قبلا ذکر شد که محتویات هر ثبات قطعه شروع یک بلوک 64 کیلو بایتی از حافظه را مشخص می سازد و آدرس موثر به صورت یک آفستی از آن نقطه، فاصله را مشخص می کند. نکته مهم آن است که محل شروع این قطعه الزاما ثابت نبوده و بستگی به محتویات ثبات قطعه مورد نظر دارد.
به عنوان مثال در شکل (10) آدرس فیزیکی محل مورد نظر حافظه 002C3H می باشد. در این شکل برای یک آدرس فیزیکی ثابت دو آدرس قطعه متفاوت در نظر گرفته شده است. یعنی بسته به محتویات ثبات قطعه؛ که به عنوان آدرس پایه در نظر گرفته می شود؛ آدرس آفست (یا همان آدرس موثر) متفاوت خواهد بود.
مثلا در این شکل اگر محتویات ثبات قطعه 002BH فرض شود آدرس آفست مورد نظر برای رسیدن به آدرس 002C3H حافظه برابر 0013H خواهد بود ولی اگر محتویات ثبات قطعه 002CH فرض شود برای محل 002C3H حافظه، آدرس آفست برابر 0003H خواهد بود. به این ترتیب بسته به اینکه کدام یک مورد توجه قرار گیرد، محل مذکور با دو سری آدرس های منطقی 16 بیتی به صورت های 002BH:0013H یا 002CH:0003H تعیین خواهد شد. در عمل ممکن است برای هر آدرس فیزیکی مشخصی از حافظه، آدرس های منطقی متفاوتی انتخاب گردد.
منبع: microrayaneh.com