یکشنبه, 13 خرداد 1403

 



موضوع: تفاوت پردازنده های RISC و CISC

تفاوت پردازنده های RISC و CISC 9 سال 5 ماه ago #109757

در سیسک ها پیچیده گی در سخت افزار وجود داره ولی ریسک ها برعکس این نرم افزاره که پیچیده است.
یک مثال ساده
عملیات ضرب در یک سیسک بصورت یک واحد سخت افزاری ضرب کننده پیاده سازی میشه ولی در یک ریسک به این صورت پیاده سازی میشه که اگه کاربر تو برنامه اش مینویسه 2*2 کامپایلر اونو بر می داره و جای اون یه حلقه for میزاره که 2 بار 2 رو با خودش جمع کنه
البته این یک مثال ساده است عمومیت نداره مثلآ ریسک های فعلی تقریبآ همه ضرب کننده دارن به هر حال در مثال مناقشه نیست!

ریسک ها به خاطر همین سادگی سخت افزار بسیار سریع هستند .البته از دید سخت افزار در بعضی کاربردها ریسک ها بازدهی بیشتری دارند و در بعضی سیسک ها.
رابطه کلی بازدهی :
time time cycle instruction
*
*
=
program cycle instruction program
در این رابطه بازدهی به صورت تعداد برنامه ای که در واحد زمان اجرا میشه تعریف شده.
ضریب (time per cycle) یک پارامتر مشترک هست که با پیشرفت تکنولوژی در هر دو پیشرفت میکنه و میشه گفت برابری بین هر دو وجود داره.

ریسک ها ضریب تعداد سیکلها لازم برای اجرای دستور (cycle per instruction) رو کاهش می دن ولی در مقابل اون دستوراتی که برای نوشتن یک برنامه هستن رو افزایش میدن یعنی کاهش یک ضریب به قیمت افزایش و فدا کردن یک ضریب دیگه پس برای کاربرد هایی مناسب هست که در اون بهینه شدن بر اساس پارامتر (cycle per instruction) مد نظر باشه .
سیسک ها دقیقآ بر عکس هستند پس برای کاربردهایی که (instruction per program) پارامتر مهمی برای بهینه شدن هست به کار میرن.

دستورات ریسک اصطلاحآ یونیفرم هستند یعنی اگر فرض کنیم ماشین 8 بیتی داریم در یک ریسک فرضی 2 بیت همیشه کد دستور(opcode)و 2 بیت آدرس یا عملوند هست ولی در یک سیسک این می تونه متفاوت باشه مثلآ دستورات 2 بیتی و 3 بیتی می تونن وجود داشته باشند و طول آپ کد ثابت نیست.

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

ریسکها اصلآ ساده نیستند! سخت افزار ساده دارن ولی نرم افزار فوق العاده پیچیده است. به لطف کامپایلرهای پیشرفته و محیط های توسعه امروزی به راحتی می تونیم با ریسک ها کار کنیم وگرنه ریسکها می تونن کابوس برنامه نویس ها باشن مثل قبل که مایکروسافت قول نرم افزاری دنیا ترجیح داد به سمت محصولات سیسک گرون قیمتx86 حرکت کنه تا به سمت ریسک هایی با قیمت های به مراتب پایین مثل ARM
اما اینکه سیسک ها کند هستن هم تصور اشتباهی است . در یک کار مشابه مثلآ ضرب یک عدد در یک ماتریس بزرگ که در کارهای گرافیکی فوق العاده مرسوم هست رو درنظر بگیرید. مثلآ موقعی که کاراکتر بازی از یه جای روشن مثل محوطه باز وارد یه جای تاریک مثل یه خونه میشه.به یکباره باید کل تصویر به یک نسبت تاریک بشه یعنی یه عدد که در یک ماتریس بزرگ باید ضرب بشه
تکنولوژی MMX که از Pentium به بعد به x86 اضافه شد این کار رو فوق العاده ساده و سریع با یه دستور برنامه نویس انجام میده در حالیکه در یک ریسک باید هر درایه ماتریس رو تک تک بخونید ، در عدد ضرب کنید ، سر جاش بنویسید!
البته این تکنولوژی امروزه برای ARM توسعه پیدا کرده و اضافه شده ولی منظور کلیت مطلب بود.

در یک دستور ریسک ها سریع اند ولی هدف از یک برنامه یک تک دستور نیست. مثلآ همون مثال جمع رو فرض کنید.
یک سیسک که عمل جمع رو در 5 واحد زمانی و عمل ضرب رو در ده واحد زمانی انجام میده
یک ریسک که عمل جمع رو در 1 واحد زمانی و عمل ضرب رو هم اصلآ انجام نمیده

خوب ضرب 1000000*999999 در سیسک 10 واحد زمانی زمان می بره ولی در ریسک ؟؟؟؟

در یک عمل جمع ریسک 5 برابر سریع تره و لی در یک برنامه سیسک چقدر می تونه سریع باشه؟

ریسک ها کوچکی ارزانی و کم مصرف بودن رو به ارمغان آوردن!
مدير دسترسي عمومي براي نوشتن را غيرفعال كرده.
كاربر(ان) زير تشكر كردند: هانیه سلیمانی
مدیران انجمن: هانیه سلیمانی