گسترش GPU ها

مرکز پردازش گرافیکی یا GPU ( Graphic Processing Unit )، بر روی کارت های گرافیکی قرار داشته و در امتداد CPU کار کرده تا تصویر را بر روی نمایشگر شما نشان دهد. اگر شما یک کاربر حرفه ای در بازی های کامپیوتری نباشید و یا از برنامه های گرافیکی بطور حرفه ای و تخصصی استفاده نمی کنید، کمتر ممکن است نسبت به اینکه کارت گرافیکی شما چه مدلی باشد و یا از چه GPU ای استفاده می کند، حساسیت داشته باشید. اما امروزه تغییرات گسترده ای در این مورد صورت گرفته است و GPU در کارهایی غیر از رندر کردن بازی های سه بعدی و texture mapping نیز مورد استفاده قرار می گیرند.

مشخصه های پردازشی که برای شتاب دادن به کارت گرافیک های با عملکرد بالا طراحی شده اند، همچنین می توانند کارهای سنگین دیگری که نیاز به تعداد زیادی برنامه متراکم دارند را انجام دهند و طراحان کامیپوتری بر روی این مطلب سرمایه گذاری نموده اند تا به سیستم های امروزی برای داشتن عملکردی بهتر و یکنواخت تر کمک کنند. از انجام کارهایی همچون بازیابی رمز برای فایل های رمزگذاری شده تا انجام عملیات مختلف در ابرکامپیوتر ها، موجب شده است تا GPU ها، بتوانند خود را به عنوان ابرکامپیوترهای نسل آینده معرفی کنند.

پیشینه تاریخی
در اوایل به بازار آمدن کامپیوترهای شخصی، GPU ها وجود خارجی نداشتند و تمامی پروسه ها و پردازش های مورد نیاز برای نمایش یک تصویر بر روی خروجی صفحه نمایش، توسط پردازشگر مرکزی یا CPU انجام می گرفت. در حالت گرافیکی، بخشی از حافظه سیستم به عنوان حافظه گرافیکی اختصاص داده شده بود. این بخش بر خلاف حافظه RAM، به گونه ای بود که به آن حافظه دو پورته گفته می شد که به این معنی بود که هم پردازنده مرکزی ( CPU ) و هم سخت افزاری که مسئول قرار دادن تصاویر بر روی صفحه نمایش بود، می توانستند به این بخش حافظه دسترسی داشته باشند. هر بخشی از این حافظه گرافیکی، مربوط به یک پیکسل مشخص بر روی صفحه نمایش بود. برای مثال اگر می خواستید یک خط از بالا و سمت چپ صفحه نمایش تا پایین و سمت راست را نمایش بدهید، پردازنده بر روی بیت های مربوط به آن پیکسل ها در حافظه گرافیکی، ارزش های مشخصی را وارد می نمود تا این پیکسل ها روشن شده و خط مورد نظر شما نمایش داده شود. در این سیستم های اولیه، تصاویر به متن ها ( Text ) خلاصه می شدند.

اولین کارت های گرافیکی کامپیوترهای شخصی که توانایی تولید تصاویری به غیر از متن داشتند، با نام CGA (  Color Graphics Adapter ) شناخته شدند. بیشترین رزولوشن ( وضوح تصویر ) این کارت ها 200×640 بود که فقط یک رنگ را شامل می شد. در حالت گرافیکی آن، 4 رنگ وجود داشت اما در این حالت به ندرت وضوح تصویر به 200×320 می رسید. نیازی به گفتن نیست که اگر این کارت را با کارت های گرافیکی امروزی مقایسه کنیم، بسیار سطح پایین است. کارت های امروزی، تصاویری با وضوح 1600×2560 را با حدود 16.7 میلیون رنگ نمایش می دهند و تصاویر سه بعدی که امروزه تکنولوژی آن بسیار پیشرفت کرده، برای کارت های گرافیکی اولیه چیزی فراتر از رویا بوده است.

