آموزشآموزش‌های تکی

آموزش تکی، حدود ۳۰ دقیقه خواندن

پردازنده (CPU) چیه

جواب کوتاه

پردازنده، یا CPU (کوتاه‌شده‌ی Central Processing Unit، یعنی «واحد پردازش مرکزی»)، مغز کامپیوتره: دستورهای برنامه‌ها رو یکی‌یکی می‌خونه و با سرعت خیلی زیاد انجام می‌ده. سرعتش رو چند تا چیز با هم می‌سازه: تعداد هسته‌ها، فرکانس (گیگاهرتز)، اینکه توی هر تیک چقدر کار می‌کنه، و اندازه‌ی کش‌ش.

اسم

شاید وقتی گوشی یا لپ‌تاپ می‌خریدید، یا مشخصات یه سرور رو می‌دیدید، به کلمه‌ی CPU یا پردازنده برخوردید. CPU کوتاه‌شده‌ی Central Processing Unit هست، یعنی «واحد پردازش مرکزی». خیلی‌ها بهش می‌گن مغز کامپیوتر، و حرف بی‌ربطی هم نیست.

یه نکته از همین اول: بعضی‌ها به کل کیس کامپیوتر می‌گن «سی‌پی‌یو». نه؛ CPU یه تراشه‌ی کوچیکه، اندازه‌ی یه کف دست یا کوچیک‌تر، که روی برد اصلی نشسته و معمولا یه فن یا خنک‌کننده روشه.

پردازنده چی کار می‌کنه؟

هر برنامه‌ای که باز می‌کنید، از مرورگر تا وردپرس روی سرور، آخرش به یه فهرست خیلی بلند از دستورهای خیلی ساده تبدیل می‌شه. دستورهایی مثل «این دو تا عدد رو جمع کن»، «این عدد رو از رم بیار»، «اگه این عدد صفر بود، برو دستور شماره‌ی فلان». به این زبان می‌گن زبان ماشین.

کار پردازنده فقط همینه: این دستورها رو یکی‌یکی می‌خونه و انجام می‌ده. ولی با یه سرعت عجیب؛ میلیاردها دستور در هر ثانیه. همه‌ی کارهایی که کامپیوتر می‌کنه، از نشون دادن یه عکس تا ساختن صفحه‌ی یه سایت، از کنار هم گذاشتن همین دستورهای ساده درست می‌شه.

خط تولید

مثلا فرض کنید یه کارخونه دارید با یه نوار نقاله. هر دستور یه تیکه‌ست که روی نوار میاد و از چهار تا ایستگاه رد می‌شه:

  1. آوردن (fetch): دستور بعدی رو از حافظه میاره.
  2. فهمیدن (decode): می‌بینه دستور چی می‌گه؛ جمع؟ مقایسه؟ پریدن به یه جای دیگه؟
  3. انجام (execute): کار رو انجام می‌ده؛ مثلا دو تا عدد رو جمع می‌کنه.
  4. نوشتن (write back): نتیجه رو یه جا می‌ذاره تا دستورهای بعدی ازش استفاده کنن.

بعد دوباره از اول، برای دستور بعدی. نوار هم با یه ریتم ثابت جلو می‌ره؛ به این ریتم می‌گن ساعت، که جلوتر می‌بینیدش.

داخل تراشه

داخل پردازنده چند تا بخش اصلی هست. واحد حساب و منطق، که بهش می‌گن ALU (کوتاه‌شده‌ی Arithmetic Logic Unit)، جاییه که حساب‌ها واقعا انجام می‌شن: جمع، تفریق، مقایسه. واحد کنترل مثل سرکارگر کارخونه‌ست: می‌گه کدوم دستور الان کجا بره و کی.

ثبات‌ها (registers) چند تا جای خیلی کوچیک و خیلی سریع کنار واحد حسابن؛ عددهایی که همین الان روشون کار می‌شه اینجان. و کش (cache)، چند تا قفسه‌ی کوچیک کنار خط تولید، که موادی که زیاد لازم می‌شه رو نزدیک نگه می‌داره تا لازم نباشه هر بار تا انبار بره.

