سی پی یو CPU

سی پی یو CPU

سی پی یو CPU: اگر بخواهیم در مورد سی پی یو بگوییم تمام ویژیگی های آن را میتوانیم در این جمله مختصر کنیم”مغز کامپیوتر!”. مغز یک انسان را در نظر بگیرید، مغز ما به کمک حواس پنجگانه ما وضعیت های مختلف ما را به ما اعلان میکنید و ما به کمک مغز خود در موقعیت های مختلف تصمیم میگیریم که چه کاری انجام دهیم و دوباره مغز ما به اجزای بدن دستور انجام فعالیت خاصی را میدهد و دوباره مغز ما و دوباره مغز ما و همینطور مغز ما !!! سی پی یو هم دقیقا همینطور است. از لحظه ی روشن شدن کامپیوتر تا آخرین لحظه ی خاموش کردن آن سی پی یو در حال پردازش اطلاعات است حتی زمانی که شما کاری به کار کامپیوتر نداشته باشید! زمانی که اهنگی را اجرا میکنید اطلاعات مربوطه توسط سی پی و پردازش میشود. زمانی که برنامه ای جدید بر روی سیستم خود نصب میکنید… زمانی که فایلی را کپی میکنید و یا هر عمل کوچک یا بزرگی که توسط کامپیوتر انجام دهید.

cpu چیست؟

CPU مخفف کلمات Central Processing Unit به معنای “واحد پردازش مرکزی” میباشد. سی پی یو تنها محدود به سی پی یو های کامپیوتر ها نمی شود بلکه هر نوع ریز پردازنده ای در هر دستگاه الکترونیکی به عنوان واحد پردازشگر مرکزی وظایف خود را انجام دهد حکم مغز دستگاه مربوطه و در نوع خود میتواند یک نوع سی پی یو باشد.

نمونه ی سی پی یو های amd و intel معمولا سی پی یو ها را با نام های متفاوتی میشناسند از جمله نام های دیگر cpu عبارت است از:

  • Computer Processor (پردازنده کامپیوتر)
  • Central Processor (پردازنده مرکزی)
  • Brain of Computer (مغز کامپیوتر)
  • Processor (پردازنده)
  • Micro Processor (ریز پردازنده)

هر سیستم اطلاعاتی برای پردازش دستورات (عملکردهای منطقی، ریاضی و …) نیاز به یک پردازنده (Processor) دارد. این وظیفه در کامپیوترها بر عهده CPU است.

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

 CPU با استفاده از یک واحد ALU که مخفف Arithmetic & Logic Unit و به معنای “واحد محاسبه و منطق” است، تمامی دستورات ورودی را محاسبه، مقایسه یا بر طبق عملکردهای منطقی تصمیم گیری کرده و سپس در صورت نیاز، خروجی را تحویل می‌دهد. این فرایند بر روی ثبات‌های پردازنده به عنوان میزکار سی پی یو انجام می‌شود. منظور از عملکردهای ریاضی، همان چند عمل ساده مثل ضرب، تقسیم، جمع و تفریق است.

برای درک بهتر عملکرد CPU، می‌توانید مغز انسان را به یاد آورید. ممکن است انسان بتواند بدون برخی از اعضای دیگر (در کامپیوتر مانند حافظه‌های جانبی و…)، به حیات خود ادامه دهد اما بدون مغز، امکان زندگی صفر است. در واقع شما نمی‌توانید هیچ تصمیمی بگیرید، اطلاعات را پردازش کنید، تصاویر را درک کنید، به سایر اعضا دستور بدهید و … . مغز یک پردازنده قوی همانند CPU است.

فرکانس کاری پردازنده (clock speed)

یکی از مهمترین عوامل در انتخاب و خرید یک پردازنده سرعت کلاک (Clock Speed) آن است که برای همه هسته‌های آن معمولاً عددی ثابت است. سرعت پردازنده نشانگر تعداد عملی است که یک هسته می‌تواند در هر ثانیه انجام دهد و واحد آن هرتز (Hertz) است که معمولاً به صورت مگاهرتز (MHz – میلیون هرتز) یا گیگاهرتز (GHz – میلیارد هرتز) بیان می‌شود.

برای مثال پردازنده‌ای که سرعت آن ۲.۵ گیگاهرتز است، می‌تواند در هر ثانیه ۲ میلیارد و نیم (۲۸۰۰۰۰۰۰۰۰) دستور را پردازش کند. در صورتی که پردازنده دارای هسته‌های بیشتر باشد، هر هسته می‌تواند بصورت مجزا ۲۸۰۰۰۰۰۰۰۰ دستور را پردازش کند. البته منظور دستورات ساده یک سیکلی هستند.

حافظه نهان یا کش (cash)

