چرا سرعت ساعت متوقف شد: دیوار توان
افزایش فرکانس ساعت یک پردازنده باعث میشود عملیات بیشتری در ثانیه انجام دهد، اما همزمان میزان توان الکتریکی مصرفی تراشه و بهتبع آن گرمای تولیدشده را نیز افزایش میدهد. این رابطه اغلب Power Wall نامیده میشود.
مصرف توان در مدارهای دیجیتال تقریباً با رابطه زیر رشد میکند:
Power ≈ Capacitive Load × Voltage² × Frequencyاز آنجا که توان با توان دوم ولتاژ رشد میکند، حتی افزایشهای کوچک همزمان در سرعت ساعت و ولتاژ منجر به افزایش نامتناسب بزرگی در گرمای تولیدی میشود. فراتر از یک نقطه مشخص، گرمای تولیدشده دیگر نمیتواند با روشهای خنکسازی عملی و مقرونبهصرفه دفع شود، و به همین دلیل سازندگان در نهایت از افزایش قابلتوجه سرعت ساعت تکهستهای دست کشیدند.
تغییر بزرگ: حرکت از تکهسته به چندهسته
وقتی افزایش سرعت ساعت غیرعملی شد، صنعت استراتژی خود را تغییر داد: بهجای سریعتر کردن یک هسته پردازشی، تراشهها شروع به شاملشدن چند هسته مستقل روی یک قطعه سیلیکون کردند. این تغییر گاهی The Sea Change از تکپردازندهای به Multicore Microprocessors نامیده میشود.
این تغییر پیامد بزرگی برای توسعهدهندگان نرمافزار داشت. در گذشته، یک برنامه تکرشتهای بهطور خودکار روی نسل جدید پردازنده سریعتر اجرا میشد، صرفاً به این دلیل که ساعت سریعتر شده بود. با تراشههای چندهستهای، یک برنامه فقط زمانی از هستههای اضافه بهره میبرد که بهصراحت طوری نوشته شده باشد که کار خود را بین آنها تقسیم کند — تکنیکی به نام Parallel Programming. نرمافزاری که نمیتواند به این شکل تقسیم شود، فایده کمی یا هیچ فایدهای از داشتن هستههای بیشتر نمیبیند.
واقعیتهای عملی: بنچمارک کردن یک پردازنده واقعی چه نشان میدهد
اعداد بازاریابی و ارقام کارایی نظری اوج، اغلب تفاوت قابلتوجهی با آنچه یک پردازنده روی بارهای کاری واقعی به دست میآورد دارند. بنچمارک کردن یک تراشه واقعی، مانند Intel Core i7، در برابر یک مجموعه استاندارد از برنامههای نماینده نشان میدهد کارایی چگونه بسته به نوع وظیفه تغییر میکند: برخی بارهای کاری با سرعت جابهجایی داده در حافظه محدود میشوند، برخی دیگر با تعداد عملیات محاسباتی که هسته میتواند در هر سیکل صادر کند محدود میشوند، و نتایج حتی روی سختافزار یکسان میتواند بین برنامههای مختلف بهطور قابلتوجهی متفاوت باشد.
به همین دلیل، تکیه بر یک عدد کارایی منفرد، بدون دانستن اینکه چه بار کاری آن را تولید کرده، تصویری ناقص و گاهی گمراهکننده از توانایی واقعی ارائه میدهد.
مغالطات و دامهای رایج در استدلال درباره کارایی
برخی فرضیات نادرست درباره کارایی بهاندازهای تکرار میشوند که ارزش نام بردن صریح دارند.
- فرض اینکه فرکانس ساعت بالاتر بهتنهایی کارایی بهتر را تضمین میکند، بدون در نظر گرفتن تعداد سیکلهایی که هر دستور واقعاً نیاز دارد.
- فرض اینکه دو برابر کردن تعداد هستهها بهطور خودکار سرعت واقعی اپلیکیشن را دو برابر میکند، بدون در نظر گرفتن بخشی از برنامه که قابل موازیسازی نیست.
- استفاده از ارقام کارایی نظری اوج بهگونهای که گویی نشاندهنده توان عملیاتی پایدار واقعی هستند.
- مقایسه دو سیستم با استفاده از بنچمارکها یا بارهای کاری متفاوت و رفتار با آن مقایسه بهعنوان مقایسهای منصفانه.
جمعبندی
گذاری که در این فصل توصیف شد — از هستههای تک و سریع محدودشده توسط دیوار توان، به هستههای چندگانه که نیازمند نرمافزار موازی صریح هستند — تقریباً هر تصمیم معماری بعدی را شکل داد. درک این تغییر پیشنیاز استدلال درست درباره این است که چرا سختافزار و نرمافزار امروزی به این شکل طراحی شدهاند.