بخشی از مقاله

چکیده:

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

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

در بررسی نتایج مطالعات روی زبانهای سطح بالا این نتیجهگیری حاصل شده است که نه تنها شبیه کردن معماری مجموعه دستورالعمل به زبانهای سطح بالا راهکار مؤثری در طراحیِ معماری نیست بلکه این نتایج به معماری سوق میدهند که دستورات کمتر و سادهتری داشته و از تعداد زیاد ثبات، فناوری کامپایلر و یا هردو بهره میبرد.

.1 مقدمه
سؤالی که بنا بر استفاده پردازندهها در هر یک از کاربردهای سیستم های محاسباتی جاسازی شده، رومیزی، سرور و دستگاههای همراه شخصی ممکن است ذهن معماران و طراحان سیستم را به خود مشغول کند انتخاب نوع معماری - وبطورخاص معماری مجموعه دستورالعمل - و بهینه بودن آن برای کاربرد مورد تقاضا میباشد. در مسیر انتخاب معماری دو گزینه جلوهگری می کنند، یکی معماری با مجموعه دستورالعملهای پیچیده - CISC - و دیگری معماری با مجموعه دستورالعمل کاهش یافته 

بطورکلی می توان گفت که برای پی ریزی معماری مطلوب اگر معمار به کوچکتر کردن اندازه کُد علاقمند است تا به کارایی، بهتر است معماری CISC و رمزگذاری متغیر دستورالعمل را انتخاب نماید اما معماری که به کارایی تمایل بیشتری دارد تا به اندازه کُد، بهتر است معماری RISC  و رمزگذاری ثابت دستورالعمل را برگزیند. اگر از بُعد دیگر هم باید به این مسئله نگاه کرد و آن هم هزینه بالای تولید نرم افزار است. محققین و تولیدکنندگان حیطه کامپیوتر برای رهایی از هزینه بالای تولید نرم افزار و نیز برای توانمند ساختن برنامه نویسان جهت بیان کوتاه تر الگوریتم ها، مراقبت بیشتر از جزئیات برنامه، استفاده راحتتر از برنامه نویسی ساخت یافته و شیءگرا و راحتتر کردن کار برنامه نویسی به دنبال ساخت زبانهای برنامهنویسی سطح بالا - HLL - قویتر و پیچیدهتر رفتند.

اما این شکافی را بین عملیات صورت گرفته در HLL و آن چیزی که در معماری کامپیوتر فراهم شده است به وجود آورد و لذا این شکاف منجر به اجرای برنامه بطور غیرکارآمد، پیچیدهتر شدن کامپایلر برای ترجمه نمودن عملیات سطح بالا به عملیات ماشین و نیز افزایش سایز برنامه میشد. طراحان کامپیوتر برای رفع این شکاف به سمت معماری CISCبا اجرا بصورت ریزکُد همراه با ساده تر کردن کار نویسنده کامپایلر حرکت کردند.

ظاهر امر نشان میداد که مسیر کاملا درست انتخاب شده اما از جانبی دیگر مطالعاتی برای بررسی رفتار زبان های سطح بالا - مثل C و - Pascal انجام گرفت که مسیر را به سمت معماری جدید RISC سوق داد و بررسی این مطالعات که در اینجا صورت میگیرد ثابت کرد که نزدیک کردن معماری مجموعه دستورالعمل به زبانهای سطح بالا - یعنی داشتن مجموعه دستورالعمل بزرگ و پیچیده و روش های آدرسدهی زیاد و پیچیده - مؤثرترین راهکار در طراحی معماری نیست بلکه درعوض، داشتن یک معماری مجموعه دستورالعمل کاهش یافته می تواند بهتر باشد.

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

درحال حاضر بسیاری از کامپیوترها RISC میباشند و معماری های مجموعه دستورالعمل متنوعی عرضه شده اند. لذا بهینه سازی و افزایش کارایی و دارا بودن حداقل ها برای پی ریزی یک معماری RISC بسیار مهم بوده و مورد توجه بسیاری از پژوهشگران بوده و میباشد و این چیزیست که پژوهشگر نهایتا به دنبال آن میباشد.

.2 بررسی مطالعات صورت گرفته بر روی مشخصه های زبان های سطح بالا

مطالعاتی که منجر به ترجیح معماری RISC شدند را می توان بطورکلی در سه حیطه بررسی بسامد پویای عملیات، عملوندها و فراخوانی رویهها درنظرگرفت. ابتدا جدول 1 برای ارائه فرکانس پویای نسبی وزن دار عملیات زبانهای سطح بالا آورده شد. این نتایج از مطالعات - Patterson and sequin, - 1982a آورده شده است.

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

جدول 1 .فرکانس نسبی وزندارِ عبارات زبان سطح بالا P=Pascal . - HLL - و C زبان های برنامه نویسی سطح بالای مورد استفاده می باشند.

در شکل 1 برگرفته شده از مطالعات - Patterson, 1985a - هر فراخوانی با خطی از بالا به پایین و به راست کشیده شده و هر بازگشت با خطی به بالا و به راست نشان داده شده است. در شکل دریچه ای با عمق w = 5 نشان داده شده است. تنها یک رشته از دستورات فراخوانی و بازگشت و حرکتی برابر 6    پنجره ای با عمق 8 تنها 1  از دستورات فراخوانی و بازگشت
درهریک  از دو جهت پنجره را جابجا می نماید. همانطورکه را جابجا می کند. بنابراین نتیجه گیری آن است که در یک
مشاده می شود برنامه اجرا شده می تواند در داخل پنجره ای مدت زمان کوتاه ارجاع به حافظه محدود به چند روال برای مدتی طولانی باقی بماند.

شکل .1 نمونه ای از عملکرد فراخوانی/بازگشت در یک برنامه.

همچنین طبق این مطالعات می توان اینطور نتیجه گرفت که بسیاری از ساختارهای تکراری برنامه ها متشکل از تعداد کمی دستور است که چندین بار تکرار می شوند. لذا در مدت تکرار، برنامه محدود به بخش کوچک نزدیک به هم می گردد. از طرفی در خیلی از برنامه ها، بخش عمده محاسبات شامل ساختارهای داده مانند آرایه است که در خیلی از این حالات، ارجاعات پی درپی به این ساتارها موجب استقرار نزدیک داده ها می گردد. در مورد عملوندها پترسون در مطالعاتش - Patterson and sequin, 1982a - به بسامد رخداد پویای دسته ای از متغیرها پرداخته است. جدول 2 نتایج حاصل از کار در برنامه های C و Pascal را نشان می دهد.

جدول.2 درصد پویای عملوندها در پاسکال و C این نتایج نشان می دهند که اکثریت ارجاعات به متغیرهای اسکالر ساده است و همچنین برای رویه مربوطه، بیش از 80 درصد اسکالرها متغیرهای محلی بوده اند. مطالعات پترسون پیشنهاد می کند که یک داوطلب اصلی برای بهینه سازی معماری، راهکار ذخیره و دستیابی متغیرهای اسکار محلی می باشند.

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

پس طبق مطالعات صورت گرفته اینطور می توان گفت که چندین ارجاع برای هر دستور زبان سطح بالا وجود دارد و بخش عمده ای از آن ها را عبارات جایگزینی - که دربسیاری موارد فُرم ساده a b دارند - تشکیل می دهند و این همراه با وجود محلیت و برتری ارجاعات به اسکالرها است، لذا با جمع بندی همه این مطالعات، سه عاملی که معماری RISC را شکل می دهند تثبیت می شوند

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