مورد دیگری که معمولاً از سرعت نیز بیشتر مورد توجه قرار می‌گیرد، حافظه نهان (Cache) پردازنده است. حافظه نهان می‌تواند دارای چند لایه باشد که با حرف L نشان داده می‌شود. معمولاً پردازنده‌ها تا ۳ لایه حافظه نهان دارند که لایه اول (L1) نسبت به دوم (L2) و دوم نیز نسبت به سوم (L3) دارای سرعت بیشتر و حافظه کمتری است. حافظه نهان معمولاً تا چند ده مگابایت می‌تواند فضا برای ذخیره کردن داشته باشد که هرچه این فضا بیشتر باشد، قیمت پردازنده نیز بالاتر خواهد رفت.

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

هسته‌های پردازشی (cores)

هسته‌های پردازنده، درواقع پردازنده‌های مستقلی هستند که هر یک به صورت جداگانه دستورات را پردازش می‌کند. امروزه پردازنده‌ها معمولاً دارای بیش از یک هسته هستند که به کاربران این امکان را فراهم می‌کنند که مجموعه دستورات یا برنامه‌های خود را با استفاده از پردازش موازی (Parallel Computing) سریع تر از قبل اجرا کنند. البته داشتن هسته‌های بیشتر به معنای افزایش کارایی کلی پردازنده نیست. چون بسیاری از برنامه‌ها هنوز از پردازش موازی استفاده نمی‌کنند. یعنی عملاً سایر هسته‌ها کار به مراتب کمتری نسبت به یک هسته انجام می‌دهند (سی پی یو CPU).

البته با تکنولوژی‌هایی مثل هایپرتریدینگ (Hyper Threading) یک هسته، خود به چندین ریسمان یا به زبان ساده، هسته مجازی تقسیم می‌شود. برای مثال پردازنده‌های i5 دو هسته‌ای اینتل، با استفاده از این تکنولوژی به چهار ریسمان یا هسته مجازی تقسیم می‌شوند.

CPU چگونه کار می‌کند؟

در پروسه پردازش دستورات در CPU چهار مرحله اصلی وجود دارد:

۱- فراخوانی ۲- رمزگشایی ۳- پردازش و اجرا  ۴- بازنویسی

این چهار مرحله اصلی به ترتیب اجرا شده و تا پایان پروسه اجرا میشود تا دستور پایان یابد.

 فراخوانی

در مرحله اول، پردازنده دستوری که باید پردازش کند را از طرف حافظه مربوط به یک برنامه (از طریق RAM یا به صورت مستقیم) دریافت می‌کند. این برنامه ممکن است در حداقل شرایط یک دستور و در حداکثر شرایط بینهایت دستور را برای پردازش به CPU ارسال کند. به همین دلیل هر یک از این دستورها باید در محل‌های جداگانه آدرس دهی شوند. اما مشکل اینجاست که واحد پردازشی CPU نمی‌داند کدام دستورات را در کدام یک از آدرس ها باید به ترتیب اجرا کند. برای حل این مشکل یک واحد دیگر به نام PC که مخفف عبارت Program Counter به معنای “شمارنده برنامه” است، وجود دارد. این واحد مسئول حفظ ترتیب و وضعیت دستوراتی است که به پردازنده ارسال می‌شوند. به طور ساده، واحد پردازشی CPU هر یک از آدرس‌هایی که برای پردازش نیاز دارد را از طریق این واحد شمارنده بدست می‌آورد (سی پی یو CPU).

رمزگشایی

پس از دریافت دستورات، CPU باید بتواند این دستور را درک کند. واحد پردازنده CPU دستورات را در حالت کدهایی OP (به معنای کدهای پردازشی یا Operation Codes) می‌تواند پردازش کند. کدهای پردازشی زبان قابل درک ماشین و سخت افزارها هستند.

نوشتن برنامه‌ها به زبان باینری بسیار سخت است به همین خاطر زبان‌های برنامه نویسی سطح بالایی وجود دارد که نوشتن برنامه را آسان‌تر می‌کند. زبان‌های برنامه نویسی مختلفی وجود دارد که سازندگان برنامه‌ها می‌توانند از آن‌ها استفاده کنند. به همین دلیل واحدی به نام Assembler (تبدیل کننده به اسمبلی) وجود دارد که ابتدا دستورات را به زبان سطح پایین اسمبلی (Assembly) تبدیل کرده سپس واحد دیگری این دستورات اسمبلی را به کدهای OP تبدیل می‌کند. حال این دستورات که به صورت کدهای OP در آمده اند، آماده پردازش در واحد پردازنده CPU هستند.

پردازش و اجرا

مرحله سوم و البته مهمترین مرحله، پردازش و اجرا است. در این مرحله واحد پردازنده CPU یک دستور باینری را از یک آدرس مخصوص در دست دارد. این واحد تمامی دستورات را به کمک واحد ALU (مخفف Arithmetic & Logic Unit و به معنای “واحد محاسبه و منطق”)، پردازش می‌کند.

ممکن است درحین پردازش، نیاز به یک دستور دیگر باشد که در این صورت Program counter دستور مورد نیاز را در اختیار واحد پردازنده CPU قرار می‌دهد یا ممکن است واحد پردازش، دستورات را برای زمان دیگری در ثبات‌های (Registers) داخلی خود ذخیره کند.

 بازنویسی

