حسین کعبی: وقتی فیگو را در جام جهانی زدم....
بیشتر کاربران چندان توجه و علاقهای به نوع کارت گرافیکی و GPU که در ترکیب پیکربندی رایانهشان وجود دارد، ندارند. تنها کاربرانی مانند بازیخورهای حرفهای یا مصرفکنندگان برنامههای کاربردی سنگین هستند که نوع کارت گرافیکی برای آنها حائز اهمیت است.
اما این روزها GPU، برای انجام کارها و مقاصد دیگری بهغیر از نگاشت پسزمینه و رندر کردن بازیهای رایانهای سهبعدی مورد استفاده قرار میگیرد. کاربردها و قابلیتهایی که نهتنها برای شتاب دادن به فرآیند ایجاد گرافیکهایی با کارآیی بالا موثرند، بلکه در انجام بسیاری از کارهای ریز و درشت و سبک و سنگین نیز بسیار خوب عمل کرده و از سرعت و چالاکی کافی برخوردارند.
دانشمندان علوم رایانه سرمایهگذاری روی فناوری پردازش گرافیکی را آغاز کردهاند تا رایانههای امروزی بتوانند خیلی روانتر از گذشته کار کنند؛ از برنامههای نرمافزاری کاربردی پیچیده مورد استفاده برای یافتن پسوردهای گمشده مدارک رمزگذاری شده گرفته تا ابررایانههایی که در نوع خود شاهکاری هنری بوده و شبیهسازی غیرقابل باور مواد شیمیایی را هدف قرار دادهاند.
تاریخچه پردازش گرافیکی
اوایل رواج استفاده از محاسبات رایانهای و رایانههای شخصی، اصلا چیزی بهعنوان GPU وجود نداشت، پردازنده مرکزی مسوولیت قرار دادن تصاویر روی صفحه نمایش را بر عهده داشت و پردازش ساده بود. در وجه گرافیک در دوران پیش از ویندوز (که فقط توانایی تولید تصاویر متنی محض را داشت) ناحیهای از حافظه سیستم طراحی شده بود تا تحت عنوان حافظه گرافیکی کار کند.
برخلاف حافظه رم معمولی، حافظه گرافیکی متشکل از نوع خاصی از حافظه به نام رم دو درگاهه (dual-port) بود. این حافظه، هم برای پردازنده و هم برای سختافزار مسوولیت قرار دادن تصاویر روی صفحه نمایش را داشت و هر بخش از آن حافظه، به یک پیکسل مشخص روی صفحه نمایش وابسته بود. بهعنوان مثال، برای رسم یک خط از بالای سمت چپ صفحه نمایش تا پایین سمت راست آن، پردازنده نقاطی را که روی خط هستند از کار درآورده و پس از آن، برای هر نقطه یک عدد در مکان متناظر مربوط به آن روی حافظه گرافیکی مینوشت. سپس سختافزار گرافیکی هر یک از آن پیکسلها را روشن میکرد تا خط را تشکیل دهند.
اولین کارت گرافیکی رایانه که بهجز ایجاد متون ساده قادر به تولید تصاویر گرافیکی نیز بود، هماهنگکننده گرافیک رنگی1 یا CGA نامیده میشد. بالاترین تفکیکپذیری صفحه نمایش آن در حالت گرافیک، 640 در 200 پیکسل بود، اما این تفکیکپذیری فقط در حالت تکرنگ قابل دسترس بود. حالت گرافیک رنگی آن، تنها اجازه ایجاد 4 رنگ را میداد اما در این حالت فقط تفکیکپذیری 320 در 200 ارائه میشد. البته قدرت پردازشی مورد نیاز برای این تفکیکپذیریها بههیچوجه قابل مقایسه با حدی از نیروی پردازش گرافیکی که لازم است تا از عهده تفکیکپذیری 2560 در 1600 پیکسلی 7/16 میلیون رنگی صفحه نمایشهای امروزی برآید، نیست بهویژه مفهومی که امروزه ما از گرافیک سه بعدی درک کردهایم، در دوران CGA، تنها یک رویای دست نیافتنی بود.
دهه 1980 و 1990 شاهد ظهور و صعود رابط کاربری گرافیکی2 یا GUI بود و کنترل دسکتاپ رایانه از طریق یک ماوس جایگزین ورودی متنی شد. همچنانکه این مدل کاربرد رایانه در بین مردم متداولتر میشد، بتدریج گرافیک از صورت یک بخش اضافی درآمد و تفکیکپذیری نیز افزایش یافت. فناوریهای گوناگونی پا به میدان گذاشتند تا کار اضافی که بر دوش پردازنده گذاشته شده بود را کاهش دهند.
هنگامی که شتاب دادن به سختافزار گرافیکی3 پدیدار و متداول شد، برای اولینبار پردازنده میتوانست دستورالعملهای سادهای چون: "یک خط آبی از نقطه (0،0) تا نقطه (1023،767) ترسیم کن" را بهجای اجبار برای از کار درآوردن همه و هر یک از پیکسلها در امتداد آن خط، صادر کند. کارتهای گرافیکی ابتدایی که اجزای جانبی را بهکار میگرفتند، راه را برای پردازشگرهای سفارشی طراحی شده گرافیک دو بعدی هموار ساختند تا سرانجام به پدید آمدن پردازشگرهای گرافیکی سه بعدی امروزی انجامید. امروزه ما شاهد ظهور پردازندههایی هستیم که میتوانند در جهتی هوشمندانه برنامهریزی شده و دستورالعملهایی را بهترتیب اجرا کنند، اما سختافزار آنها باید بهصورت مناسب و اختصاصی ساخته شود تا پاسخگوی ملزومات گرافیک سه بعدی باشد.
مقایسه کار یک GPU با پردازنده
اگرچه GPUها در اصل برای برنامههای کاربردی مخصوصی که بهقصد تولید گرافیک سه بعدی کاربرد دارند، ساخته شدهاند اما یک GPU در نهایت فقط یک پردازنده است که وظایفی که در محاسبات ریاضی و منطقی دخالت دارند را انجام میدهد و از اینرو به پردازنده اصلی مرکزی شباهت دارد.
برای اینکه بفهمیم چه چیزی اینقدر GPU را مهم و تکالیف آن را خطیر میسازد، باید به ویژگیهایی که آن را از ریزپردازنده با کاربرد در مصارف عمومی متفاوت میکند، نگاهی بیندازیم.
واضحترین تفاوت آنها، تعداد هستههای آنهاست. پردازندههای x
86 امروزی که در رایانههای ما هستند، 1،2،3،4 یا 6 هسته دارند و انواعی مانند Core i7 نیز فناوری ابرچندنخی4 را بهکار میبرند تا تعداد هستههایشان را 2 برابر کنند.مهندسان این صنعت بر این عقیدهاند که در کوتاهمدت پردازندههای معمولی خیلی فراتر از این حد نخواهند رفت. دلیل آنهم به محاسبات رایانهای با کاربری عمومی برمیگردد. در همین حال، قانون کاهش بازده5 پا به میدان میگذارد. این قانون بر اساس این حقیقت است که با افزایش تعداد هستهها، سپردن موقت کارها به همه هستهها به شیوهای کارآمد و با حفظ کارایی، مشکلتر میشود. در واقع افزودن هستههای اضافی مستلزم درگیر شدن مدیریت اضافی است که باید در امر محول کردن وظایف مختلف و اجتناب از ایجاد تنگناها صورت بگیرد.
این امر، بهجای سرعت بخشیدن به فرآیند پردازش ممکن است موجب آهستهتر کردن روند آن شود. پردازشگر گرافیکی دارای واحدهای محاسباتی متعددی است که حجم بسیار زیادی از دادهها را در کوتاهترین زمان بهطور موازی پردازش میکند. در چند سال اخیر پردازندههای گرافیکی بهعنوان هسته اصلی پردازش گرافیکی در کامپیوترها بسرعت توسعه مییابند. ریزپردازندهها و واحدهای پردازشگر گرافیکی 4 تفاوت عمده به شرح زیر دارند:
1ـ GPUها بهلطف معماری موازی خود، بسیار سریعتر از پردازندههای مرکزی هستند.
2ـ از نظر ملاک نسبت کارآیی به قیمت، GPUها ارزانتر هستند.
3ـ از نظر معیار نسبت کارایی به وات، GPUها توان مصرفی بسیار کمتری نسبت به پردازندههای مرکزی دارند.
4ـ پردازندههایگرافیکی تنها میتوانند به پردازش سریع برنامههایی مانند بازیهای رایانهای، محاسبات پیچیده و سنگین بهصورت همزمان بپردازند که توسط GPU بخوبی پردازش شده و افزایش عملکرد محسوسی نسبت به پیادهسازی بر پایه پردازنده مرکزی خواهند داشت. بنابراین شما نمیتوانید یک GPUرا در اجرای برنامه ورد مجموعه آفیس، جایگزین یک پردازنده کنید و از افزایش عملکرد و کارآیی بهرهمند شوید.
جمعبندی
با فراگیر شدن فناوری پردازش گرافیکی، GPUها بتدریج خود را بهعنوان ابررایانههای آینده اثبات میکنند. در آیندهای نزدیک نهتنها ساختار نرمافزارها بلکه معماری پردازندههای مرکزی نیز متحول خواهد شد که ما هماکنون شاهد جلوههای آن در نمونههای جدید پردازندههای مرکزی ادغام شده با واحد پردازنده گرافیکی و معماری یکپارچه آنها هستیم.
منابع
پینوشت
1. Color Graphic Adapter
2. Graphical User Interface
3. Hardware Graphics Acceleration
4. hyper-threading
5. Diminishing returns
جواد ودودزاده
حسین کعبی: وقتی فیگو را در جام جهانی زدم....