فرکانس پردازندهها نسبت به دهه 90 میلادی، دو، سه و حتی چهار برابر شدهاند و اگر همهچیز خوب پیش رفته بود، امروز ما از پردازندههایی با فرکانس 10 گیگاهرتز استفاده میکردیم، اما چرا این اتفاق نیفتاد و فرکانس پردازنده ها با سرعت لاکپشتی افزایش مییابد؟
همانطور که احتمالاً حدس میزنید، گرما یک مشکل جدی است، فرکانس بالاتر به تولید گرمای بیشتر میانجامد و به همین دلیل اورکلاکرهای حرفهای برای دست یابی به فرکانسهای بالا سراغ خنک سازی با دمای زیر صفر میروند. اما اینتل میگوید مشکل اصلی گرما نیست. ویکتوریا جزلینا از اینتل، به جنبه ذاتی محدودیتها در پردازندهها پرداخته و میگوید چرا ما پردازنده 10 گیگاهرتزی نداریم.
«محدودیت اصلی در سطح نقاله دستورالعملها نهفته است که در اصل به ساختار اجرای موازی در سطح دستورالعملها مربوط میشود و بخش جدایی ناپذیری از طراحی فعلی پردازندههای اینتل است. در پردازندههای موسوم به Superscalar، دستورالعملها به اجزای کوچکتری تقسیم میشوند تا توسط واحدهای اجرایی متعدد اجرا شوند. هر گام باید به صورت ترتیبی و هر یک توسط اجزای جداگانه اجرا شوند»
دستورالعمل ها در پردازنده در چندین گام اجرا می شوند که نمودار زیر آن را نشان می دهد:
همانطور که این نمودار نشان می دهد، گام ها یکی پس از دیگری بر روی اجزای محاسباتی جداگانه اجرا می شوند. هنگامی که اجرای یک گام پایان می یابد، آن واحد محاسباتی می تواند برای اجرای قطعات یک دستورالعمل دیگر بکار گرفته شود.
همانطور که در نمودار بالا مشاهده میکنید، واحد محاسباتی اول، گام اول از دستورالعمل نخست را در بازه زمانی t1 اجرا میکند. با اجرای بازه t2 گام اول به پایان رسیده و گام دوم بر روی واحد محاسباتی دوم آغاز میشود. حالا واحد محاسباتی اول آزاد است و آماده اجرای گام اول دستورالعمل بعدی است. در طول بازه t4، گامهای مختلف هر چهار دستورالعمل اجرا شدهاند.
در اصل نمودار بالا نحوه اجرای موازی دستورالعملها در پردازندههای Superscalar را نشان میدهد، این پردازندهها میتوانند به ازای هر سیکل ساعت، چندین دستورالعمل را اجرا کنند اما همانطور که مشاهده میکنید، اجرای قطعات دستورالعملها به سیکلهای بعدی میکشد، به گفته اینتل مشکل آنجاست اگر طول سیکلها کوتاهتر باشد (در نتیجه فرکانس بالاتر)، لزوماً به افزایش سرعت اجرای دستورالعملها کمک نمیکند، چراکه اجرای قطعات دستورالعملها به زمان مشخصی نیاز دارد و با کوتاه کردن سیکل (افزایش فرکانس)، اتمام اجرای یک دستورالعمل به سیکلهای بیشتری میکشد.
«اما این موضوع چه ارتباطی با فرکانس پردازنده دارد؟ در واقع ممکن است مدت زمان لازم برای اجرای مراحل مختلف متفاوت باشد. در عین حال گامهای مختلف همان دستورالعمل در طول سیکلهای مختلف اجرا میشود. طول سیکل [و پیرو آن فرکانس] پردازنده باید متناسب با طولانیترین گام باشد»
همانطور که نمودار بالا نشان میدهد، اگر طول سیکل (وابسته به فرکانس) کوتاهتر از مدت زمان لازم برای اجرای طولانیترین گام باشد، اجرای آن به سیکلهای بیشتری نیاز دارد که به افزایش تأخیر منجر میشود. ممکن است بگویید این کار باعث افزایش سرعت گامهای کوتاهتر میشود و این مثبت است، اما اگر به نمودار زیر دقت کنید، علی رغم اجرای سریعتر گامهای کوتاه، تمامی سیکلهای بعد از 4 با تأخیر اجرا میشوند.
«فرض بگیرید اجرای طولانیترین گام به 500 پیکوثانیه نیاز دارد و طول سیکل ساعت در یک پردازنده 2 گیگاهرتزی همین مقدار است، حالا اگر فرکانس همان پردازنده افزایش یابد و طول سیکل نصف (250 پیکو ثانیه) شود، طولانیترین گام برای اجرا به دو سیکل (500 پیکو ثانیه زمان) نیاز دارد که در عمل به افزایش سرعت نمیانجامد و صرفاً باعث افزایش پیچیدگی و گرما میشود»
اگر به نمودارهای بالا دقت کرده باشید، افزایش فرکانس و در نتیجه آن کاهش طول سیکلها بر افزایش سرعت اجرای گامهای اولیه دستورالعملها میافزاید اما در نهایت به افزایش تأخیر منجر میشود و به نظر نمیرسد مزیت خاصی داشته باشد. به ادعای ویکتوریا جزلینا از اینتل، تنها راه موجود برای افزایش فرکانسها بدون تأثیر منفی بر کارایی، کاهش طول طولانیترین گام است. متأسفانه دستکم در حال حاضر راههای زیادی برای انجام این کار وجود ندارد. یکی از راهها میتواند توسعه فناوریهای ساخت تراشه پیشرفتهتر باشد که از اندازه فیزیکی اجزای پردازنده بکاهد. این کار از طریق کاهش مسافتی که باید سیگنالها طی کنند، بر سرعت پردازنده میافزاید.
به گفته جزلینا، افزایش فرکانس پردازندهها به پیشرفت در حوزههای مختلف وابسته است و به آسانی نمیتوان پردازندههای سریعتر ساخت، به همین دلیل ظرف سالهای اخیر آهنگ افزایش فرکانس پردازنده ها کُندتر شده است.
افزایش فرکانس پردازنده ها «حماقت» است!
اما به افزایش فرکانس و حتی اورکلاکینگ میرسیم، با افزایش ولتاژ هسته پردازنده، سرعت سویچینگ ترانزیستورها بالا میرود و تمامی گامها کوتاهتر شده و در نتیجه آن میتوان فرکانس را افزایش داد. در ظاهر که عالی به نظر میرسد اما یک مشکل اساسی با تولید گرما وجود دارد. فرمول زیر به طور ساده تلفات توان در پردازنده (عمدتاً به صورت گرما) را نشان میدهد:
P ~ Cdyn*V2*f
P: توان، Cdyn: ظرفیت خازنی دینامیک، V: ولتاژ، f: فرکانس
اما اگر نمیدانید ظرفیت خازنی دینامیک چیست، هیچ نگران نباشید، چراکه اینجا مهمترین عامل ولتاژ است و به توان 2 میرسد.
تاثیر اورکلاک کردن به 5 گیگاهرتز بر مصرف انرژی
واقعیت بسیار بدتر از آن چیزی است که تصور میکنید. همانطور که پیشتر اشاره شد، این اعمال اختلاف پتانسیل (ولتاژ) است که ترانزیستورها را به کار میاندازد. میتوان گفت ترانزیستور به نوعی کار یک کلید قطع و وصل را انجام میدهد. یک ترانزیستور برای سویچ کردن به انباشت بار (اشباع شدن) نیاز دارد. مدت زمان لازم برای اشباع در ترانزیستور به شدت جریان وابسته است و با افزایش شدت جریان، مدت زمان لازم برای آن کاهش مییابد. همانطور که احتمالاً می دانید خود شدت جریان نیز به ولتاژ وابسته است. طبق آنچه که گفته شد، سرعت سویچ کردن ترانزیستورها به ولتاژ وابسته است. حالا احتمالاً متوجه شدهاید که فرکانس پردازنده متناسب با سرعت سویچ کردن ترانزیستور میتواند افزایش بیابد که خود به ولتاژ وابسته است. همه آنچه که گفته شد را می توان در قالب فرمول های زیر بیان کرد:
f ~ V وP ~ Cdyn*V3
این فرمول ها نشان میدهند افزایش خطی فرکانس باعث افزایش چهار برابری تلفات انرژی میشود. به عبارتی دیگر اگر فرکانس فقط دو برابر افزایش یابد، گرمای تولید شده هشت برابر میشود، بنابراین اگر گرمای تولید شده به خوبی دفع نشود، باعث خاموش شدن و یا حتی ذوب شدن پردازنده خواهد شد. در نظر داشته باشید این فرمول ها ساده شده اند.
آنچه که گفته شد نشان میدهد افزایش فرکانس بهترین و کارآمدترین راه ممکن برای افزایش کارایی پردازندهها نیست و به همین دلیل سازندگان پردازنده به جای افزایش فرکانس، کارایی پردازندهها را از طریق راه های دیگری چون افزایش تعداد هستهها و پیاده سازی تکنیکهای بهینه سازی بالا میبرند.