در دهه 1980 و 1990، رشد واسطه های گرافیکی کاربر ( GUI ) را مشاهده می کنیم که ورودی کامپیوتر که فقط بر مبنای متن بود، با موس جایگزین شد و کاربران همزمان می توانستند با موس و صفحه کلید کار کنند. با این رشد دیگر هدف از تولید کارت های گرافیکی جدیدتر، فقط  افزایش وضوح تصویر نبود. بلکه طراحان این قطعه به دنبال بالا بردن قابلیت های کارت های گرافیکی بودند تا حجم بالایی از کار را از دوش پردازنده مرکزی یا CPU بردارند. از این زمان بود که تکنولوژی کارت های گرافیکی روز به روز پیشرفته تر شد تا به تکنولوژی امروزی کارت های گرافیکی می رسیم.

آناتومی یک GPU
با اینکه حجم بالایی از برنامه های گرافیکی سه بعدی توسط GPU انجام می شود، اما در نهایت GPU ها فقط یک پردازنده مرکزی هستند که شامل عملیات محاسباتی و منطقی می شود. در این حوزه، GPUها با CPU ها تفاوت چندانی ندارند. برای اینکه تفاوت عمده بین این دو را بهتر درک کنیم بهتر است مقایسه ای بین آن ها انجام دهیم. مهمترین تفاوت بین این دو، تعداد هسته های آن ها هستند. CPU های سیستم های خانگی ممکن است یک، دو، سه، چهار و یا تعداد بیشتری هسته داشته باشند. برای مثال پردازنده های Core i7 با استفاده از تکنولوژی Hyper-Threading ، در حقیقت تعداد هسته ها را دو برابر می کنند.  اما بهترین مهندسان طراح این صنعت، بر این باور هستند که CPU های با کاربردهای معمولی در کامپیوترهای شخصی، در کوتاه مدت پیشرفت چندانی نخواهند داشت. چون هر چه تعداد هسته های پردازنده افزایش می یابد، امکان هماهنگ کردن آن ها برای انجام کارهای معمولی کاهش می یابد. برای مثال فرض کنید در یک پیتزاپزی چهار نفر کارهای مختلف مربوط به پخت یک پیتزا را انجام می دهند و بین خود تقسیم کار انجام داده اند. در این حالت اگر نفر پنجمی نیز به آن ها اضافه شود، ممکن است نه تنها سرعت انجام کار را بالا نبرد، بلکه حتی ممکن است به علت دست و پا گیر شدن، سرعت افراد دیگر را نیز گرفته و در کل موجب پایین آمدن سرعت انجام کار شود.

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

تفاوت اساسی در نوع کدهایی است که دو پردازنده یعنی GPUها و CPUها اجرا می کنند. CPUها بیشتر دستورات شرطی If-Then-Else را اجرا می کنند. در این وضعیت، کدها معمولاً در یک ترتیب مشخص اجرا نمی شوند بلکه به حالت های محتمل بسیار زیادی منشعب می شود و CPU باید حجم زیادی از این حالت ها را یش بینی نماید. برنامه نویسان این موضوع را با عنوان کدهای انشعابی نام می برند. برنامه های با اهداف عام، کدهای مشابه را در حلقه ها به صورت متعدد تکرار می کنند و حجم بسیار کمی از داده ها را مجدداً مورد استفاده قرار می دهند. تمامی این فاکتورها سبب می شود تا برای افزایش دادن عملکرد سیستم برای سریع تر انجام دادن این کدها، تعداد بیشتری از ترانزیستور مورد استفاده قرار گیرد.

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

کارت های گرافیکی همچنین دارای ظرفیت های بالایی از حافظه های داخلی می باشند که اجازه دسترسی به حجم زیادی از اطلاعات را می دهد و می توانند با این اطلاعات، تعداد بسیار زیادی از هسته های پردازنده را تغذیه کنند. این رویکرد می تواند برای حافظه های داخلی Cache که درون CPUها قرار داده می شود، جایگزین بسیار مناسبی باشد. یکی دیگر از تفاوت های عمده که باید به آن توجه کنیم، Multithreading می باشد که در آن، دستورات به چندین مجموعه دستور کوچک تر تقسیم می شوند به طوریکه هسته های پردازنده مرکزی می توانند به صورت همزمان آن ها را انجام دهند و یا هسته ها در زمانیکه به علت نبود داده در حافظه داخلی خود و یا انجام نشدن یک پروسه وابسته به آن در توقف هستند، می توانند به یک مجموعه دستور دیگر پرش کرده و موقتاً آن را انجام دهند. این کار عملکرد پردازش را بسیار افزایش می دهد. این تکنولوژی را شرکت اینتل در پردازنده Core i7 به وضوح نشان داده است. البته بطور آزمایشی بر روی بعضی پردازنده های پنتیوم 4 خود نیز آن را قرار داده بود.

