whatsapp call admin

دانلود مقاله سیمای سیاسی و اجتماعی خواجه رشید الدین فضل الله همدانی

word قابل ویرایش
37 صفحه
52700 تومان
87,000 ریال – خرید و دانلود

چکیده
در اواسط دهه ۷۰ ریزپردازنده ها ساختار ساده ای داشتند و در این زمان هر ریزپردازنده از یک واحد پردازشگر مرکزی (cpu) و یک تراشه LSI (شامل ۵/۰۰۰ ترازیستور) تشکیل شده بود و با فرکانس ۱ تا ۵ مگاهرتز در یک سیستم ۸ بیتی کار می کرد و این ریزپردازنده ها دارای ۲ الی ۷ ثبات ۸ بیتی بودند. به خاطر قیمت و بهای اندک و اندازه کوچک ریزپردازنده ها، در بیشتر سیستم های کامپیوتری از آنها استفاده می شد و به جائی رسید که جایگزین سیستم های mainframe و میکروکامپیوترها شدند. با ظهور ریزپردازنده ها هر خانه ای دارای یک کامپیوتر دیجیتالی است.
از دهه ۷۰ به بعد ریزپردازنده ها تغییرات زیادی کرده اند و در دهه ۹۰ ریزپردازنده ها ۳۲ بیتی تا ۶۴ بیتی شدند. و با فرکانس هایی از ۲۵ تا ۲۰۰MHZ کار می کردند و عملاً دارای تراشه هایی با سه میلیون ترازیستور بودند (VLSI). اکثر این ریزپردازنده ها قادر بودند بیشتر از یک دستورالعمل را در یک چرخه اجرا کنند. تمامی ریزپردازنده‌های پیشرفته دارای یک تراشه FPU هستند و اکثر آن ها دارای ۱۶تا ۳۲ ثبات همه منظوره در CPU و یک رجیستر فایل با ۳۲ ثبات برای IU و یک رجیستر فایل با ۳۲ ثبات جداگانه برای FPU هستند.
خیلی از ریزپردازنده ها برای عملیات شناور و عملیات صحیح دارای Operational Unit هستند و مقدار قابل توجهی Cache دارند. در اکثر آنها Cache شامل Cache داده و Cache دستورالعمل است . کارآیی ریزپردازنده های پیشرفته امروز مساوی یا بیشتر از Mainframe و یا سوپر کامپیوترهای دوران قبل می باشد.
تعداد زیادی کارخانه سازنده ریزپردازنده وجود دارد که دارای ویژگی های خاص خود می باشند و دو گروه از گسترده ترین خانواده ریزپردازنده که در دهه ۷۰ ساخته شده اند عبارتند از اینتل X86 یا ۸۰X86 و خانواده موتورولا M680X0.
نزدیک به دهه ۸۰ ما شاهد یک توسعه موازی روی معماری های جدید بوده ایم که تمایل به کامپیوترهائی با مجموعه دستورالعمل کاهش یافته یا RISC بوده اند. خانواده های اینتل X86 و موتورولا M68000 از کلاس غیرRISC یعنی کامپیوترهایی با مجموعه دستورهای پیچیده یا CISC تشکیل شده اند.
اینتل، یک ریزپردازنده ۴ بیتی به نام ۴۰۰۴ در سال ۱۹۷۱ شروع کرد که در یک ماشین حساب معمولی بکار میرفت، و به آسانی محاسبات BCD را انجام میداد. در سال ۱۹۷۲ ریزپردازنده ۸ بیتی ۸۰۰۸ توسعه یافت و در سال ۱۹۷۴ یک ریزپردازنده قدرتمند ۸ بیتی به نام ۸۰۸۰ تولد یافت و به دنبال آن ۸۰۸۵ در سال ۱۹۷۶ به بازار آمد. بخشی از معماری ۸۰۸۵/۸۰۸۰ همانند مجموعه ثبات ها در خانواده X86 همچنان استفاده می شود. اینتل ساخت ریزپردازنده های خانواده X86 را با یک ریزپردازنده ۱۶ بیتی به نام ۸۰۸۶ در ۱۹۷۸ آغاز کرد و عملاً تمامی کارخانه های معروف ریزپردازنده های ۱۶ بیتی بعد از دهه ۷۰ و تا نزدیک دهه ۸۰ از یک تراشه ارزان قیمت و یک گذرگاه خارجی ۸ بیتی با یک معماری داخلی ۱۶ بیتی استفاده می کردند.
در سال ۱۹۶۹ ریزپردازنده ۸۰۸۰ با باس خارجی ۸ بیتی و گذرگاه داخلی ۱۶ بیتی ایجاد شد و برای گذرگاه داده خود ۵۰% به تراشه های میانی کمتری در مقایسه با پردازنده های ۱۶ بیتی نیاز داشتند و هزینه آن ها نیز کمتر بود.
در واقع ۸۰۸۰ به پردازنده اصلی شرکت IBM روی کامپیوتر های شخصی (PC) تبدیل و در تمامی تولیدات بعدی در جهان منتشر گردید. به دنبال ۸۰۸۶، تکامل یافته آن یعنی ۸۰۱۸۶ ساخته شد که همان ۸۰۸۶ همراه با تعدادی اینترفیس I/O و واحدهای منطقی وی یک تراشه بود و تعداد کمی دستورالعمل به آن اضافه شده بود.
وقتی ۸۰۲۸۶ به عنوان یک ریزپردازنده ۱۶ بیتی در سال ۱۹۸۲ شناخته شد، مرحله جدیدی در توسعه ریزپردازنده ها پدید آمد که قابلیت Protected Mode نامیده شد. این شیوه در تمامی محصو.لات دیگر خانواده اینتل بکار گرفته شد.
اولین پردازنده ۳۲ بیتی اینتل در سال ۱۹۸۵ بود که i386 نام داشت. اینتل یک پردازنده ۳۲ بیتی به نام ۴۳۲ که با خانواده X86 ناسازگار بود را زودتر از دهه ۸۰ بیرون داده بود که هرگز تجاری نشد. در سال ۱۹۸۹ ریزپردازنده i486 توسعه یافت که سرعت عملکرد آن در مدل DX2 به ۶۶MHZ میرسید. i486 دارای یک واحد FPU و یک Cache به اندازه ۸KB در داخل تراشه است.
محصول بعدی خانواده اینتل پنتیوم بود که در سال ۱۹۹۳ ساخته شد و قبل از گسترش به آن i586 یا P5 گفته می شد اما اینتل تصمیم گرفت نام آن را پنتیوم بگذارد. پنتیوم یک سوپر اسکالر دو سطحی است یعنی دو دستورالعمل را موازی واکشی و کدگشایی و اجرا می کند و دارای گذرگاه داخلی ۶۴ بیتی و یک cache به اندازه ۱۶KB است(۸K data cache + 8K inst.cache).
اینتل مرتباً روی محصولات بعدی کار می کرد و P6 نامیده شد که طبق وعده آن کارآیی پنتیوم را حد اقل ۲ برابر کرد و پس از آن به ترتیب Pentium II، Pentium III و Pentium IV نیز ساخته شدند.
توسعه ریزپردازنده های موتورولا نیز شبیه اینتل است. موتورولا در سال ۱۹۷۴ خانواده ۸ بیتی ۶۸۰۰ را ایجاد کرد که در سال ۱۹۷۷ به یک محصول ۸ بیتی ویژه به نام ۶۸۰۹ تبدیل شد. موتورولا نخستین ریزپردزنده ۱۶ بیتی خود را در سال ۱۹۷۹ به نام M68000 به بازار عرضه کرد. از ویژگی های مهم خانواده M68000 آن است که ریزپردازنده MC68000 به طور پایه ای یک سیستم ۱۶ بیتی با گذرگاه داده ۱۶ بیتی و ۱۶ ثبات پردازنده UPRS و شمارنده برنامه ۳۲ بیتی است. در سال ۱۹۸۴ ریزپردازنده ۳۲ بیتی MC60000 نامیده شد. هم چنین موتورولا روایت های توسعه یافته محصولات MC68000 را تحت عنوان MC68010 .و MC68012 ایجاد کرد. MC68010 از نظر پایه ها کاملاً با MC68000 سازگار بود بنابراین از نظر طراحی سیستم، یک MC68000 می توانست با یک MC68010 جایگزین شود.
موتورولا ساخت ریزپردازنده های ۳۲ بیتی خانواده M68000 را در سال ۱۹۸۴ با نام MC68020 شروع کرد. این ریزپردازنده ها در سال ۱۹۷۸ به ریزپردازنده MC68030 و در سال ۱۹۸۹ به MC68040 توسعه پیدا کردند. ۶۸۰۲۰ دارای یک Cache دستور کوچک ۲۵۶ بایتی در داخل تراشه بود. ۶۸۰۳۰ دارای یک حافظه Cache دستور کوچک ۲۵۶ بایتی در داخل تراشه بود. ۶۸۰۳۰ دارای یک حافظه Cache دوگانه نسبتاً کوچک (۲۵۶ data + 256 B inst.) .و ۶۸۰۴۰ دارای Cache 4KB دستور و Cache 4KB داده در یک تراشه می باشد.
عضو بعدی خانواده M68000 که در سال ۱۹۹۴ ساخته شد MC68060 نام گرفت که یک سوپر اسکالر ۲ سطحی با Cache 8KB دستور و Cache داده در تراشه بود و دستورالعمل ها با سرعت ۶۶MHZ کار می کرد.
البته چندین خانواده از ریزپردازنده ها وجود دارد که به آن ها اشاره اندکی خواهد شد، مانند Z-80 مربوط به شرکت Zilog که ریزپردازنده معر وف ۸ بیتی است و توسط گروهی از طراحان متخصص اینتل که ۸۰۸۰ و ۸۰۸۵ را ساخته بودند ایجاد شد و از اینرو Z-80 شبیه معماری اینتل ۸۰۸۰ است ولی زبان اسمبلی هر دو متفاوت می باشد و Z-80 دارای دستورهای بیشتری نسبت به ۸۰۸۰ است. شرکت Zilog خانواده ۱۶ بیتی خود را با نام Z8000 موازی با اینتل ۸۰۸۶ منتشر کرد و Z80000 یک محصول ۳۲ بود که به تولید نرسید.
توسعه ریزپردازنده های RISC به شکل مو ازی با اینتل و موتورولا انجام شد. اولین مستندات RISC در دانشگاه برکلی در سال ۱۹۸۰ توسط Pattersonو Ditzel ارایه شد و لغت RISC توسط کارلو اسکوئین لرپرت اولین مقاله RISC عنوان شد. طراحیس سیستم محاسباتی از نوع RISC بدون استفاده از واژه RISC خیلی پیشتر توسط IBM در دهه ۷۰ آغاز شد که با نام IBM801 شناخته می شد. هم چنین دانشگاه استنفورد در سال ۱۹۸۱ سیستم RISC خود را ایجاد کرد و به نام MIPS (Microprocessor without interlocked Pipeline Stage) نامید.
شرکت MIPS روایت های تجاری را تحت خانواده RX000 (X=6,4,3,2) منتشر ساخته است. در برخی از خصوصیات اولیه طرح RISC برکلی در Sparc از شرکت Sun Micro System به کار رفته است. شرکت اینتل خانواده RISC خود را با نامI860 و شرکت موتورولا با نام M88000 شروع کردند. شرکت IBM کامپیوتر RISC خود را با نام ROMP (Research Office Product Division Microprocessor) ادامه داد و به سیستم RS6000 منجر شد. معماری RS6000 با خصوصیت جدید ریزپذدازنده های IBM و موتورولا و اپل ترکیب شد و Power PC ساخته گردید. اولین محصول ۶۰۱ است که در ۱۹۹۱ منتشر شد و به دنبال آن ۶۲۰ با توانائیهای بیشتری ایجاد گردید.

