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

 

در اواسط دهه ۷۰ ریزپردازنده ها ساختار ساده ای داشتند و در این زمان هر ریزپردازنده از یک واحد پردازشگر مرکزی (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 ۲۶H
آدرس آدرس

بنابراین کلمه ۱۶ بیتی ذخیره شده در آدرس زوج ۰۰۵۲۰عبارت است از:

اکنون کلمه ای را با آدرس فرد در نظر بگیرید:

L.O.B H.O.B
۰۵H ۳FH
آدرس آدرس

کلمه ذخیره شده در آدرس فرد  عباتست از ۳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 را با ۵۰۰۰۳ پر کرده و از ۵۰۰۰۲ صرفنظر می کند.

خانواده ۸۰۸۶ دارای دو نوع ریزپردازنده ۱۶ بیتی است: ۸۰۸۶ و ۸۰۸۸٫ اختلاف مهم این…………………….

تعداد صفحات

39

حجم فایل

124 کیلوبایت

فرمت فایل

قابل ویرایش word