نردبون حافظه و کش

پردازنده خیلی سریع‌تر از رم کار می‌کنه. اگه برای هر عدد مجبور بود تا رم بره و برگرده، بیشتر وقتش به منتظر موندن می‌گذشت. برای همین بین پردازنده و رم چند طبقه حافظه هست، که هر چی نزدیک‌تر، کوچیک‌تر و سریع‌تر:

  1. ثبات‌هاچند صد بایت؛ در یک تیک
  2. کش L1ده‌ها کیلوبایت؛ چند تیک
  3. کش L2صدها کیلوبایت تا چند مگ
  4. کش L3ده‌ها مگابایت
  5. رمگیگابایت؛ صد برابر کندتر از L1
  6. دیسکترابایت؛ کندترین

L1 کوچیک‌ترین و سریع‌ترین کشه و هر هسته یکی مال خودش داره. L2 بزرگ‌تر و یه کم کندتره. L3 از همه بزرگ‌تره و همه‌ی هسته‌ها با هم ازش استفاده می‌کنن. وقتی پردازنده چیزی رو توی کش پیدا می‌کنه، بهش می‌گن «برخورد» (hit)؛ وقتی پیدا نمی‌کنه و باید تا رم بره، «از دست رفتن» (miss). هر چی برخوردها بیشتر، پردازنده کمتر منتظر می‌مونه.

مثلا فرض کنید آشپزی هستید که نمک رو کنار دستتون گذاشتید (L1)، ادویه‌های دیگه توی کابینت بالای سرتونه (L2 و L3)، و بقیه‌ی مواد توی انباری ته راهرو (رم). اگه هر بار برای نمک تا انباری برید، غذا هیچ‌وقت آماده نمی‌شه.

ساعت و گیگاهرتز

اون ریتمی که نوار رو جلو می‌بره، یه ساعته که مثل یه ضربان ثابت تیک می‌زنه. تعداد تیک‌ها در ثانیه رو با هرتز می‌گن. ۱ گیگاهرتز یعنی یه میلیارد تیک در ثانیه؛ پس پردازنده‌ی ۳ گیگاهرتزی، ۳ میلیارد بار در ثانیه تیک می‌زنه.

خیلی از پردازنده‌ها دو تا عدد فرکانس دارن: پایه، مثلا ۲٫۵ گیگاهرتز، و حداکثر، مثلا ۴٫۵. یعنی وقتی کار سنگین میاد و جا برای گرما هست، خودش چند لحظه سریع‌تر می‌شه، و وقتی بیکاره، کند می‌شه تا برق کمتری بخوره.

توربو

روی مشخصات پردازنده‌ها معمولا دو تا عدد ساعت می‌بینید؛ مثلا «۳٫۵ گیگاهرتز، تا ۵٫۲». عدد اول ساعت پایه‌ست، که پردازنده با همه‌ی هسته‌هاش، هر چقدر هم طول بکشه، می‌تونه نگهش داره. عدد دوم ساعت «توربو»‌ئه، یعنی بیشترین ساعتی که یه یا چند تا هسته، برای مدت کوتاه، وقتی پردازنده خنکه و برق کافی هست، می‌تونن بهش برسن.

پس عدد بزرگ روی جعبه، همیشگی نیست. وقتی همه‌ی هسته‌ها با هم کار سنگین می‌کنن، پردازنده گرم می‌شه و ساعت پایین میاد. روی سرور سایت، که معمولا خیلی از هسته‌ها با هم کار می‌کنن، ساعت پایه و خنک‌کاری مهم‌تر از عدد توربوئه. روی سرور مجازی هم، اینکه هسته‌ی شما به توربو می‌رسه یا نه، به اینه که همسایه‌ها روی همون پردازنده چقدر کار می‌کنن.

توی هر تیک چقدر کار؟