Intel 8086
در این فصل معماری داخلی، شیوه های آدرس دهی، مجموعه دستورالعمل ها و تکنیک های I/O مرتبط با ریزپردازنده ۸۰۸۶ را معرفی خواهیم کرد.

مقدمه
۸۰۸۶ اولین ریزپردازنده ۱۶ بیتی اینتل بود. طراحی آن بر اساس ۸۰۸۰ ولی مستقیماً با آن سازگار نبود. ۸۰۸۶ با استفاده از فناوری HMOS طراحی شده بود و شامل ۲۹۰۰۰ ترانزیستور بود. ۸۰۸۶ در یک بسته ۴۰ پایه ای قرار داشت و با منبع تغذیه +۵V کار می کرد. ۸۰۸۶ در سه مد و سرعت مختلف Clock کار می کند. ۸۰۸۶ استاندارد با فرکانس کلاک داخلی ۵MHZ و ۸۰۸۶-۲ و ۸۰۸۶-۴ با فرکانس های داخلی به ترتیب ۴MHZ , 8 کار می کنند. به همین دلیل از یک مولد / درایور تراشه مثل Intel 8284 برای تولید سیگنال ورودی کلاک ۸۰۸۶ استفاده می شود. ۸۰۸۶ کلاک خارجی در پایه CLK را به ۳ تقسیم می کند. این جمله به این معنی است که برای کلاک داخلی ۵MHZ، ۸۲۸۴ باید کلاک خروجی ۱۵MHZ را تولید کند تا به پایه CLK تراشه ۸۰۸۶ متصل شود.
۸۰۸۶ دارای آدرس ۲۰ بیتی است و از اینرو می توان حداکثر تا ۲۲۰ dh 1MB از حافظه را آدرس دهی کند. ۸۰۸۶ از حافظه قطعه بندی شده استفاده می کند. نکته جالب توجه در ۸۰۸۶ این است که می تواند حداکثر تا ۶ بایت دستورالعمل را از حافظه پیش واکشی (PreFetch) کند و آن ها را به ترتیب به صف کند و بدین ترتیب سرعت اجرای دستورالعمل را بهبود بخشد.
حافظه ریزپردازنده بر اساس ۸۰۸۶ برحسب بایت پیکره بندی می شود. هر بایت می تواند منحصراً با آدرس های ۲۰ بیتی آدرس دهی شود. هر کلمه ۱۶ بیتی ۸۰۸۶ شامل هر دو بایت مجاور یکدیگر است. بایت آدرس کمتر (L.O.B) و بایت آدرس بیشتر (H.O.B) به شکل زیر می باشند:

بایت با ارزش کمتر بایت با ارزش بیشتر
۰۷H 26H
آدرس
آدرس
بنابراین کلمه ۱۶ بیتی ذخیره شده در آدرس زوج ۰۰۵۲۰عبارت است از:
اکنون کلمه ای را با آدرس فرد در نظر بگیرید:
L.O.B H.O.B
05H 3FH
آدرس
آدرس
کلمه ذخیره شده در آدرس فرد عباتست از ۳F0SH

معماری ۸۰۸۶
همانطوری که در شکل می بینیم، ریزپردازنده ۸۰۸۶ از نظر داخلی به دو بخش تابعی جدا تقسیم می شود. این دو بخش واحد واسط گذرگاه (BIU) و واحد اجرا (EU) می باشند. واحد BIU دستورها را واکشی می کند، داده ها را از حافظه و پورت ها میخواند و داده ها را به حافظه و پورت های I/O می نویسد. Eu دستورهایی را که اخیراً توسط BIU واکشی شده اند را اجرا می کند. وظایف واحدهای BIU و Eu از یکدیگر مستقل هستند. BIU پردازنده ۸۰۸۶ را به دنیای بیرون مرتبط می سازد. BIU تمامی عملیات گذرگاه خارجی را آماده می سازد. BIU شامل ثبات های سگمنت، اشاره گر به دستور (IP)، صف دستورالعمل و مدارهای کنترل گذرگاه و تولید آدرس می باشد و اعمالی چون واکشی و صف بندی دستورها و کنترل گذرگاه را انجام میدهد.
صف دستور BIU به شکل FIFO است و گروهی از ثبات هایی است که شامل ۶ بایت کد دستور واکشی شده از جافظه هستند. این امر با توجه به تسریع (Speed up)، اجرای برنامه را با همپوشانی (Over lupping) واکشی دستور با اجرا انجام میدهد. این مکانیزم را به عنوان پایپ لاین می شناسیم. چنانچه صف پر باشد و Eu برای دستیابی بحافظه درخواستی به BIU ندهد، BIU هیچ سیکل گذرگاهی را انجام نمی دهد. از طرف دیگر، اگر BIU پر نباشد و حداقل بتواند دو بایت را ذخیره سازد و Eu درخواستی را برای دستیابی بحافظه ندهد، BIU می تواند دستورالعمل ها را پیش واکشی کند. هرچند که اگر BIU برای دستیابی بحافظه توسط Eu وقفه داده شود درحالیکه BIU در حال پردازش واکشی یک دستورالعمل باشد، BIU ابتدا واکشی را کامل می کند و سپس به Eu سرویس می دهد. چنانچه دستوری مانند Jump یا Subroutine Call داشته باشیم، BIU صف را reset میکند و پر کردن مجدد را پس از ارسال دستور جدید به Eu از نو شروع خواهد کرد.
همانطوری که می بینیم BIU شامل یک جمع کننده اختصاصی است که برای تولید آدرس ۲۰ بیتی استفاده می شود. منطق کنترل گذرگاه BIU تمامی سیگنال های کنترل گذرگاه همچون سیگنال های خواندن و نوشتن را برای حافظه و I/O تولید می کند.
BIU دارای چهار ثبات سگمنت ۱۶ بیتی است. این ثبات عبارتند از:
• ثبات سگمنت کد (CS)
• ثبات سگمنت داده (DS)
• ثبات سگمنت پشته (SS)
• ثبات فوق العاده (ES)
حافظه یک مگابایتی ۸۰۸۶ به سگمنتهایی حداکثر تا ۶۴KB تقسیم می‌شود. ۸۰۸۶ می تواند مستقیماً چهار سگنمت را در یک زمان ویژه (۲۵۶ کیلوبایت در حافظه یک مگابایتی) آدرس دهی کند. برنامه ها دستیابی به کد و داده را در سگمنت ها با تغییر محتویات ثبات سگمنت برای اشاره کرن به سگمنت های مطلوب، فراهم می سازد. تمامی دستورالعمل های جافظه باید در حافظه اصلی ذخیره شوند که توسط ثبات ۱۶ بیتی CS و افست ۱۶ بیتی در سگمنتی که در اشاره‌گر دستور (IP) 16 بیتی گنجانده شده به آن ااشره می شود. BIU آدرس فیزیکی ۲۰ بیتی داخلی را به وسیله آدرس منطقی فراهم شده توسط برنامه نویس (۱۶ بیت CS و ۱۶ بیت IP) تولید می‌کند. این کار با شیفت منطقی چهار بیتی CS به چپ و افزودن محتوای ۱۶ بیتی IP تولید می شود. به عبارت دیگر CS توسط BIU برای تولید آدرس فیزیکی ۲۰ بیتی در ۱۶ ضرب می شود. به این معنی که تمامی دستورالعمل های برنامه نسبت به محتویات CS در ۱۶ ضرب شده و سپس به آفست به دست آمده از ۱۶ IP بیتی اضافه میشود.
دقت کنید که برای آدرس های کلمه، برنامه نویس از آدرس های مرتبه کمتر (زوج یا فرد) برای مشخص ساختن کلمه ۱۶ بیتی استفاده می کند.
۸۰۸۶ همیشه به یک کلمه ۱۶ بیتی به / از حافظه دستیابی پیدا می کند. ۸۰۸۶ می تواند در صورتیکه اولین بایت کلمه در آدرس زوج واقع شده باشد، در یک عملیات کلمه ۱۶ بیتی را بخواند. به عبارت دیگر اگر اولین بایت کلمه یک آدرس فرد باشد، ۸۰۸۶ باید دو دستیابی به حافظه را برای خواندن دو بایت متوالی از حافظه انجام دهد. در این حالت ۸۰۸۶ از بایت یا بایت هایی که مورد نظرش نیست صرفنظر می کند. بطور مثال، دستور ADDR و MOV BX را در نظر بگیرید. دقت کنید وجود X (H یا L) به دنبال ثبات ۸۰۸۶ نشان دهنده آن است که انتقال ۱۶ بیتی یا ۸ بیتی است.
این دستور محتوای مکان حافظه ۲۰ بیتی آدرس دهی شده فیزیکی را که توسط ADDR آدرس دهی می شود به ثبات ۱۶ بیتی BX منتقل می کند. اگر ADDR آدرس ۲۰ بیتی زوج مثل باشد دستور MOV محتوای BL را با محتوای خانه حافظه و محتوی ثبات BH را با محتوی آدرس در یک بار دستیابی پر می کند. اما اگر از ADDR در آدرس فرد مثلاً باشد، دستور فوق BL را با محتوای در و BH را با محتوی در دو بار دستیابی حافظه Load می کند. دقت کنید ۸۰۸۶ به آدرس و دستیابی پیدا می‌کند ولی محتوی را کنار می گذارد و نیز در عمل دوم به و دستیابی می کند ولی از محتوای چشم پوشی می کند.
اکنون دستوری مانند ADDR و MOV BH را در نظر بگیرید. اگر آدرس ADDR زوج (مثل۵۰۰۰۲) باشد، این دستور MOV به هر دو خانه ۵۰۰۰۲ و ۵۰۰۰۳ دستیابی می کند ولی BH را با محتوای ۵۰۰۰۲ پر کرده و از محتوی ۵۰۰۰۳ صرفنظر می کند. اما اگر ADDR در آدرس فرد باشد (مثل ۵۰۰۳) دستور MOV ثبات BH را با ۵۰۰۰۳ پر کرده و از ۵۰۰۰۲ صرفنظر می کند.
خانواده ۸۰۸۶ دارای دو نوع ریزپردازنده ۱۶ بیتی است: ۸۰۸۶ و ۸۰۸۸٫ اختلاف مهم این است که پردازنده چگونه با دنیای بیرون ارتباط برقرار می کند. ۸۰۸۸ دارای یک مسیر داده (data path) 8 بیتی به حافظه I/O است ولی ۸۰۸۶ دارای یک مسیر داده خارجی ۱۶ است. پس ۸۰۸۸ مجبور به دوبار عمل برای خواندن یک کلمه ۱۶ بیتی در حافظه است. البته در بیشتر حالات این دو پردازنده مشابه هستند. از ۸۰۸۸ در طراحی کامپیوترهای شخصی IBM استفاده شده است.
۸۰۸۶ می تواند به شکل یک سیستم تک پردازنده کوچک (می نیمم مد در صورتیکه پایه به high تنظیم شود) و یا به شکل یک سیستم چند پردازنده ای (ماکزیمم مد در صوتیکه پایه به low تنظیم شود) پیکره بندی می گردد. در یک سیستم مفروض، پایه دائماً به high یا low متصل می شود. برخی از پایه های ۸۰۸۶ دارای توابعی دوگانه بسته به نوع انتخاب سطح ولتاژ پایه هستند. در مد می نیمم این پایه ها سیگنال های کنترلی را مستقیماً به حافظه و وسایل I/O انتقال می دهند. از مد ماکزیمم این پایه ها دارای وظایف متفاوتی برای نسهیلات سیستم های مالتی پروسسور است. در مد ماکزیمم توابع کنترلی که معمولاُ در مد می نیمم نشان داده می شوند، فرض می شود که به وسیله تراشه ای مثل کنترل گذرگاه ۸۲۸۸ پشتیبانی می شوند.
پس از پیشرفت های فناوری، اینتل پردازنده ای پیشرفته تر ۸۰۱۸۶ و ۸۰۱۸۸ را که نسخه های پیشرفته تری از ۸۰۸۶ و ۸۰۸۸ بودند عرضه کرد. سرعت کلاک این ها ۸MHZ بود که تقریباً دو برابر پردازنده های قبلی بودند. در روی این پردازنده‌های جدید از واحدهای جانبی مانند کنترل کننده DMA با تایمر ۱۶ بیتی و واحد کنترل کننده وقفه استفاده می کنند. شبیه ۸۰۸۶، ۸۰۱۸۶ دارای گذرگاه داده ۱۶ بیتی و ۸۰۱۸۸ دارای گذرگاه داده ۸ بیتی است و به غیر از این، معماری و مجموعه دستورهای ۸۰۱۸۶ و ۸۰۱۸۸ مشابه است. هم چنین ۸۰۱۸۶ و ۸۰۱۸۸ دارای یک مولد کلاک موجود در تراشه است که فقط از یک کریستال برای تولید کلاک استفاده می کند. مشابه ۸۰۸۵، فرکانس کلاک از نظر داخلی به ۲ تقسیم می شود. یعنی کریستال خارجی ۱۲ یا ۱۶MHZ باید برای تولید فرکانس داخلی کلاک ۶MHZ یا ۸MHZ استفاده شود. ۸۰۱۸۶/۸۰۱۸۸ در یک بسته ۶۸ پایه ای ساخته شده و هر دو پردازنده دارای مدارهای کنترل کننده اولویت وقفه برای فراهم ساختن ۵ پایه وقفه هستند. مشابه ۸۰۸۶/۸۰۸۸ پردازنده های ۸۰۱۸۶/۸۰۱۸۸ می توانند مستقیماً ۱MB از حافظه را آدرس دهی کنند. و دارای ۱۰ دستورالعمب جدید نسبت به مجموعه دستورهای ۸۰۸۶/۸۰۸۸ هستند. مثلاً دستورهای IN و OUT برای گرفتن و یا نوشتن بایت یا کلمه رشته به کار می روند. از سوی دیگر ۸۰۲۸۶ دارای قابلیت های اضافی چون حفاظت (Protection) و مدیریت حافظه نسبت به معماری ۸۰۸۶ است. ۸۰۲۸۶ با سرعت ۸MHZ دارای throughput تا ۶ برابر در مقایسه با ۸۰۸۶ با سرعت ۵MHZ است. ۸۰۲۸۶ در بسته ۶۸ پایه ای ساخته شده است و می تواند در سرعتهای کلاک ۴، ۶ یا ۸ مگاهرتز کار کند و به مولد کلاک خارجی ۸۲۲۸۴ برای تولید کلاک نیاز دارد. پردازنده ۸۰۲۸۶ کلاک خارجی را به ۲ برای تولید کلاک داخلی تقسیم می کند و نوعاً در سیستم های multiuser و multitasking استفاده می شود. ۸۰۲۸۶ در دو مد مختلف کار می کند. Real Addr و آدرس مجازی حفاظت شده.
در واقع آدرس فیزیکی تقلیدی از ۸۰۸۶ با کارآیی بالا است. در این مد ۸۰۲۸۶ مستقیماً تا ۱۶ مگابایت حافظه را آدرس دهی کند. مد آدرس دهی مجازی، مدیریت حافظه مجازی، مدیریت Task و حفاظت را فراهم می سازد. برنامه نیس می تواند یکی از این دو مد را، با بارگذاری مناسب داده با دستورهای Load و Store در ثبات کلمه حالت ماشین (MSW) (Machine Status Word)که ۱۶ بایتی است، انتخاب کند.

