عکس پیش‌فرض نوشته

بیش از سه دهه از تولد اولین کامپیوترهای RISC (مخفف Reduced Instruction Computer Set) که میتوان گفت بر مبنای کاهش دادن دستورالعمل ها بود میگذرد؛ رعایت نکات مشخصی به عنوان اصول طراحی کامپیوترها با تکنولوژی های موجود تثبیت شده است.

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

با رعایت این قوانین در طراحی و ساخت سخت افزار و پردازنده ها میتوان در بهبود عملکرد (Performance) و سرعت بخشیدن به عملیات های انجام شده در CPU کمک کرد.

طراحی پردازنده های کامپیوتری

 

بنابراین طراحان سخت افزار و پردازنده ها باید همواره به یکسری قوانین کلی توجه داشته باشند و در کنار آن ملاحظاتی مرتبط با تکنولوژی داشته باشند.

 

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

در ادامه این بحث نگاهی به این قوانین خواهیم داشت.

 

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

برای کامپیوترهای پیشرفته روش های زیادی برای افزایش دادن کارایی وجود دارد. شروع کردن دستورالعمل های زیاد به طور همزمان مهم ترین این روش هاست.

اگر شما 500 میلیون دستورالعمل در هر ثانیه به پردازنده بفرستید، پردازنده ای با توان عملیاتی 500 MIPS (مخفف Million Instruction Per Second – میلیون دستورالعمل در هر ثانیه) خواهید داشت.

اینکه واقعاً کامل شدن هر دستورالعمل چقدر زمان می برد، مهم نیست. از آنجایی که فرستادن تعداد زیادی دستورالعمل کُند در زمانی کوتاه، در صورتی ممکن است اجرا شود که دستورالعمل های چندگانه بتوانند به طور همزمان اجرا شوند؛ موازی اجرا شدن دستورالعمل ها میتواند نقش مهمی در بهبود کارایی داشته باشد.

 

گرچه دستورات در برنامه ها به طور پشت سر هم نوشته میشوند، اما اگر توانایی اجرای همزمان یا خارج از ترتیب آنها وجود داشته باشد، هیچ تضمینی برای اجرای پشت سر هم خطوط کدهای برنامه وجود ندارد!

چرا که به دلیل مشغول بودن برخی قطعات در بعضی مواقع، امکان اجرای برخی دستورات وجود ندارد در حالی که دستورات بعد از آن میتوانند اجرا شوند.

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

 

دستورالعمل ها برای رمزگشایی باید ساده باشند

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

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

 

فقط دستورات LOAD و STORE اجازه دسترسی به حافظه را دارند

یکی از ساده ترین راه های موجود برای شکستن عملیات به مراحل جداگانه و تسریع آنها این است که برای بیشتر دستورالعمل ها، عملوندها از ثبات (Register) وارد شوند و پس از پردازش به یک رجیستر دیگر در CPU باز گردند.

عملیات نقل مکان عملوندها از حافظه به ثبات ها و برعکس میتواند به یک یا چند دستور خاص محدود شود.

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

نتایج تجربی به دست آمده گویای این معناست که صرفاً دستورات LOAD و STORE باید به حافظه رجوع کنند و باقی دستورات فقط در ثبات ها اجرا میشوند.

 

فراهم کردن تعداد بیشتری ثبات (Register) در CPU

چون دسترسی به حافظه نسبتاً کُند صورت میگیرد، برای این که یک WORD واکشی شده در زمان مورد نیاز در یک رجیستر باقی بماند، باید از تعداد نسبتاً زیادی ثبات (حداقل 32 رجیستر) استفاده کرد.

تمام شدن ظرفیت ثبات ها و بازگشت داده های آنها به حافظه و بارگیری مجددشان بسیار نامطلوب بوده و تا حد امکان باید از به وجود آمدن این وضعیت جلوگیری شود.

بهترین شیوه برای ممانعت از بروز این حالت داشتن تعداد کافی رجیستر در CPU خواهد بود.

البته باید توجه داشت که هر چه تعداد رجیسترهای یک CPU افزایش یابد، می بایست تکنولوژی ساخت آن این ظرفیت و پذیرش را داشته باشد و از طرفی نیز باعث مشکلاتی نظیر Power Wall و Low Hanging Fruits خواهد شد.

این آموزش بیش از ۳ سال قبل ارسال شده و اکنون در لیست به‌روزرسانی‌های سایت قرار دارد. اگر پیشنهاد یا انتقادی برای بهبود آموزش دارید، خوشحال می‌شیم به ما اطلاع بدهید.