ساختمان داخلی ریزپردازنده ۸۰۸۶/۸۰۸۸

ریزپردازنده ۸۰۸۶ یک ریزپردازنده ۱۶ بیتی است. یعنی در هر زمان حداکثر می تواند ۱۶ بیت داده را پردازش نماید. مفهوم دقیق پردازش در این بحث یعنی عملیات محاسباتی یا منطقی؛ که عملیات جابجایی را هم در این زمره قرار دادیم. این ریزپردازنده تقریبا از ۲۹۰۰۰ ترانزیستور تشکیل شده است.

آنچه در اینجا همیشه مورد نظر ما بوده و همواره تعقیب خواهد شد بررسی عملکرد این ریزپردازنده به منظور استفاده از آن در مدارات مختلف و کاربردهای گوناگون آن است. بنابراین هدف از بررسی ساختمان داخلی آن نیز، معرفی بلوک ها و اجزاء اصلی به کار رفته در آن به منظور برنامه نویسی و یا احیانا استفاده در طراحی مدار است.
در شکل زیر بلوک دیاگرام و اجزاء مهم آن با این دیدگاه آمده است.

gozar

خطوط ارتباطی این ریزپردازنده و دنیای خارج از آن از نظر ماهیتی به سه دسته تقسیم می شود که عبارتند از: خطوط آدرس و داده ها، خطوط کنترل و خطوط زمان بندی و تغذیه. البته این تقسیم بندی از دیدگاه سخت افزاری این ریزپردازنده است که بعدا دلیل آن را خواهیم دید و گرنه تقسیم بندی قبلی که در بحث معماری کامپیوتر روی آن تاکید شد و خطوط اصلی هر CPU را به سه دسته آدرس ، داده و کنترل تقسیم می نماید در جای خود باقی و ملحوظ است.

اینک به بررسی تک تک بلوک های فوق الذکر می پردازیم:

واحد محاسباتی/منطقی (ALU) که دانشجویان قبلا با این قسمت آشنا شده اند، و تمام اعمال محاسباتی و منطقی در این واحد انجام می گیرد. در واقع تمام عملیات اصلی ریزپردازنده در نهایت به ریزعملیاتی تقسیم می شود که آن ریزعملیات در واحد ALU به سرانجام می رسد. مثل عمل جمع که با مدار جمع کننده ایی که در داخل ALU وجود دارد صورت می پذیرد.

ثبات های عمومی ، ثبات های داخلی ریزپردازنده هستند که عملیات محاسباتی و منطقی (پردازش) بر روی داده های موجود در آنها انجام می گیرد و داده ها به منظور این گونه عملیات در داخل ریزپردازنده در این ثبات ها ذخیره می شوند. ثبات های اشاره گر هم همانطوریکه از نامشان بر می آید برای آدرس دهی کاربرد دارند که به همراه ثبات های قطعه بدین منظور استفاده می شود. در بخش بعدی ثباتهای ریزپردازنده و پرچم های آن به صور کامل بحث خواهد شد.

منظور از قرار دادن قسمتی با نام مدارات منطقی کنترل کننده، تاکید بر نشان دادن سایر مدارات داخل CPUاست که البته الزاما هم از نظر فیزیکی متمرکز نیستند و وظیفه کنترل قسمتهای مختلف و ارتباط بخش های گوناگون آن را بر عهده دارند.

برای بررسی بهتر عملکرد ریزپردازنده، ساختمان داخلی آن را به دو واحد مهم تقسیم می کنیم: واحد اجرا (یا اجرایی) و واحد واسطه گذرگاه که به اختصار آنها را به ترتیب EU و BIU می نامیم. مطلب مهم و جالب در این ریزپردازنده آن است که این دو واحد به صورت مجزا عمل می کنند (شما برای راحتی تصور کنید که به صورت آسنکرون نسبت به هم عمل می کنند)

واحد اجرا (EU)
همانطوریکه از نامش بر می آید، کار اصلی آن اجرای دستورالعمل هاست و شامل واحد محاسباتی و منطقی و ثبات های عمومی و ثبات پرچم هاست. واحد اجرا یک کار کاملا مشخص و تعریف شده ای دارد: اجرای دستورالعمل ها. یعنی دستورالعمل ها را از واحد BIU می گیرد و اجرا می کند.

واحد واسطه گذرگاه (BIU)
این واحد شامل ثبات های قطعه،ثبات های اشاره گر ، مدار تولید آدرس فیزیکی و صف دستورالعمل هاست. همانطوریکه از نامش بر می آید این واحد نقش واسطه بین گذرگاه داخلی ریزپردازنده و واحد EU از یک طرف و گذرگاه های خارجی آن را از طرف دیگر دارد. بنابراین تولید آدرس های لازم برای آدرس دهی در خارج از ریزپردازنده بر عهده این واحد است.

صف دستورالعمل ها
در این ریزپردازنده از یک بافر برای دستورالعمل ها به نام صف دستورالعمل ها استفاده شده است. طول این صف در ریزپردازنده ۸۰۸۶ شش بایت و در ۸۰۸۸ چهار بایت می باشد. این صف به منظور افزایش کارآیی و سرعت عملکرد CPU، در نظر گرفته شده است و به صورت FIFO عمل می کند یعنی کدهایی که اول وارد این صف شده اند، اول هم از صف خارج می شوند.

عملکرد این صف بدین صورت است که دستورالعمل ها از خارج ریزپردازنده (حافظه) وارد این صف می شود (عمل واکشی یا fetch) و واحد اجرا هم دستورالعمل ها را از این صف برداشته و اجرا می کند. پس ریزپردازنده دو کار متفاوت و همزمان انجام می دهد: یکی واکشی کردن دستورالعمل ها از حافظه که توسط BIU انجام می شود و دیگری (که می تواند همزمان با این کار انجام گیرد) اجرای دستورالعملی که واحد EU از صف دستورالعملها واکشی کرده و در حال اجراست.

بنابراین در شرایط عادی کار (توضیحات بیشتر در سایر مقالات میکرو رایانه) BIU مستقل از EU، دستورالعمل ها را از حافظه واکشی کرده و در صف دستورالعمل ها قرار خواهد داد و EU هم مستقل از کار BIU دستورالعمل ها را از جلو صف برداشته و اجرا خواهد کرد. یعنی دو کار متفاوت و همزمان که صرفا با همان ایده قرار دادن بافر کوچک (صف) در داخل ریزپردازنده این کار عملی شده است و انجام همزمان این دو عمل باعث بهبود کیفیت کار ریزپردازنده و بالا رفتن سرعت آن می شود و زمان واکشی دستورالعمل ها از حافظه را به طور قابل توجهی حذف می کند. به این ایده اصطلاحا پردازش خط لوله اطلاق می شود. در زیر دو شکل رسم شده و و این ایده با شکل مقایسه شده است:

exe

شکل بالایی برای ریزپردازنده ایی است که ایده صف در آن پیاده نشده است و در شکل پایینی هم همان ریزپردازنده با در نظرگرفتن صف دستورالعمل ها رسم شده است.(۸۰۸۶/۸۰۸۸) همانطوریکه ملاحظه می کنید زمان واکشی دستورات از حافظه، برای ریزپردازنده دوم به طور قابل توجهی حذف شده است.
در ابتدا که دستورالعملی برای اجرا وجود ندارد EU کاری انجام نمی دهد ولی در همان موقع BIU در حال واکشی دستورالعمل از حافظه است.