خیلی‌ها فکر می‌کنن پردازنده‌ی ۴ گیگاهرتزی حتما از ۳ گیگاهرتزی سریع‌تره. نه همیشه. چون یه عدد دیگه هم هست: اینکه توی هر تیک چند تا دستور انجام می‌شه. بهش می‌گن IPC، کوتاه‌شده‌ی Instructions Per Cycle، یعنی «دستور در هر تیک».

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

همه‌ی ایستگاه‌ها با هم

اگه هر دستور باید چهار تا ایستگاه رو تموم کنه تا دستور بعدی شروع بشه، سه تا ایستگاه همیشه بیکارن. پردازنده‌ها این کار رو نمی‌کنن. تا دستور اول رفت ایستگاه دوم، دستور دوم وارد ایستگاه اول می‌شه. بهش می‌گن خط لوله (pipeline):

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

حدس زدن سر دوراهی

خط لوله یه مشکل داره: دستورهایی مثل «اگه این عدد صفر بود، برو اونجا». تا جواب معلوم نشه، پردازنده نمی‌دونه دستور بعدی کدومه، و خط خالی می‌مونه. پردازنده‌ها برای این یه کار زیرکانه می‌کنن: حدس می‌زنن. یه بخش کوچیک به اسم «پیش‌بینی پرش» یادش می‌مونه که این دوراهی دفعه‌های قبل کدوم طرف رفته، و همون طرف رو ادامه می‌ده.

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

حفره‌های امنیتی پردازنده

سال ۲۰۱۸ یه کشف بزرگ دنیای کامپیوتر رو تکون داد. محقق‌ها نشون دادن همون حدس زدن سر دوراهی، که پردازنده رو سریع می‌کنه، یه ردپا توی کش جا می‌ذاره. یه برنامه‌ی بدخواه می‌تونست با اندازه‌گیری خیلی دقیق زمان، از روی این ردپاها، تیکه‌هایی از داده‌ی برنامه‌های دیگه، مثل رمزها، رو حدس بزنه؛ حتی داده‌ی سیستم‌عامل یا یه سرور مجازی دیگه روی همون سرور.

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

هسته

حدود سال ۲۰۰۵ به بعد، بالا بردن گیگاهرتز سخت شد، چون پردازنده خیلی داغ می‌شد. راه دیگه این بود: به‌جای یه خط تولید سریع‌تر، چند تا خط کنار هم. به هر خط می‌گن یه هسته (core). پردازنده‌ی چهارهسته‌ای یعنی چهار تا خط تولید کامل، که هر کدوم مستقل کار می‌کنن.

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

رشته

شاید دیدید نوشته «۴ هسته، ۸ رشته». رشته (thread) یعنی یه کار جدا که پردازنده دنبالش می‌کنه. خیلی از پردازنده‌ها توی هر هسته دو تا رشته رو با هم جلو می‌برن؛ اسم عمومیش SMT هست، کوتاه‌شده‌ی Simultaneous Multithreading، یعنی «چندرشته‌ای هم‌زمان».

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

صدها برنامه، چند تا هسته

الان روی کامپیوتر یا گوشی شما صدها برنامه و کار کوچیک روشنه، ولی پردازنده شاید فقط ۸ تا هسته داشته باشه. چطوری؟ سیستم‌عامل یه بخش داره به اسم زمان‌بند (scheduler)، که مثل یه داور نوبت می‌ده. به هر کار چند میلی‌ثانیه وقت می‌ده، بعد می‌ره سراغ بعدی.

این‌قدر سریع عوض می‌کنه که به نظرتون همه‌چیز هم‌زمان داره کار می‌کنه. مثل یه معلم که توی یه کلاس سی‌نفره، به نوبت از هر کی یه سوال می‌پرسه؛ اون‌قدر سریع که انگار با همه با هم حرف می‌زنه. روی سرور هم همینه: صدها درخواست، چند تا هسته، و زمان‌بندی که نوبت می‌ده.

یه لحظه صبر کن

پردازنده از کجا می‌فهمه که یه کلید فشار داده شد، یا یه بسته‌ی شبکه رسید؟ نمی‌شینه مدام بپرسه «چیزی اومد؟». به‌جاش، هر دستگاه وقتی کاری داره یه علامت می‌فرسته به اسم وقفه (interrupt)، یعنی «یه لحظه صبر کن». پردازنده کارش رو یه جا علامت می‌زنه، به اون دستگاه رسیدگی می‌کنه، و برمی‌گرده سر کارش.

مثل وقتی دارید کتاب می‌خونید و زنگ در رو می‌زنن؛ لای کتاب رو علامت می‌ذارید، در رو باز می‌کنید، و از همون‌جا ادامه می‌دید. روی سرور، هر بسته‌ای که از شبکه میاد، همین‌طوری خبرش به پردازنده می‌رسه.

۳۲ و ۶۴ بیت

«۶۴ بیتی» یعنی پردازنده با عددهای ۶۴ بیتی کار می‌کنه و آدرس‌هاش برای رم هم ۶۴ بیتیه. مهم‌ترین اثرش رمه: پردازنده‌ی ۳۲ بیتی حداکثر حدود ۴ گیگابایت رم رو می‌تونه آدرس بده، چون ۲ به توان ۳۲ می‌شه حدود ۴ میلیارد. ۶۴ بیتی این سقف رو عملا برداشته.

تقریبا همه‌ی پردازنده‌های امروزی، چه گوشی چه سرور، ۶۴ بیتی‌ان. اگه یه جا گزینه‌ی ۳۲ و ۶۴ دیدید، ۶۴ رو بردارید.

دو خانواده‌ی دستور

هر پردازنده یه «زبان» از دستورها بلده؛ بهش می‌گن مجموعه‌ی دستور یا معماری. دو تا خانواده‌ی بزرگ امروز هست. یکی x86، که بیشتر کامپیوترهای رومیزی، لپ‌تاپ‌ها و سرورها سال‌ها باهاش کار کردن. یکی ARM، که تقریبا همه‌ی گوشی‌ها و تبلت‌ها باهاشن، و حالا خیلی از لپ‌تاپ‌ها و سرورها هم.

فرقشون برای شما اینه: برنامه باید برای همون خانواده ساخته شده باشه. برنامه‌ای که برای x86 ساخته شده، روی ARM بی ترجمه اجرا نمی‌شه، و برعکس. پردازنده‌های ARM معمولا با برق کمتر همون کار رو می‌کنن، برای همین توی گوشی‌ها جا افتادن.

ترانزیستور و نانومتر

هر پردازنده از میلیاردها کلید خیلی کوچیک ساخته شده به اسم ترانزیستور. هر ترانزیستور یه کلیده که روشن یا خاموش می‌شه؛ یعنی همون ۱ و ۰. از کنار هم گذاشتن این کلیدها، جمع و مقایسه و همه‌چیز ساخته می‌شه.

شاید شنیدید یه پردازنده «۵ نانومتری» یا «۳ نانومتری»یه. این عدد اسم نسل ساختن تراشه‌ست؛ هر چی کوچیک‌تر، ترانزیستورها ریزتر و بیشتر توی یه جا جا می‌شن، و برق کمتری می‌خورن. امروز دیگه این عدد دقیقا اندازه‌ی چیزی روی تراشه نیست، بیشتر اسم نسله؛ پس دو تا «۳ نانومتری» از دو جا لزوما یکی نیستن.

پردازنده چطور ساخته می‌شه

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

این کار توی کارخونه‌هایی انجام می‌شه که هواشون هزاران بار از اتاق عمل تمیزتره، چون یه ذره گرد و خاک کافیه که یه تراشه رو خراب کنه. آخر کار، ویفر رو می‌برن، هر تراشه رو آزمایش می‌کنن، و توی یه بسته‌بندی با پایه‌های فلزی می‌ذارن. اونی که شما می‌بینید همین بسته‌بندیه؛ خود تراشه خیلی کوچیک‌تره.

گرما و برق

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

اگه پردازنده بیش از حد داغ بشه، خودش رو کند می‌کنه تا نسوزه؛ بهش می‌گن افت سرعت از گرما (throttling). مثلا لپ‌تاپی که روی تخت گذاشتید و هواکشش بسته‌ست، بعد از چند دقیقه کار سنگین کند می‌شه. یه عدد هم روی پردازنده‌ها هست به اسم TDP، که تقریبا می‌گه خنک‌کننده‌ش باید چقدر گرما رو ببره.

پردازنده‌ی سرور

پردازنده‌ی سرور با پردازنده‌ی لپ‌تاپ چند تا فرق داره. هسته‌های خیلی بیشتری داره، گاهی ده‌ها هسته، چون سرور هم‌زمان به آدم‌های زیادی جواب می‌ده. کش بزرگ‌تری داره. از رم با تصحیح خطا (ECC) پشتیبانی می‌کنه. و گاهی دو تا یا بیشتر روی یه برد می‌شینن؛ بهش می‌گن چندسوکتی.

پردازنده‌ی لپ‌تاپ: چند هسته‌ی سریع.
پردازنده‌ی سرور: ده‌ها هسته، و گاهی دو تا روی یه برد.

در عوض، هر هسته‌ی پردازنده‌ی سرور معمولا گیگاهرتز کمتری از یه پردازنده‌ی بازی داره؛ چون ده‌ها هسته‌ی خیلی سریع با هم، گرمای زیادی می‌سازن. سرور برای کار زیاد و هم‌زمان ساخته شده، نه برای یه کار خیلی سریع.

vCPU توی سرور مجازی

وقتی سرور مجازی می‌خرید، می‌نویسه «۲ vCPU». vCPU یعنی «پردازنده‌ی مجازی». معمولا هر vCPU یعنی سهمی از یکی از رشته‌های پردازنده‌ی واقعی سرور اصلی. پس ۲ vCPU لزوما دو تا هسته‌ی کامل نیست.

یه نکته‌ی دیگه هم هست. اگه سرور اصلی بیش از حد فروخته شده باشه و همسایه‌ها شلوغ باشن، سرور مجازی شما گاهی منتظر می‌مونه تا نوبتش بشه. توی ابزارهای سرور، این منتظر موندن رو با عدد «steal» نشون می‌دن، یعنی «وقت دزدیده‌شده». اگه این عدد همیشه بالاست، یعنی پردازنده‌تون رو کامل نمی‌گیرید.

پردازنده و سایت شما

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

برای همین روی سرور تعداد «کارگر»های PHP رو با توجه به تعداد هسته‌ها و رم تنظیم می‌کنن. و برای همین کش صفحه این‌قدر مهمه: صفحه‌ای که از کش داده می‌شه، تقریبا هیچ پردازنده‌ای نمی‌خوره. پردازنده معمولا اولین جایی نیست که سایت گیر می‌کنه؛ بیشتر وقت‌ها رم یا دیسک یا تنظیم بده. ولی برای فروشگاه‌هایی مثل ووکامرس، که خیلی از صفحه‌هاشون کش نمی‌شه، هسته‌ی بیشتر واقعا فرق می‌کنه.

دیدن کار پردازنده

روی کامپیوتر خودتون، مدیر وظایف ویندوز یا ابزار مشابهش روی مک، درصد کار پردازنده و هر برنامه رو نشون می‌ده. روی سرور لینوکس:

  1. nproc تعداد هسته‌ها یا رشته‌هایی که سیستم می‌بینه رو می‌گه.
  2. uptime سه تا عدد «بار» نشون می‌ده: میانگین کارهای منتظر توی ۱، ۵ و ۱۵ دقیقه‌ی اخیر. اگه از عدد nproc بیشتر باشه، کارها توی صف پردازنده‌ن.
  3. htop هر هسته رو با یه نوار جدا نشون می‌ده، و ستون st همون وقت دزدیده‌شده‌ست.

برای مقایسه‌ی دو تا پردازنده هم به جای گیگاهرتز، نتیجه‌ی آزمون‌های سنجش (benchmark) رو ببینید؛ چون اونا کل کار رو می‌سنجن، نه فقط تیک‌ها رو.

پردازنده و کارت گرافیک

کارت گرافیک، یا GPU (کوتاه‌شده‌ی Graphics Processing Unit، یعنی «واحد پردازش گرافیک»)، هم یه جور پردازنده‌ست، ولی جور دیگه ساخته شده. CPU چند تا هسته‌ی خیلی باهوش داره که هر کاری بلدن. GPU هزاران هسته‌ی ساده داره که یه کار رو با هم روی تیکه‌های مختلف انجام می‌دن.

مثلا فرض کنید باید هزار تا پاکت رو مهر بزنید. پنج تا کارمند باهوش (CPU) یا هزار تا آدم که فقط مهر زدن بلدن (GPU)؟ برای مهر زدن، دومی. برای کارهای پیچیده و پر از «اگه»، اولی. برای همین تصویر و هوش مصنوعی کار GPU‌ئه و سایت و دیتابیس کار CPU.

هسته‌ی بزرگ و هسته‌ی کوچیک

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

مثل یه شرکت که چند تا کارمند ارشد داره برای پروژه‌های سخت، و چند تا کارمند تازه‌کار برای کارهای روزمره. سیستم‌عامل خودش تصمیم می‌گیره هر کار رو به کدوم بده. نتیجه اینه که باتری بیشتر دووم میاره، بی اینکه کارهای سنگین کند بشن. پس وقتی می‌خونید «۱۰ هسته»، شاید یعنی ۴ تا بزرگ و ۶ تا کوچیک.

یه دستور، چند تا عدد

بعضی کارها یه کار ساده رو روی تعداد زیادی عدد تکرار می‌کنن؛ مثلا روشن‌تر کردن همه‌ی نقطه‌های یه عکس، یا فشرده کردن یه ویدیو. برای این کارها، پردازنده‌ها دستورهای ویژه‌ای دارن که با یه دستور، یه کار رو هم‌زمان روی چند تا عدد انجام می‌دن.

اسم این روش SIMD هست، کوتاه‌شده‌ی Single Instruction, Multiple Data، یعنی «یه دستور، چند تا داده». مثل اینکه به‌جای مهر زدن یه پاکت، یه مهر چهارتایی داشته باشید که چهار تا پاکت رو با هم مهر می‌زنه. رمزگذاری HTTPS، فشرده‌سازی و کار با عکس روی سرور، خیلی از این دستورها استفاده می‌کنن.

پردازنده‌ی گوشی

توی گوشی، پردازنده تنها نیست. پردازنده، کارت گرافیک، بخش هوش مصنوعی، مودم و خیلی چیزهای دیگه همه روی یه تراشه کنار هم ساخته می‌شن. بهش می‌گن SoC، کوتاه‌شده‌ی System on a Chip، یعنی «سیستم روی یه تراشه». برای همین وقتی می‌گن «پردازنده‌ی گوشی فلان»، معمولا منظورشون کل این تراشه‌ست.

این کار جا و برق رو خیلی کم می‌کنه، که برای گوشی حیاتیه. ولی یعنی هیچ‌کدوم از این بخش‌ها رو نمی‌شه جدا عوض کرد.

پردازنده برای سرور سایت

اگه دارید برای یه سایت سرور می‌گیرید، این سه تا سوال رو از خودتون بپرسید:

  1. چند نفر هم‌زمان میان؟ هر چی بیشتر، هسته‌ی بیشتر. برای یه سایت متوسط، ۲ تا ۴ هسته معمولا کافیه.
  2. چقدر از صفحه‌ها کش می‌شن؟ سایت خبری که بیشترش کش می‌شه، پردازنده‌ی کمی لازم داره. فروشگاهی که سبد خرید و پنل کاربری داره، بیشتر.
  3. پردازنده کامل مال شماست یا با همسایه‌ها شریکه؟ ۴ هسته‌ی شریک گاهی از ۲ هسته‌ی کامل کندتره.

و قبل از اینکه پردازنده‌ی بزرگ‌تر بخرید، با ابزارهایی که گفتیم ببینید واقعا پردازنده گیره، نه رم یا دیسک.

کمی تاریخ

قبل از دهه‌ی ۷۰ میلادی، پردازنده از ده‌ها قطعه‌ی جدا روی چند تا برد ساخته می‌شد. سال ۱۹۷۱ اولین ریزپردازنده‌ی تجاری اومد: کل پردازنده روی یه تراشه، با ۲۳۰۰ ترانزیستور، چهار بیتی. سال ۱۹۶۵ یه پیش‌بینی معروف شده بود، که بعدها اسمش شد «قانون مور»: تعداد ترانزیستورهای یه تراشه تقریبا هر دو سال دو برابر می‌شه. این پیش‌بینی ده‌ها سال درست موند:

  1. ۱۹۷۱۲۳۰۰ ترانزیستور
  2. ۱۹۹۰حدود ۱ میلیون
  3. ۲۰۰۰ده‌ها میلیون
  4. ۲۰۱۰حدود ۱ میلیارد
  5. امروزده‌ها میلیارد

دهه‌ی ۹۰ رقابت سر گیگاهرتز بود. حدود ۲۰۰۵ گرما جلوی این رقابت رو گرفت و پردازنده‌ها چندهسته‌ای شدن. و امروز پردازنده‌های سرور ده‌ها هسته دارن، و پردازنده‌های ARM از گوشی به لپ‌تاپ و سرور هم رسیدن.

تمرین

  1. روی کامپیوتر خودتون ببینید پردازنده‌تون چند هسته و چند رشته داره، و فرکانس پایه و حداکثرش چقدره.
  2. یه برنامه‌ی سنگین باز کنید و ببینید درصد کار پردازنده و فرکانسش چطور بالا می‌ره.
  3. اگه سرور مجازی دارید، با htop ببینید ستون st چقدره و بار سرور از تعداد هسته‌ها بیشتر هست یا نه.

اشتباه‌های رایج

  • «گیگاهرتز بیشتر یعنی سریع‌تر.» نه همیشه؛ کار توی هر تیک و تعداد هسته‌ها هم به همون اندازه مهمن.
  • «هشت هسته یعنی هشت برابر سرعت.» فقط وقتی کار رو بشه تیکه کرد. کاری که یه‌تیکه‌ست روی یه هسته می‌مونه.
  • «۸ رشته یعنی ۸ هسته.» دو تا رشته روی یه هسته معمولا یه کم بیشتر از یه هسته کار می‌کنن، نه دو برابر.
  • «۲ vCPU یعنی دو تا هسته‌ی کامل.» معمولا سهمی از رشته‌های پردازنده‌ی واقعیه، و گاهی با همسایه‌ها شریکه.
  • «سایت کنده، پس پردازنده‌ی قوی‌تر بخریم.» اول ببینید گیر کجاست؛ بیشتر وقت‌ها رم، دیسک، کش یا تنظیمه.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • پردازنده دستورها رو چهار قدم انجام می‌ده: آوردن، فهمیدن، انجام، نوشتن.
  • کش یه حافظه‌ی خیلی سریع و کوچیک داخل پردازنده‌ست؛ هر چی بزرگ‌تر، کمتر منتظر رم می‌مونه.
  • گیگاهرتز تعداد تیک‌ها در ثانیه‌ست، ولی کار توی هر تیک هم به همون اندازه مهمه.
  • هسته یعنی یه خط تولید کامل؛ رشته یعنی یه خط که دو تا کار رو نوبتی جلو می‌بره.
  • vCPU توی سرور مجازی سهمی از یه رشته‌ی پردازنده‌ی واقعیه، و گاهی با همسایه شریکه.

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس