بخشی از مقاله

چکیده 

در سیستمهاي کامپیوتري بسته به نوع و کاربردي که دارند، ریزپردازندههاي متفاوتی به کار برده میشود. مزیت استفاده از ریزپردازنده-هاي 32 بیتی این است که عرض گذرگاه داده و دستور بیشتر است و بنابراین ﻣﯽﺗﻮان دادههاي بیشتري را از طریق گذرگاه اﻧﺘﻘﺎل داد. مدارهاي منطقی را میتوان به منظور رسیدن به بالاترین سطح ﺳﺮﻋﺖ و کاهش هزینه بر روي تراشههاي FPGA پیاده سازي کرد.

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

با تکنیک خط لوله چندین محاسبه بهطور همزمان در قطعات مختلف خط لوله پیشروي میکند. هر چه پهناي باند گذرگاه داده در ریزپردازنده بیشتر باشد سرعت کامپیوتر نیز بیشتر خواهد بود. و همچنین مشاهده میشود مجموع تأخیر قطعات سازنده ریزپردازندهي پیشنهادي از ریزپردازندههاي بررسی شده کمتر است.

ریزپردازنده طراحی شده به راحتی میتواند روي یک FPGA پیاده سازي شود و مانند یک ریزپردازنده واقعی کارکند، همچنین به دلیل کاهش پیچیدگیهاي سخت افزاري و کاهش هزینهها با کاهش سیمبنديها میتواند کیفیت مطلوبتري نسبت به پردازندههاي دیگر داشته باشد.

.1 مقدمه

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

 براي این کار هر دستور قبل از اجرا شدن باید از حافظه برداشت شود و سپس دستور خوانده شده دیکد و در نهایت دستورالعمل اجرا 4 شود. دستورالعملهاي انجام شده ماهیت و نوع عملیات مورد نظر را براي پردازنده مشخص خواهند کرد. با توجه به نوع دستورالعملها، یک ریزپردازنده سه عمل اساسی را انجام خواهد داد: -1 استفاده از واحد -2 ALU انتقال داده از یک محل حافظه به محل دیگر-3 اتخاذ تصمیم و پرش به یک محل دیگر

در طول سه دههي گذشته، تکنولوژي FPGA بهعنوان یک جاي-گزین قدرتمند براي ساخت سیستمهاي محاسبات بسیار موثر شناسایی شده است. FPGA یک مدار مجتمع قابل برنامهریزي توسط کاربر، با ظرفیت حدود 20000 تا چند میلیون گیت می-باشد که بر اساس سلولهاي منطقی قابل برنامهریزي طراحی شده است. براي طراحی سیستمهاي دیجیتالی با ابزارهاي مختلف و پیاده سازي آن توسط FPGA مراحل زیر باید طی شود:

- 1 وارد کردن طرح اولیه و کامپایل

- 2 شبیه سازي

- 3 سنتز و آماده کردن طرح براي پیاده سازي

- 4 فایل پیاد سازي

- 5 شبیه سازي زمانی

- 6 برنامهریزي FPGA

2.    روش طراحی ریزپردازنده پیشنهادي

هدف از انجام این پژوهش طراحی و بررسی ساختار یک ریزپردازندهي 32 بیتی است که در فرآیند پردازش دادهها بهینه عمل کند و رسیدن به بهترین منطق دست یافتنی با عملکرد در حال اجراي بهتر بر روي FPGA هاي XILINX، و همچنین اثبات قابلیت کاربرد آنها در کارایی بالاي محاسبات است. بنابراین بهمنظور رسیدن به این بهینگی چند منظوره براي ریزپردازنده، یک ریزپردازندهي 32 بیتی مورد

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

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

از جمله اجزاي اصلی و مهم ریزپردازندهي 32 بیتی RISC پیشنهادي شامل واحد حساب و منطق، شیفت دهنده، مقایسهگر، واحد کنترل، حافظه ي اصلی و یک حافظهي کش داخلی میباشد. در ادامه به بررسی تمام واحدهایی که در ریزپردازندهي پیشنهادي وجود دارند میپردازیم.

یکی از مؤثرترین راههاي افزایش سرعت سیستمهاي دیجیتال به-کارگیري تکنیک خط لوله است. از آن جا که بهبود بخشیدن یک زیر سیستم راحت تر از بهبود بخشیدن کل سیستم است، پردازنده به چندین زیر بخش تقسیم میشود. قطعات خط لوله عبارتند از:

: FETCH - 1 با هر پالس ساعت دستورات را از حافظهي دستور فراخوانی میکند.

:DECODE - 2 دستورات برداشت شده از حافظهي دستور را دیکد میکند تا سیگنالهاي کنترلی لازم براي سایر قسمت-هاي پردازنده تعیین شوند.

: EXECUTE - 3 اعمال حسابی و منطقی و مقایسه و شیفت را بر روي عملوندها اجرا میکند.