معمولا هر دستور یک مقدار خروجی دارد که در این مرحله این مقدار خروجی در حافظه جانبی کامپیوتر (مانند هارد دیسک‌ها، دیسک‌های حالت جامد و…) ذخیره یا به سایر قطعات ارسال می‌شود. برای نمونه فرض کنید که یک دستور برای نشان دادن یک عبارت به CPU برای پردازش ارسال می‌شود. CPU پس از پردازش این دستور، همان عبارت را به عنوان خروجی بازمی‌گرداند یا به فرض، یک عمل ریاضی به عنوان مثال ۲ ضرب در ۲ به  CPU برای پردازش ارسال می‌شود. حال CPU پس از پردازش عدد ۴ را به عنوان خروجی برمی‌گرداند.

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

در این چهار مرحله اصلی، پردازنده فقط یک دستور که از Program Counter ارسال شده را پردازش می‌کند. پس از اتمام این چهار مرحله، درصورتی که دستور دیگری در صف پردازش وجود داشته باشد، توسط PC به سی پی یو داده می‌شود و مراحل از اول شروع می‌شوند تا زمانی که تمامی دستورات پردازش شوند.

هسته یعنی چه؟

شاید چند سال قبل، برای شرکت های بزرگی مثل اینتل و یا AMD برای اینکه رضایت مشتریان رو جلب کنند در صدد این بودن که پردازنده های جدید با سرعت بالاتر رو روانه بازار کنند اما به دلیل اینکه نمیشه سرعت کلاک پالس یک پردازنده را بیشتر کرد پس به همین دلیل این شرکت ها تکنولوژی جدید چند هسته ای رو رونمایی کردند.

  • هسته فیزیکی یا همان واقعی
  • هسته مجازی یا Threading

هسته مجازی یا Thread چیست؟

خوب حالا که فهمیدیم هسته واقعی یا فیزیکی چیست باید ببینیم که مجازی چیست و چه کار میکند؟ شاید بعضی از شماها با برنامه CPU-Z کار کرده باشین. در قسمت سربرگ CPU این برنامه که بروید در انتهای صفحه دو کادر وجود دارد که یکی از انها نوشته Cores و دیگری نوشته Threads .که Cores  همان هسته های واقعی هستن و قسمت Threads هم همان هسته های مجازی هستند. هسته های واقعی تقسیم میشن به هسته های مجازی که به این عمل Hyper Threading میگویند.

یک پردازنده یک هسته ای رو در نظر بگیرید که وظیفه ی پردازش اطلاعات بسیار زیادی بر دوش او هست! خب کار خیلی برایش سخت میشود. اما حالا فرض کنین در کنار این دو هسته یک هسته دیگر هم بیاد خوب یقینا کار اسانتر و باز با قرار گرفتن دو هسته و همینطور بیشتر کارها اسانتر میشود ولی ایا میدونین چرا؟

در CPU هر هسته همزمان فقط میتونه یک کار رو انجام بده یعنی یک هسته نمیتونه همزمان هم برنامه فتوشاپ رو پردازش کنه و هم برنامه گوگل کروم و …پس باید مثلا اول فتوشاپ رو باز کنه بعد بره سراغ کروم و موزیک پلیر و …پس در نتیجه کار برای یک هسته خیلی سخت میشه ولی حالا فرض کنید که یک هسته دیگر هم به کمکش بیاد و باز هم دو هسته دیگر …که در نتیجه حالا با چهار هسته همزمان میتونین رو چهار تا دستوری که شما دادین مثل همین فتوشاپ و کروم و ….کار کرد، پس خیلی سریع تر میشه. یعنی در کل کارها بین هسته ها تقسیم میشه و بازدهی و سرعت میره بالا.

هسته ی مجازی (threads) چیست

همینطور که گفته شد هر هسته میتونه فقط یک دستور العمل را اجرا کنه و این یعنی اینکه مثلا برنامه دوم مثل موزیک پلیر باید منتظر اجرای دستور عمل مثلا فتوشاپ باشد و این یعنی کاهش سرعت یعنی اگه ما ۴ هسته داشته باشیم در کل میتوانیم ۴ دستور یا همان برنامه را در عین واحد انجام دهیم. اما شرکت اینتل با تکنولوژی Hyper threading توانست که کاری کند که این هسته های واقعی به هسته های مجازی تقسیم شوند. یعنی اگه ما یک CPU چهار هسته ای واقعی داشته باشیم این چهار هسته هر کدام به دو هسته دیگر تیدیل میشوند. یعنی ما ۴ هسته واقعی و چهار هسته مجازی داریم که در کل میشه ۸ هسته. یعنی با این کار سرعت PC یا لپ تاپ بالا میرود و مثلا کامپیوتر ما همزمان میتواند ۸ برنامه رو انجام دهد حتی مثلا اگه یک برنامه هنگ کنه دیگه رو برنامه های دیگه تاثیر نداره و برنامه های دیگه کارشون رو انجام میدهند. البته این تکنولوژی Hyper threading برای یک مدتی کنسل شد اما دوباره در پردازنده های Core i7 سر و کلش پیدا شد.