معمولاً یک هسته نمی تواند بیشتر از یک مجموعه دستور را در یک زمان انجام دهد. بنابراین این تکنولوژی در پردازنده های Core i7 قابلیت انجام این تعداد مجموعه دستور را دو برابر می کند و تأثیر زیادی در افزایش عملکرد پردازش می گذارد و عملکرد سیستم را 15 تا 30 درصد افزایش می دهد. حال باید در نظر گرفت که GPU ها با داشتن چند صد هسته پردازنده، به چه مقدار می توانند عملکرد پردازش را افزایش دهند. برای مثال GPU شرکت Nvidia با داشتن 240 هسته می تواند بین حدود 32720 مجموعه دستور سوئیچ کند و درنتیجه افزایش در عملکرد پردازش را به نسبت CPUها به نسبت بسیار بیشتری افزایش می دهد.

طرح FASTRA
این طرح به یک ابرکامپیوتر شخصی اشاره دارد که دارای چهار کارت گرافیکی GeForce 9800 GX2 است که هر کدام دارای یک جفت Nvidia G92 GPU می باشند. هر GPU، دارای 128 هسته می باشد که در مجموع کارت گرافیکی دارای 1024 هسته پردازنده گرافیکی می باشد. بازسازی حجم های سه بعدی کامل که شامل میلیاردها عنصر می باشند، با استفاده از یک سیستم چهار هسته ای، چندین روز طول می کشد در حالیکه همین کار با استفاده از FASTRA کمتر از یک ساعت به طول می انجامد. هزینه ساخت این ابرکامپیوتر حدود 5 میلیون تومان است.

کارت های گرافیکی شرکت Nvidia با GPUهای Tesla C1060، کارت هایی با پردازنده های محاسباتی هستند که هیچ گونه مدار خروجی تصویری ندارند و در ازای آن برای عملیات محاسباتی با عملکرد بسیار بالا طراحی و بهینه سازی شده اند. GPUهای آن دارای 240 هسته پردازنده، فرکانس کاری 1.3 گیگاهرتز و 4 گیگابایت حافظه داخلی بوده و می توانند 933 میلیارد دستور عملیاتی ( عملیات ممیز شناور یا فلاپ[1] ) را در یک ثانیه انجام دهند. برای مقایسه با CPUها، کافی ذکر کنیم که پر سرعت ترین CPU شرکت اینتل یعنی پردازنده 3.2 Ghz Core i7، دارای چهار هسته بوده و فقط توانایی انجام 51.2 میلیارد دستور عملیاتی در ثانیه را دارد. ( شکل 1 )

شرکت AMD نیز کارت های گرافیکی مشابهی تحت عنوان محصولات FireStream به بازار عرضه کرده است که سریع ترین آن ها  FireStream 9720 می باشد که دارای 800 هسته بوده و قادر است 1200 میلیارد دستور عملیاتی را در یک ثانیه انجام دهد. ( شکل 2 )

یکی از سازنده های بزرگ کامپیوترهای شخصی در انگلستان به نام Workstation Specialist، ادعا کرده است که سیستم WSX218 Tesla تنها سیستم در انگلستان است که دارای چهار کارت گرافیک Nvidia C1060 می باشد. علاوه بر این 4 کارت گرافیک که هر کدام دارای 240 هسته پردازنده گرافیکی می باشند، این سیستم دارای 2 پردازنده چهارهسته ای Core i7 با فرکانس کاری 3.2 گیگاهرتز، 64 گیگابایت حافظه سیستم DDR3 و 2 ترابایت هارددیسک می باشد. با توجه به این مشخصات، این سیستم می تواند 3730 میلیارد دستور عملیاتی را با استفاده از 960 هسته پردازنده خود، در یک ثانیه انجام دهد. قیمت این سیستم 18 میلیون تومان است و با اینکه قیمت آن بالا می باشد اما اگر بخواهیم اینچنین سرعتی را با استفاده از سیستم های معمولی بدست آوریم قیمت فراتر می رود و این سیستم به صرفه تر می شود. چون برای رسیدن به این سرعت حداقل به 48 چیپ چهار هسته ای نیاز است که قیمت ارزان ترین CPUهای چهار هسته 350 هزار تومان می باشد و اگر قیمت قطعات دیگری که برای تطابق این قطعات با هم مورد نیاز است را نیز محاسبه کنیم، قیمت چنین سیستمی به مراتب بیشتر از 18 میلیون تومان خواهد شد. درنتیجه سیستم ذکر شده در بالا به صرفه خواهد بود اما در صورتی که از تمام توان سیستم قرار باشد استفاده شود. ( شکل 3 )