مثلاً دستورهای
Load MSW register = LMSW
Store MSW register = SMSW
80286 به عنوان CPU در کامپیوترهای شخصی IBM PC/AT به کار گرفته شد. نسخه های پیشرفته تری مانند ۳۸۶ و ۴۸۶ و … بعداً بررسی خواهد شد.
مثال:

۲۰ بیت آدرس فیزیکی به شکل زیر محاسبه می شود
محتوای CS چهار بیت به یک شکل منطقی به چپ شیفت داده می شود

آدرس فیزیکی ۲۰ بیتی
BIU همیشه چهار صفر را در چهار بیت مرتبه پائین آدرس فیزیکی (سگمنت) درج می کند. به عبارت دیگر CS شامل base یا store سگمنت کد جاری و IP شامل فاصله یا distanc از این آدرس به بایت دستور بعدی است کد مناسب واکشی شود. دقت کنید که داده های بلافاصله بعدی به عنوان بخشی از سگمنت کد در نظر گرفته می شوند.
ثبات SS به پشته جاری اشاره می کند. آدرس فیزیکی ۲۰ بیتی پشته از ss و sp برای دستورهای پشته مانند push و pop محاسبه می شود. برنامه نویس می تواند از ثبات BP به عوض sp برای دستیابی به پشته در مد آدرس دهی پایه استفاده کند. در این حالت آدرس فیزیکی ۲۰ بیتی از BP و ss محاسبه می شود.
ثبات DS به سگمنت داده جاری اشاره می کند. برای اغلب دستورها، عملوندها از این سگمنت واکشی می شوند. محتوی ۱۶ بیتی SI (شاخص مبدأ) و DI (شاخص مقصد به عنوان آفست برای محاسبه آدرس فیزیکی ۲۰ بیتی استفاده می شوند.
ثبات ES به سگمنت اضافی (Extra Segment) که داده‌ها ذخیره می‌شوند اشاره دارد (علاوه بر ۶۴K اشاره شده توسط DS). دستورهای رشته معمولاً از ES و DI برای تعیین آدرس فیزیکی ۲۰ بیتی مقصد استفاده می کنند.
سگمنت ها می توانند دارای چهار وضعیت باشند:
• Continious
• Partially Over lapped
• Fully overlapped
• Disjoint
شکل زیر پنج سگمنت (#۰ تا #۴) را نشان میدهد که در حافظه فیزیکی ذخیره شده اند:

نکته <= هر سگمنت باید از مرزهای حافظه ۱۶ بایتی آغاز شود.
مثالهایی از مقادیر سگمنت براساس آدرس‌فیزیکی شروع شده در ، ، ، ، … و باشد. هر مکان حافظه فیزیکی می تواند به یک یا چند سگمنت منطقی Map شود.
یک سگمنت ممکن است با بیش از یک ثبات سگمنت اشاره دهی شود. مثلاً، DS و ES ممکن است به سگمنت مشابهی در حافظه اشاره کنند اگر رشته گنجانده شده در آن سگمنت به عنوان یک سگمنت Source در یک دستور رشته و به عنوان سگمنت مقصد در دستور رشته ای دیگر باشد. دقت کنید که در یک دستور رشته سگمنت مقصد باید توسط ES اشاره دهی شود.
قابل یادآوری است که کدها نباید در ۶ بایت آخر حافظه فیزیکی نوشته شوند. نقص این مسأله ممکن است منجر به واکشی opcode از حافظه غیرموجود شوند و سبب hang کردن cpu گردد.

طراحی سیستم با استفاده از ۸۰۸۶
در این بخش می خواهیم مفاهیم اصلی مربوط به اینترفیس ۸۰۸۶ را به تراشه های جانبی مانند حافظه و I/O بررسی کنیم.
پایه ها و سیگنال های ۸۰۸۶
پایه ها و سیگنال های ۸۰۸۶ در شکل زیر نشان داده شده است.

سیگنالهای معمولی
نوع تابع نام
دوطرفه باس آدرس / داده ADI5-AD0
خروجی سه حالته آدرس/وضعیت A19/56-A16/S3
خروجی سه حالته Status/Bus high enable
ورودی Minimum/Maximum در کنترلی
خروجی سه حالته کنترل خواندن
ورودی انتظار برای کنترل تست TEST
ورودی کنترل وضعیت انتظار READY
ورودی Reset سیستم RESET
ورودی Interrupt request INTR
ورودی کلاک سیستم CLK
ورودی زمین GND
سیگنالهای مد می نیمم
نوع تابع نام
ورودی Hold request HOLD
خروجی Hold ACK HLDA
خروجی سه حالته کنترل نوشتن
خروجی سه حالته Memory/IO Control
خروجی سه حالته Data Transmit/Recive
خروجی سه حالته Data Enable
خروجی سه حالته Address Latch enable ALE
خروجی Interrput ACK INTA

سیگنال مد ماکزیمم

نوع تابع نام
دوطرفه Hold request
Access Control
خروجی سه حالته Bus priority lock
Control
خروجی سه حالته Bus cycle status , ,
خروجی Instruction Queve
Status QS1, QS0

تمامی پایه های ۸۰۸۶ از نوع TTL هستند. همانطوری که قبلاً گفتیم ۸۰۸۶ می تواند در دو مد مختلف عمل کند. می نیمم مد (تک پردازنده) و ماکزیمم مد (چند پردازنده ای). پایه ورودی برای انتخاب یکی از این دو مد بکار می رود. اگر باشد، ۸۰۸۶ در مد می نیمم کار می کند. در این مد، ۸۰۸۶ برای پشتیبانی می نیمم در سیستم های تک پردازنده ای که دارای وسایل کمی هستند که از باس استفاده می کنند، به کار می رود.
اگر باشد، ۸۰۸۶ در مد ماکزیمم تعریف می شود تا از سیستم های چند پردازنده ای پشتیبانی کند. در این حالت اینتل ۸۲۸۸ که یک باس کنترلر است به ۸۰۸۶ برای فراهم ساختن کنترل های باس و سازگاری با معماری چندگذرگاهی اضافه می شود.
AD0-AD15 خطوط گذرگاه ادغام شده آدرس/داده ۱۶ بیتی هستند. در اولین سیکل کلاک AD0-AD15 16 بیت مرتبه پائین آدرس می باشند. ۸۰۸۶ آدرس ۲۰ بیتی دارد و چهار خط مرتبه بالای ادرس، با سیگنال های وضعیت ۸۰۸۶ مالتی پلکس هستند. این سیگنال ها عهبارتتد از:
A16/S3 و A17/S4 و A18/S5 و A19/S6
در خلال اولین پریود کلاک از سیکل گذرگاه (سیکل نوشتن یا خواندن)، کل آدرس ۲۰ بیتی در این خطوط در دسترس است. در تمامی دیگر سیکل های کلاک برای عملیات حافظه و I/O، ADI5-AD0 شامل داده ۱۶ بیتی است و S3 و S4 و S5 و S6 خطوط وضعیت هستند. خطوط S3 و S4 به شرح زیر دیکلود می شوند:

A17/S4 A16/S3 تابع
۰ ۰ Extra Segment
0 1 Stack Segment
1 0 Code or no Segement
1 1 Data Segment

بنابراین پس از اولین سیکل کلاک اجرای دستورالعمل، پایه های A17/S4 و A16/S3 مشخص می کنند که کدام ثبات سگمنت بخش سگمنت آدرس ۸۰۸۶ را تولید می کند. بدین ترتیب، با دیکود کردن این خطوط و استفاده از خروجی های دیکودر به عنوان انتخاب کننده های تراشه (Chip Selects) برای تراشه های حافظه، حداکثر تا ۴ مگابایت (۱MB در هر سگمنت) را می‌توان فراهم ساخت. این امر درجه ای از حفاظت را به وسیله اجتناب از عملیات نادرست نوشتن در یک سگمنت که با سگمنت دیگر همپوشانی دارد و نابود کردن اطلاعات آن سگمنت فراهم می آورد.
A18/S5 و A19/S6 به عنوان A18 و A19 در خلال اولین پریود کلاک از اجرای دستور، به کار میروند. چنانچه یک دستور I/O اجرا شود، در خلال اولین پریود کلاک low باقی می ماند. در خلال تمامی دیگر سیکل ها، A18/S5 وضعیت پرچم تواناساز وقفه ۸۰۸۶ را نشان می دهد و A19/S6 به S6 تبدیل می شود و Low بودن پایه A19/S6 نشان می دهد که ۸۰۸۶ در گذرگاه است. در اثنای Hold Acknowledge پریود کلاک، ۸۰۸۶ پایه A19/S6 را سه حالته کرده وبدین ترتیب به bus master دیگر برای گرفتن کنترل گذرگاه سیستم اجازه می دهد.
۸۰۸۶ ، AD0-AD15 را در خلال سیکل Interrupt ACK یا سیکل Hold ACK سه حالتی می کند.
به عنوان Bus high enable در خلال اولین سیکل کلاک اجرای دستور به کار میرود. ۸۰۸۶ در این پایه در هنگام خواندن، نوشتن و Interrupt Ack که داده ها به شکل مرتبه بالای گذرگاه داده (AD15-AD8) انتقال می یابند، low قرار میدهد. هم چنین BHE می تواند با اتصال با AD0 برای انتخاب بانک های حافظه استفاده شود. در خلال تمامی دیگر سیکل ها BHE/S7 به صورت S7 استفاده می شود و ۸۰۸۶ دارای سطح خروجی اولین سیکل در این پایه خواهد بود.
هنگامی که ۸۰۸۶ داده ها را از حافظه یا یک مکان I/O می خواند، خواهد بود.
یک پایه ورودی است و فقط به وسیله دستور WAIT استفاده یم شود. ۸۰۸۶ یک وضعیت Wait را پس از اجرای دستور WAIT تا هنگامی که Low در پایه TEST باشد قرار میدهد. این ورودی به شکل داخلی در اثنای هر سیکل کلاک در لبه کلاک سنکرون می شود.
INTR یک ورودی وقفه maskable است. این خط latch نمی شود و بنابراین تا هنگام تشخیص و تولید وقفه باید در high نگاه داشته شود.
NMI ورودی non maskable interrupt است. RESET سیگنال ورودی reset سیستم است و این سیگنال باید برای حداقل چهار سیکل تا هنگام تشخیص و شناسایی high باشد و سبب می شود رجیسترهای DS، SS، ES، , Ip و Flagها همگی صفر شوند.
هم چنین CS به FFFFH تنظیم می گردد. پس از حذف reset از پایه RESET، ۸۰۸۶ دستورالعمل بعدی را از آدرس فیزیکی ۲۰ بیتی FFFF0H یعنی (CS:FFFFH,IP=0000) CS*16+IP واکشی می کند.
هنگامی که ۸۰۸۶ لبه هشت پالس را در RESET تنشخیص دهد، تمامی فعالیت های خویش را تا هنگام low شدن کلاک متوقف می سازد. هرگاه reset برابر low گردد، ۸۰۸۶ سیستم را به شرح زیر مقداردهی اولیه (initislize) می کند.

مؤلفه های ۸۰۸۶ محتوی
پرچم ها Clear
IP 0000H
CS FFFFH
DS 0000H
SS 0000H
ES 0000H
Queue Empty

سیگنال reset برای ۸۰۸۶ را می توان با ۸۲۸۴ تولید کرد. ۸۲۸۴ یک ورودی تریگر اشمیت (Schmitt Trigger) به نام برای تولید reset از خروجی reset دارد.
برای تولید reset به شکل صحیح، ورودی باید برای ۵۰MS پس از این که Vcc به می نیمم ولتاژ ۴٫۵V رسید زیر ۱٫۰۵ ولت نگاهداشته شود. سیگنال ورودی از ۸۲۸۴ را می توان با مدار RC ساده ای شبیه شکل زیر ساخت:
مقادیر R و C به شرح زیر قابل حصول هستند:

بطوریکه
میکروثانیه
مثلاً اگر C را به شکل اختیاری F 0.1 انتخاب کنیم R=1.88K
همانطوری که قبلاً گفتیم ۸۰۸۶ می تواند در مد مینیمم و ماکزیمم با استفاده از پایه پیکره بندی شود. در مد می نیمم، ۸۰۸۶ بخودی خود تمامی سیگنال های کنترل گذرگاه را تولید می کند. این سیگنال ها عبارتند از:
• (Database Transmit/ReCeive)
یک سیگنال خروجی لازم برای مد ۸۰۸۶ می نیمم است که از ۸۲۸۶/۸۲۸۷ (data bus transceiver) استفاده می کند و برای کنترل جهت جریان داده ها استفاده می شود.
• (Data Enable)
به شکل یک output enable برای ۸۲۸۶/۸۲۸۷ در سیستم می نیمم استفاده می شود. در خلال هر دستیابی بحافظه و I/O برای سیکل های ، برابر low می باشد.
• (Address Latch Enable) ALE
یک سیگنال خروجی فراهم شده توسط ۸۰۸۶ است و برای دی مالتی پلکس کردن AD0-AD15 به A0-A15 و D0-D15 در لبه پائین رونده ALE استفاده می شود. سیگنال ALE در ۸۰۸۶ مشابه ALE در ۸۰۸۵ است.
• این سیگنال خروجی برای تمایز دستیابی به حافظه ( =high) از ( =low) I/O استفاده می شود. هنگامی که ۸۰۸۶ یک دستور I/O را مانند IN یا OUT تولید می کند، این پایه را به low تنظیم می کند و هنگامی که رجوع به حافظه را مثل [SI] و MOV AX اجرا می کند، این پایه را به high تنظیم می کند.

در هنگام نوشتن در حافظه یا I/O به low تنظیم می شود.
• مانند در ۸۰۸۵ است. و برای سیکل های تأئید وقفه این پایه low می شود.
• ورودی HOLD و خروجی HLDA
از این پایه ها در DMA استفاده می شود. High بودن این پایه یعنی این که یک master دیگری تقاضای در اختیار گرفتن سیستم Bus را دارد و پایه HLDA را به عنوان ACK برابر high می کند و به طور همزمان پردازنده، گذرگاه را سا حالته کرده تا هنگامیکه برای پایه HOLD سیگنال low را دریافت کند. در این صورت پردازنده low را در پایه HLDA قرار میدهد. HOLD یک ورودی آسنکرون نیست.
• CLK
ورودی فراهم کننده زمان بندی اصلی برای ۸۰۸۶ و کنترل کننده گذرگاه
در مد ماکزیمم برخی از پایه های ۸۰۸۶ به صورت دوباره تعریف می شوند. مثلاً پایه های HOLD، HLDA، ، ، ، ، ALE و در مد می نیمم به شکل ، ، ، ، ، ، QS0 و QS1 به ترتیب در مد ماکزیمم تعریف می شوند. درمد ماکزیمم کنتلر ۸۲۸۸ اطلاعات وضعیت را از ، ، برای تولید زمان بندی گذرگاه و سیگنال های کنترل لازم برای سیکل گذرگاه دیکو.د می کند. ، ، در خروجی ۸۰۸۶ به شرح زیر دیکود می شوند:

توضیح
۰ ۰ ۰ int. ACK
0
0 1 خواندن پورت I/O
0 1 0 نوشتن در پورت I/O
0 1 1 halt
1 0 0 دستیابی به کد
۱ ۰ ۱ خواندن حافظه
۱ ۱ ۰ نوشتن در حافظه
۱ ۱ ۱ غیرفعال

• و

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 52700 تومان در 37 صفحه
87,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد