در سال ۲۰۱۲ میلادی می توانستید یک پردازنده چهار هستهای و هشت رشتهای با فرکانس کاری پایه ۳.۵ گیگاهرتز و فرکانس توربو ۳.۹ گیگاهرتز بخرید. در سال ۲۰۱۸ هم میتوانستید پردازندهای با فرکانس کاری پایه ۳.۵ گیگاهرتز و فرکانس توربو ۳.۹ گیگاهرتز بخرید که این بار ۱۶ هسته و ۳۲ رشته پردازشی داشت. این پردازنده Threadripper 2950x بود و با قیمتی دو برابر بیشتر از قیمت Core i7-3770K سال ۲۰۱۲ از راه میرسید.
دقیقا چه اتفاقی دارد میافتد؟ آیا براساس قانون مور که در سال ۱۹۷۵ مطرح شد و میگوید تراکم ترانزیستوری روی یک مدار، هر دو سال دو برابر میشود، نباید پردازنده سال ۲۰۱۸ با فرکانس کاری ۲۸ گیگاهرتز کار میکرد؟ بله، میتوانید اکنون یک پردازنده i9 با فرکانس ۵ گیگاهرتز بیابید، اما پردازنده Core i3-10100 اینتل در سال ۲۰۲۰ همراه با چهار هسته و هشت رشته از راه میرسد و با فرکانس ۳.۶ و ۴.۳ گیگاهرتز، همچنان مشخصاتی مشابه پردازنده i7 سال ۲۰۱۲ دارد.
بنابر قانون مور، پرفورمنس کامپیوترها باید در هر دو سال دو برابر شود، اما این بیشتر از اینکه یک قانون باشد، یک خط مشی است. و میتوان با قطعیت کامل گفت که این روزها دیگر چنین سطحی از پیشرفت مداوم را شاهد نیستیم. حال این سوال مطرح میشود که چرا این رکود پرفورمنس اتفاق افتاد و در آینده میتوانیم منتظر افزایش پرفورمنس کامپیوتری در چه حوزهای باشیم؟
این سوال ذهن برخی از مستعدترین اذهان MIT را به خود مشغول کرده و آنها در یکی از شمارههای ژورنال Science پرسیدهاند که: «چه چیزی بعد از قانون مور، پرفورمنس کامپیوتری را به پیش میراند؟»
نویسندگان یکی از عوامل بروز مشکل را، اتکای طولانیمدت اینتل بر پروسه ۱۴ نانومتری از سال ۲۰۱۴ دانستهاند، اما این تنها عامل نیست. آنها میگویند روند مینیاتوری کردن سختافزار، بهرحال یک روز به پایان میرسید. آنها در بخشی از مقاله خود میگویند «اگرچه تکنولوژی نیمههادی احتمالا قادر به دستیابی به ترانزیستورهای حتی ۲ نانومتری باشد، روند مینیاتوری کردن احتمالا با دستیابی به ۵ نانومتر متوقف شود و دلیلش، بازده نزولی است.» همینطور که به ابعاد اتمی نزدیکتر میشویم (یک اتم سیلیکون ابعادی معادل ۰.۱۴۶ نانومتر دارد)، هزینه تولید به شکل چشمگیری افزایش مییابد.
اما تکلیف شمار هستهها چیست؟ تعداد هستهها طی سالهای اخیر به شکلی پیوسته افزایش یافته و این موضوع عمدتا به خاطر تلاشهای شرکت AMD بوده است. آیا هستهها میتوانند به شرایط کمک کنند؟ «ممکن است شاهد افزایش اندک در شمار هستهها باشیم، اما نه آنقدرها. صرفا به این خاطر که یک نرمافزار به سختی میتواند از انبوهی از هستهها به صورت همزمان استفاده موثر کند.» این بحث البته راجع به کامپیوترهای خانگی مطرح شده و سرورها -خصوصا سرورهایی که در پروسه پردازش مبتنی بر کلاد و موتورهای جستجو دخیل هستند- همچنان به افزایش تعداد هستهها ادامه خواهند داد.
فاکتورهای اضافه
به گفته محققین MIT، آنچه پردازندهها را عقب نگه داشته، ماهیت کاربرد عمومیشان است. سختافزارهای تخصصی از مدتها پیش راهشان را به کیسهای کامپیوتر ما باز کردهاند و معمولا گرافیکها را هدف قرار دادهاند. البته که پردازشگرهای گرافیکی را داریم و هسته Quick Sync نیز در پردازندههای اینتل کاری جز تبدیل کردن ویدیو انجام نمیدهند. پیشتر کارتهای پردازشی مبتنی بر PhysX را هم برای گیمرها داشتیم، اما بعد انویدیا این تکنولوژی را خرید و آن را به پردازشگرهای گرافیکی خود آورد. مشتریان مک پرو اپل هم اگر به دنبال شتابدهی سختافزاری کدکهای ویدیویی ProRes باشند میتوانند به سراغ کارت Afterburner بروند، اما مدارهای مجتمع با کاربرد خاص (ASIC) عمدتا بر بازار ماینینگ بیتکوین متمرکز بودهاند.
محققین میگویند: «به نظرمان یکی از کارهایی که بیشتر به انجام آن خواهیم پرداخت، طراحی چیپهایی است که در اجرای نوعی اپلیکیشن خاص تخصص دارند و از آنها برای افزایش سرعت استفاده خواهیم کرد. اما این چیپها به جایگزینی برای پردازندههای کاربرد عمومی تبدیل نمیشوند که انبوهی از کارهای مختلف به انجام میرسانند. اگر به چیپها نگاه کنید، متوجه میشوید یک مدار کوچک و خاص روی آنها قرار گرفته که به رمزنگاری رسیدگی میکند. بنابراین زمانی که در اینترنت هستید و میخواهید یک مبادله مالی امن داشته باشید، شاید انبوهی از پردازش در ماجرا دخیل باشد، اما همان چیپ کوچک خاص کار را پیش میبرد.»
بعد نوبت به نرمافزار میرسد. همانطور که آزمایش سریع محققان MIT نشان میدهد، پرفورمنس از طریق بهینگی بیشتر به دست میآید: یک مقدار بسیار دشوار (ضرب دو ماتریس 4096x4096) در پایتون نوشته شد و ۷ ساعت طول کشید تا یک کامپیوتر مدرن عملیات را به پایان برساند، اما درحالی که تنها از ۰.۰۰۰۶ درصد از پیک پرفورمنس دستگاه استفاده میشد. همین مقدار بسیار دشوار سپس در جاوا نوشته شد و با سرعت ۱۰.۸ برابر سریعتر عملیات به پایان رسید. سپس در C که ۴۷ برابر سریعتر از کد پایتون بود. با دستکاری کد به گونهای که از تمام توان یک پردازنده ۱۸ هستهای استفاده کند، همین محاسبه بسیار دشوار در ۰.۴۱ ثانیه به پایان رسید. یعنی ۶۰۰ هزار مرتبه سریعتر.
مثال بالا متعلق به یک پردازنده کاربرد عمومی است، بنابراین اگر بتوانیم یک کد را بهینه را با یک سختافزار کاربرد خاص ترکیب کنیم، به سرعتی حتی بالاتر دست خواهیم یافت. در عصر پسا مور، ممکن است شاهد کوچکتر و بهینهتر شدن اپلیکیشنها و سیستمهای عامل باشیم و این نرمافزارها دیگر تمام درایوهای SSD و حافظه دسترسی تصادفی را به اشغال خود در نمیآورند.
بیایید فرض کنیم میخواهید یک ایمیل بفرستید و سرویس Outlook اعلانی با این مضمون پیش رویتان قرار میدهد: «ارسال، بلی یا خیر؟» یک کامپیوتر چطور میتواند به چنین خواستهای رسیدگی کند؟ «یکی از کارهایی که میتوان انجام داد، طراحی همهچیز از نو است. میتوانید مثالهایی از مردم بیابید که پاسخ مثبت یا منفی میدهند و سپس برنامهای بنویسید که این چیزها را شناسایی میکند.»
یا میتوانید بگویید که ما اکنون چیزهایی مانند سیری و دستیار گوگل داریم که میتوانند نهتنها بلی یا خیر، بلکه میلیونها چیز دیگر را نیز تشخیص دهد. احتمالا آنقدرها سخت نیست که برنامهای کوچک بنویسیم که وقتی سخنان کاربر را میشنود، ابتدا آن را برای پردازش به سمت گوگل بفرستد و بعد به سمت ما. این یک راه بسیار بهینه برای نوشتن کدهایمان است، اما راهی بسیار غیر بهینه برای طی کردن فرایند پردازش. زیرا سیستم تشخیص صدا بسیار پیچیده است و شما از قبل میدانید که پاسخ در نهایت یا بلی است یا خیر».
بنابراین در نبود مزیتهای پرفورمنسی در سطح مهندسی، اکنون نیاز است سختافزار و نرمافزار شکلی یکپارچه به خود بگیرند تا مطمئن شویم کامپیوترهای آینده با سرعتی بالاتر به وظایف خود رسیدگی میکنند. - حتی اگر همچنان فرکانس کاری همان ۳.۵ گیگاهرتز باشد.