:WRITE-BACK - 4 نتایج حاصل از اجراي عملیات را از طریق یک رجیستر کمکی در مکان مناسبی از حافظه ذخیره می-کند.

لازم به ذکر است که با شروع هر پالس ساعت، PC که آدرس دستور بعدي را که باید از حافظه خوانده شود در خود نگه میدارد بهمنظور خواندن دستور بعدي یک واحد افزایش مییابد.

-  برداشت دستور

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

-  دیکد دستور

مرحله ي دوم از خط لوله واحد دیکد دستورات است. وظیفهي اصلی واحد دیکد این است که دستوراتی را که توسط واحد برداشت دستور از حافظهي دستور خوانده میشوند و در رجیستر دستور قرار میگیرند رمزگشایی کند. در این مرحله رجیستر دستور 32 بیتی دیکد میشود و تمام عملوندها و عملگرها و همچنین رجیسترهاي مبدأ و مقصد تعیین میشوند.

در پردازنده سه قالب رجیستري، بلافصل و پرش براي دستورات وجود دارد که براي هر سه قالب دستورات رجیستري، بلافصل و انشعاب بیتهاي 26 تا 31 از رجیستر دستور، OPCODE عمل را مشخص میکنند.

-  اجراي دستور

سومین مرحله از خط لوله جایی است که اعمال حسابی و منطقی و مقایسه و شیفت در آن انجام می شود. دستورات پس از گذر از مراحل برداشت و دیکد وارد مرحلهي اجرا میشوند. در این مرحله تمام دستورات با Operand هاي 32 بیتی کار میکنند و نتیجه نیز داخل یک ثبات 32 بیتی قرار میگیرد - در این پژوهش فرض بر این است که سرریز رخ نمیدهد - . واحد ALU اعمال حسابی و منطقی، شیفت دهنده شیفت حسابی، منطقی و چرخشی و مقایسهگر عملیات مقایسه را بر روي Operand ها انجام میدهد. هر سه واحد بهطور همزمان با هم عمل میکنند.

-  ذخیرهي نتایج

سرانجام خط لولهي چهار قطعهاي در مرحلهي WRITE-BACK به پایان میرسد. در این مرحله نتایجی که از واحد حساب و منطق، واحد مقایسه و واحد شیفت بهدست میآید از طریق یک رجیستر کمکی در مکان مناسبی از حافظه ذخیره می شود و اولین دستور خوانده شده از حافظه ي دستور با طی کردن تمام قطعات خط لوله در 4 پالس ساعت از خط لوله خارج میشود.

-  واحد کنترل

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

-  رجیسترهاي ریزپردازنده

براي پردازنده 32 ثبات 32 بیتی همه منظوره وجود دارد که بهصورت آرایهاي از رجیسترها کنار یکدیگر قرار گرفتهاند . در این طرح به-منظور بالا بودن سرعت عملیات ثباتی عملوندها در یکی از رجیسترهاي رجیستر فایل قرار میگیرند. بنابراین وجود 32 رجیستر عمومی به پردازنده سرعت بالایی میبخشد. در کنار این 32 رجیستر عمومی این پردازنده داراي شمارندهي برنامه - - PC، رجیستر آدرس - - AR، رجیستر کمکی - TR - 7 و رجیستر دستور - IR - 8 نیز می-
باشد.

-  واحد حساب و منطق - - ALU

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

-    واحد مقایسه

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

-  واحد شیفت

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

-  تداخلهاي خط لولهي پردازنده

در برخی موارد دستور بعدي نمی تواند در سیکل بعدي اجرا شود به این اثر هازارد - HAZARD - میگویند. براي حل مشکل تداخلهاي پردازنده: از دو حافظهي جداگانه براي دادهها و دستورات استفاده میکنند و هازارد ساختاري را برطرف میکند بههمین دلیل ریزپردازندهي پیشنهادي دو حافظه ي اصلی و دو حافظهي کش سریع جداگانه براي دادهها و دستورات در اختیار دارد.

-  واحد حافظه

فعالیت ریزپردازنده بدون وجود حافظه امکانپذیر نیست، از این رو این پردازنده در کنار حافظه ي RAM روي یک تراشه قرار میگیرد. حافظهي RAM شامل یک حافظهي داده و یک حافظهي دستور می-باشد.

براي این پردازنده یک حافظه ي RAM با ظرفیت 27×32 در نظر گرفته می شود. ظرفیت هر یک از حافظههاي داده و دستور 26×32 میباشد. شمارنده ي برنامه در طول فاز برداشت، دستورات موجود در حافظه ي دستور را که باید از حافظه خوانده شوند آدرسدهی میکند. رجیستر آدرس در طول فاز اجرا به دادههاي داخل حافظهي داده اشاره میکند و عملوندهاي حافظهي داده را آدرسدهی مینماید.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید