اگر از خورههای کامپیوتر باشید، آنگاه به احتمال زیاد نام دو واژه CISC (رایانه با دستورهای پیچیده) و RISC (رایانه کم دستور) را شنیدهاید. در واقع این دو اصطلاح به تفاوت در شیوه طراحی یک پردازنده اشاره میکنند. در ادامه این مطلب قصد داریم که بیشتر به تفاوت CISC و RISC بپردازیم.
بهعنوان مثال، پردازنده ARM موجود در گوشی شما، از معماری RISC استفاده میکند. در عین حال، پردازنده x86 موجود در کامپیوتر شما، از طراحی CISC برخوردار است.
منظور از Instruction Set یا همان مجموعه دستورالعملها چیست؟
هر زمان که بحث بر سر تفاوتهای موجود در بین واحدهای پردازش مرکزی یا همان CPUها باشد، آنگاه یکی از مواردی که باید در مورد آن بحث کرد، مجموعه دستورالعملها است. مجموعه دستورالعملهای یک CPU در واقع مجموعهای از عملیاتها هستند که یک پردازنده مرکزی میتواند بهطور طبیعی، آنها را اجرا کند. اینها عملیاتی هستند که در CPU و در سطح سختافزاری، رمزنگاری میشوند. این مجموعه میتواند از چندین تا هزاران دستورالعمل را شامل شود که البته این موضوع به طراحی CPU شما بستگی دارد.
به عبارتی دیگر، اگر عملیاتی در خارج از محدوده یک مجموعه دستورالعمل باشد، آنگاه پردازنده مرکزی قادر به اجرای آن نخواهد بود، زیرا سختافزار لازم برای آن را در اختیار ندارد. بیایید تا با بررسی یک نمونه مشابه، درک این قضیه را آسانتر کنیم. یک لامپ روشنایی را در نظر بگیرید. تولیدکننده لامپ، آن را بهگونهای طراحی کرده که انرژی الکتریسیته را به روشنایی و نور تبدیل کند. دلیل این قضیه نیز این است که لامپ از لحاظ سختافزاری میتواند چنین کاری را انجام دهد.
در اصل میتوان گفت که یک لامپ تنها میتواند انرژی برق را به روشنایی تبدیل کند و کار دیگری از آن ساخته نیست. به طرز مشابهی، مجموعه دستورالعملهای یک پردازنده مرکزی در واقع مجموعهای از عملیاتها هستند که CPU قادر به انجام آنها است. بهعنوان نمونه، تقریبا در داخل مجموعه دستورالعملهای تمامی CPUها، دستور “جابجایی” وجود دارد. این دستور برخی از دادهها را از حافظه ذخیرهسازی مبدا گرفته و سپس آنها را به حافظه ذخیرهسازی مقصد، منتقل میکند.
هر زمان که یک CPU بخواهد که دادهها را منتقل کند، آنگاه دقیقا میداند که چگونه این کار را انجام دهد، زیرا سختافزار آن پیرامون چنین مسائلی طراحی شده است. بهطور خلاصه، Instruction Set تمامی عملیاتهایی را که یک CPU در سطح سختافزاری پشتیبانی میکند، شامل میشود.
این مطلب را نیز بخوانید: AMD یا Intel؟ کدامیک پردازندههای بهتری میسازد؟
یک CPU چگونه کار میکند؟
یک پردازنده مرکزی را میتوان مارپیچی از مدارهای الکتریکی دانست. این مدارهای الکتریکی بهگونهای طراحی شدهاند که مجموعه دستورالعملهای طبیعی پردازنده را در اختیار آن قرار دهند. بنابراین از آنجایی که مدارهای موردنیاز در داخل CPU تعبیه شدهاند، پس این سختافزار میداند که چگونه باید عملیاتهای موجود در داخل یک مجموعه دستورالعمل را اجرا کرد.
مدارهای مربوط به یک عملیات به وسیله یک سیگنال الکتریکی فعال شده و بنابراین یک پردازنده مرکزی میتواند عملیاتی مشخص را اجرا کند . هنگامیکه یک مدار فعال میشود، آنگاه CPU نیز روتین مربوط به آن مدار را اجرا خواهد کرد.
اگر یک پردازنده بخواهد که عملیاتی پیچیده همانند ارسال یک توییت را اجرا کند، آنگاه برنامههای نرمافزاری باید در هر ثانیه، میلیونها سیگنال الکتریکی را ارسال کنند. هر کدام از این سیگنالها نیز یکی از دستورهای مجموعه دستورالعملهای CPU را هدف قرار میدهد. در اینجاست که مفهوم RIS و CIS وارد عمل میشوند.
RISC چیست؟
تفاوت RISC و CISC را با بحث در رابطه با اولی آغاز میکنیم. همانطور که از نام کامل آن معلوم است، یک پردازنده مرکزی مبتنی بر RISC، یک مجموعه عملیات ساده دارد. این دستورهای ساده شده، میتوانند به اهدافی ساده دست پیدا کرده و جهت اتمام کارها فقط یک چرخه را طی میکنند.
از آنجایی که RISC از دستورهای ساده برخوردار است، پس چنین پردازندههایی نیز جهت انجام این عملیات ساده، نیازی به داشتن مدارهای پیچیده ندارند. به همین دلیل است که هزینه طراحیهای RISC نیز کمتر است.
جهت درک بهتر جزئیات اینگونه پردازندهها، بیایید تا نگاهی به مفاهیم طراحی آنها بیندازیم. اول اینکه باید بگوییم که CPUهای مبتنی بر RISC، هر دستور را در طی یک چرخه واحد به اتمام میرسانند. دوم اینکه این پردازندهها تنها بر روی دادههای ذخیره شده در رجیسترها، عملیات انجام میدهند. این قضیه بدین دلیل است که یکی از گلوگاههای اصلی مرتبط با CPUها در رابطه با توانایی انجام وظایف، به عدم تطابق سرعت CPU و سرعت حافظه اصلی (رم) مربوط میشود. حافظه اصلی در قیاس با یک پردازنده مرکزی، بسیار کندتر است.
بدین ترتیب اگر یک پردازنده مجبور شود که با دادههای ذخیره شده در حافظه رم کار کند، آنگاه این فرایند باعث ایجاد گلوگاه شده و در نتیجه سرعت پردازش دادهها نیز کاهش پیدا میکند. در طراحی RISC، دادهها بر روی رجیستریهای موجود در CPU، ذخیره و بارگذاری میشوند. طبیعتا دلیل این موضوع نیز به بالاتر بودن سرعت رجیسترها در قیاس با حافظه رم مربوط میشود.
مورد سوم هم اینکه ساختارهای RISC آنقدر ساده هستند که هیچ لایه میکروکد تفسیری جهت ترجمه دستورالعملها به فرمهای سادهتر، در آنها وجود ندارند. در نهایت هم اینکه طراحیهای RISC از مسیرسازی اطلاعات (Pipelining) پشتیبانی میکنند. بدین ترتیب میتوان بخشهایی از چندین دستور را بهصورت همزمان اجرا کرد. از آنجایی که این نوع پردازندهها سرعت کلاک بالاتری دارند، پس طبیعی است که سریعتر نیز باشند. مسیرسازی اطلاعات یکی از راهکارهای استفاده از این سرعت بالاتر و اجرای پخشهای چندین دستور بوده و بدین ترتیب میتوان کارایی را افزایش داد.
در نهایت بهصورت خلاصه میتوان گفت که پردازندههای RISC دارای دستورالعملهای ساده بوده، سرعت کلاک بالاتری دارند، ساختار مسیرسازی اطلاعات در آنها بهینهتر است، عملیاتها را بر روی رجیسترها بارگذاری و ذخیره میکنند و همچنین میتوانند دستورها را در طی یک چرخه، اجرا کنند.
این مطلب را نیز بخوانید: کدام چیپست موبایل بهتر است؟ اگزینوس، اسنپدراگون، مدیاتک یا کایرین؟
CISC چیست؟
تفاوت پردازندههای RISC و CISC را با بحث در مورد دومی ادامه میدهیم. CISC تقریبا در تمامی موارد کلیدی، مخالف RISC است. تقریبا تمامی تراشههای دسکتاپی از این طراحی برخوردار هستند. اول از همه اینکه طراحی CISC پیچیده بوده و بنابراین به یک لایه میکروکد نیاز دارد تا دستورهای پیچیده را به دستورهای سادهتر تبدیل کند.
دوم اینکه دستورالعملهای CISC میتوانند جهت اجرا شدن، چندین چرخه CPU را طی کنند. سوم هم اینکه مسیرسازی اطلاعات در اینگونه پردازندهها، به اندازه پردازندههای RISC کارآمد نیست و همچنین به دلیل ماهیت پیچیده دستورالعملهای CISC، انجام چنین کاری نیز دشوارتر است.
بهطور خلاصه، چنین CPUهایی میتوانند چندین عملیات را در طی یک دستور پیچیده اجرا کنند، اما همین دستور پیچیده جهت اتمام، چندین چرخه را طی میکند. مسیرسازی اطلاعات برای این معماریها دشوارتر بوده و همچنین بر روی خود پردازنده نیز مدارهای بسیاری وجود دارند.
تفاوت های کلیدی RISC و CISC
تفاوت اساسی در بین CISC و RISC به نوع دستورهای اجرا شده توسط این دو مربوط میشود. دستورالعملهای RISC ساده بوده، تنها یک عملیات را اجرا میکنند و پردازنده میتواند در طی یک چرخه، آنها را اجرا کند. از طرفی دیگر، دستورالعملهای CISC چندین عملیات را اجرا میکنند. بنابراین CPU نمیتواند آنها در طی یک چرخه واحد، اجرا کند.
همچنین دلیل اینکه پردازندههای RISC در قیاس با پردازندههای CISC بهصورت بهینهتر و سادهتر از مسیرسازی اطلاعات استفاده میکنند نیز به دستورالعملها بازمیگردد. در اولی دستورها به قدری ساده هستند که میتوان آنها را بهصورت بخش بخش اجرا کرد. حال انجام چنین کاری در دومی، به دلیل ماهیت پیچیدهتر دستورها در پردازندههای CISC، دشوارتر است.
برخلاف RISC، در CISC بهصورت مستقیم و از طریق رم میتوان با دستورها کار کرد. بنابراین دیگر نیازی به بارگذاری و ذخیره جداگانه عملیات نیست. در آخر اینکه نیازمندیهای سختافزاری طراحی CISC، بیشتر و بالاتر از طراحی RISC هستند، زیرا اولی باید دستورالعملهای پیچیده را اجرا کند. در اصل، کاری که طراحی CISC با استفاده از سختافزار انجام میدهد، در معماری RISC توسط نرمافزار انجام میشود.
به همین دلیل است که برنامههایی که طراحی CISC را مورد هدف قرار دادهاند، در قیاس با RISC، دارای خطوط کد کمتری هستند، زیرا خود دستورالعملها، بخش بزرگی از عملیات را انجام میدهند.
سخن پایانی
پردازندههای مدرن، کاملا از طراحی CISC و یا RISC استفاده نمیکنند. در واقع امروزه از هر دوی این معماریها استفاده شده تا بهترین نتیجه حاصل شود. بهعنوان نمونه، معماری x86 شرکت AMD در اصل از CISC استفاده میکند، اما همچنین یک میکروکد نیز دارد که دستورالعملهای پیچیده را به دستورهای سادهتر مشابه RISC، تبدیل میکند. بنابراین برخلاف پردازندههای قدیمی، CPUهای مدرن فراتر از یک طبقهبندی ساده RISC و یا CISC، تکامل یافتهاند.
واسه ما چه فرقی داره
ما مصرف کننده ایم