یکی از اولین کمپانی هایی که از این مزیت کارت های گرافیکی ( منظور قدرت انجام دستورات و پروسه های موازی با سرعت بسیار بالاتر از CPUها به علت تعداد بسیار زیادی هسته های کارت گرافیک ) استفاده کرد، شرکت Elecomsoft می باشد که راه هایی را برای پیدا کردن و بازیابی کلمه عبور گم شده، در اختیار شما قرار می دهد. این کار از پروسه هایی است که می تواند به صورت موازی انجام شود و درنتیجه می توان از این مزیت GPU کارت گرافیکی استفاده کرد. شرکت سازنده ادعا کرده است درحالیکه یک سیستم معمولی با پردازنده دو هسته ای می تواند 350 کلمه عبور را در ثانیه چک کند، با استفاده از GPU، در کارت گرافیکی همچون GeForce GTX 295، می تواند 8400 کلمه عبور را در یک ثانیه چک کرد و مشخصاً سرعت به مراتب بالاتر خواهد رفت.

بازیابی کلمه عبور ممکن است کاری نباشد که به صورت روزمره با آن سروکار داشته باشیم. اما بسیاری دیگر از شرکت های نرم افزار نیز از این مزیت کارت گرافیکی بهره برده اند و انتظار می رود تا چند سال آینده، استفاده نرم افزارهای مختلف از این قابلیت به سرعت رشد کند. برای مثال شرکت Adobe، در آخرین نسخه نرم افزار PhotoShop CS4، امکان استفاده از شتاب و سرعت GPU کارت های Nvidia و AMD را فراهم نموده است. با استفاده از این امکانات کاربر می تواند برای بزرگنمایی تصویر، چرخاندن، ویرایش تصویر و بسیاری کارهای دیگر از قدرت GPU استفاده نماید و سرعت پردازش تصویر را بسیار افزایش دهد. همچنین می توان از قدرت GPU، در کارهایی از قبیل ویرایش فیلم ها و Encode و Decode کردن آن ها که درصد زیادی از CPU را اشغال می کند، استفاده کنید و این قابلیت ها در نرم افزارهایی همچون Cyberlink، Nero و ArcSoft و چندین نرم افزار دیگر، فعال شده اند.

قابلیت های ذکر شده در نرم افزارهای بالا را می تواند در سیستم عامل های ویندوز XP و ویستا و ویندوز 7 انجام داد. اما علاوه بر این موارد در ویندوز 7، قابلیت های دیگری نیز قرار داده شده است که می توانید به صورت مستقیم از آن ها بهره ببرید. برای مثال در ویندوز 7، یک تبدیل کننده فرمت های مختلف وجود دارد و زمانیکه شما یک فایل را بر روی پخش کننده خود می ریزید، به صورت اتوماتیک به فرمت قابل خواندن تبدیل می شود و این کار با استفاده از GPU انجام می شود.

این نکته که بسیاری از شرکت های تولید نرم افزار، در حال حاضر به دنبال استفاده از قابلیت و مزیت های GPU، در محصول خود هستند نشان می دهد که در چند سال آینده تکنولوژی GPUها به سرعت رشد خواهد کرد. تا کنون ابرکامپیوترها در انحصار افراد خاصی بوده اند اما پیش بینی می شود تا چند سال آینده هر کاربری بتواند یک ابرکامپیوتر در منزل خود داشته باشد. شما می توانید لیستی از سریع ترین ابرکامپیوترهای جهان را در وب سایت www.top500.org مشاهده کنید که 500 مورد اول را نشان می دهد. در حال حاضر سریع ترین ابرکامپیوتر جهان مربوط به شرکت IBM می باشد که می تواند 1000 ترا ( یا یک میلیون میلیارد ) دستور عملیاتی را در یک ثانیه انجام دهد.