جمعه, ۱۴ اردیبهشت, ۱۴۰۳ / 3 May, 2024
مجله ویستا

GPU رقیب CPU


GPU رقیب CPU
سخت‌‌افزار گرافیكی در ده سال گذشته نسبت به كنترل‌كننده‌‌های ساده صفحه نمایش و وسایل پردازش تخصصی به كمال رسیده، رشد چشمگیرتری داشته‌‌ و مقدار حافظه به‌‌كار رفته در آن‌‌ها، از چند كیلو بایت به صدها مگابایت رسیده است. اما سوال این است كه مصارف دیگری كه یك كارت ویدیویی می‌‌تواند در مواقعی جز بازی كامپیوتری یا كار با آخرین بسته نرم‌افزاری CAD داشته باشد، چیست؟
قبل از این‌‌كه شركت ۳dfx (كه اكنون به نام NVIDIA شناخته می‌شود) سخت افزار سه بُعدی ویژه كارت‌‌های ویدیویی شتاب‌‌دار را به تجهیزات تجاری تبدیل كند، كامپیوترهای شخصی هرگز این شكل را نداشتند.
واحدهای پردازش مركزی (CPU) پردازنده‌‌های همه‌منظوره‌‌ای هستند كه برای كار با محاسبات عمومی طراحی شده‌اند و الزاما برای كنار آمدن با عملیاتی كه به منظور بازسازی، اعمال بافت، نور پردازی و رسم سایه‌‌ها در صحنه‌‌های سه بُعدی موردنیاز است، بهینه نمی‌‌شوند. ایده تولید واحدهای تخصصی برای پردازش و كار با این نوع عملیات گرافیكی، از اوایل دهه ۱۹۹۰ به‌وجود آمد. اما به‌‌كارگیری آن‌‌ها تنها برای ایستگاه‌‌های كاری گرافیكی مدرن ممكن می‌‌شد تا این‌‌كه شركت ۳dfx، ارائه واحدهای ارزان قیمتی كه بر روی سخت‌‌افزار هر كامپیوتر شخصی تجاری قابل نصب بودند را در بازار آغاز كرد.
سخت‌‌افزارهای گرافیكی امروزی بسیار پیچیده هستند. این نوع سخت‌‌افزار معمولا شامل واحدهای پردازش فوق تخصصی (GPU) با چندین شاخه اجرایی و حافظه سریع (VRAM) برای بافرها و بازسازی بافت و مجموعه‌ای از دستور‌العمل‌های معین است. این مجموعه‌ دستور‌العمل‌ها اغلب از چند دستور‌العمل كلی و عملیات متعدد
Single Instruction Multiple Data) SIMD) برای پردازش بُرداری و ماتریس تشكیل می‌شوند. كامپیوترهای شخصی مدرن، اغلب حاوی یك یا چند دستور‌العمل SIMD (شامل MMX ،SSE ، ۲SSE،۳DNOW! و ...) هستند اما عملكرد آن‌‌ها ممكن است به خوبی آنچه‌‌كه كارت‌‌های ویدیویی ارائه می‌‌دهند، نباشد.
با این حال همه چیز آن‌‌طور كه به‌‌نظر می‌رسد، ساده نیست. سخت‌‌افزارهای گرافیكی برای ارتباط با بقیه سیستم از طریق درگاه‌‌های AGP،PCI یا PCI Express، پهنای باند محدودی دارند به این نحو كه:
▪ ۱۳۲PCIمگا بایت در ثانیه
▪ AGP ۸x: دو گیگابایت در ثانیه
▪ PCIe ۶۱x: هشت گیگابایت در ثانیه (حداكثر چهار هزار مگابایت در هر جهت)
▪ (Main Memory (DDR: تقریبا ۴/۶ گیگابایت تا هشت گیگابایت در ثانیه بنابراین، درگاه‌‌های نامبرده در هنگام انتقال داده‌‌ها به درون یا خارج از سیستم گرافیكی، مانند یك تنگه عمل می‌‌كنند.
اكنون سوال این است: آنچه‌‌كه واقعا می‌‌توان با استفاده از GPU، به‌‌ عنوان یك واحد پردازش عمومی انجام داد، چیست؟ در جواب می‌توان گفت: تقریبا همه كار؛ اما با محدودیت‌های معینی به این شرح:
▪ یكم: مجموعه دستور‌العمل محدود: به همین خاطر ممكن است این محدودیت به‌‌كارگیری برخی از الگوریتم‌‌ها را مشكل كند.
▪ دوم: دراختیار قرار دادن رشته‌‌های اجرای چندگانه (تا ۲۴ رشته در مدل جدید Nvidia ۷۸۰۰): از این‌رو پردازش موازی از اهمیت خاصی برخوردار خواهد بود.
▪ سوم: SIMD ‌بودن اغلب دستور‌العمل‌ها: بنابراین رفع مشكلاتی كه به سادگی از طریق ماتریس‌‌ها قابل حل نیستند، برای GPU نیز آسان نخواهد بود.
▪ چهارم: پهنای باند محدود ارتباط‌دهنده سخت‌‌افزار گرافیكی و واحد پردازش مركزی اصلی: این امر ایجاب می‌‌كند كه برنامه‌‌نویسان كدی را طراحی كنند كه مكان‌‌یابی دقیق برای به حداقل رساندن مقدار داده‌‌ها و كد تبادل شده بینGPU و بقیه سیستم را ارائه دهد.
برخی از مشكلاتی كه می‌‌توان آن‌‌ها را با استفاده از GPU به شكلی مناسب حل كرد، پردازش سیگنال‌‌های دیجیتالی، بازسازی صحنه و پردازش حجمی تصاویر است. اما برخی از الگوریتم‌‌های رایج‌‌تر مانند مرتب‌سازی و جستجوی سریع بانك‌‌های اطلاعات و الگوریتم‌‌های مشابه و تشخیص بافت در دید كامپیوتری را نیز می‌‌توان با GPU به‌‌كار گرفت.
انشعابی از ANSIC به نام Brook كه به طور خاص، برای پردازش موازی طراحی شده، به GPU و BrookGPU وارد شده است. پردازش موازی (كه به صورتی مؤثر به خطوط اجرای لوله‌‌ای چندگانه موجود در GPU كمك می‌‌كند) و بخش ریاضی (كه از انتقال داده‌‌ها به درون یا خارج از سیستم اصلی تا حد امكان جلوگیری می‌‌كند، دقیقا همان عواملی هستند كه برای به دست آوردن بیشترین عملكرد از ساختار GPU مورد نیاز است.
نمونه دیگری از انشعاب زبان‌های برنامه‌نویسی كه به طور خاص برای GPUهای به‌‌كار رفته در محاسبات كلی منظور شده‌است، Sh نام دارد. این زبان در حقیقت یك مجموعه C++ است كه انشعاب‌‌های این زبان را كه می‌‌توانند درCPUها وGPU ها اجرا شوند، در اختیار می‌گذارد. همچنین Cg یكی از مجموعه‌‌های Nvidia و اصول كدنویسی برایGPUها است كه می‌‌تواند برای برخی الگوریتم‌‌های خاص نیز مورد استفاده قرار گیرد.
نتایج برخی از عملكرهای به‌دست آمده با استفاده از GPU در محاسبات عمومی نشان می‌‌دهد كه GPUها می‌‌توانند به‌اندازه CPUها در مصارف عمومی، سریع باشند و حتی عملكردی بهتر و تا پنج برابر یا بیشتر از آن‌‌ها را نیز از خود نشان دهند. یك نمونه از سرعت‌‌های قابل مقایسه، قدرت وضوح سیستم‌‌های خطی فشرده(dense linear systems) است كه یك NVIDIA ۶۸۰۰ می‌‌تواند با سرعتی مشابه نسبت به یك پردازنده مركزی ۴/۳ گیگا هرتزیPentium IV با فوق رشته‌‌ها، تولید كند (درحالی‌كه یك NVIDIA ۷۸۰۰ به سادگی می‌‌تواند این پردازنده را از نظر عملكرد، پشت سر بگذارد).
در صورت تمایل به كسب اطلا‌ع بیشتر، می‌توانید به یكی از مفیدترین منابع اینترنتی در سایت GPGPU (نشانی:www.gpgpu.org) مراجعه كنید. در این سایت، فهرستی از پیوندها به پروژه‌‌های جاری و اخبار مربوط به آن‌‌ها وجود دارد.
به‌‌خاطر دارید كه گفته شد برخی از كارت‌‌های ویدیویی جدید، دارای ۱۲۸، ۲۵۶، ۵۱۲ مگابایت (یا بیشتر) حافظه RAM هستند و اگر در حال اجرای یك بازی ویدیویی با گرافیك بالا یا كار در برنامه CAD نباشید، بخش بزرگی از این حافظه، دست نخورده باقی می‌‌ماند. بنابراین، چرا این RAM ویدیویی را در سیستم در جای دیگری به‌كار نگیریم؟
به دلیل پهنای باند محدود نسبت به CPU، استفاده از حافظه ویدیویی به‌‌ عنوان RAM اصلی ایده خوبی نیست (اگر چه این‌‌كار با انجام برخی تصحیحات درونی امكان‌‌پذیر است).
چرا كه هیچ روش ساده‌‌ای برای ثابت نگه‌داشتن و مدیریت دو منبع حافظه متفاوت، به منظور دستیابی به سرعت بیشتر در سیستم‌عامل وجود ندارد (پهنای باند RAM ویدیویی برای ارتباط با سیستم اصلی محدود است. به همین دلیل، سیستم به نوعی NUMA یا دسترسی نامنظم به حافظه دچار می‌شود). اما یكی از روش‌‌های جالب، تولید ramdisk از RAM ویدیویی و تبدیل آن به فضای قابل تبادل است. با این‌‌كه دسترسی به RAM ویدیویی دارای سرعت مشابهRAM اصلی نیست، این حافظه بارها سریع‌‌تر از یك درایو دیسك سخت است (درایوهای دیسك سخت عادی نمی‌توانند بیش از ۵۰ مگا‌بایت در ثانیه را، به صورت ثابت، منتقل نمایند).
البته ا‌حتمالا تنها به منظور استفاده از حافظه RAM یك كارت ویدیویی، آن ‌‌را خریداری نخواهید كرد (امروزه قیمت حافظه RAM عادی بسیار پایین است). اما اگر دارای یك كارت PCI بی‌‌مصرف هستید، به‌‌كارگیری مجدد آن ایده خوبی خواهد بود. از سوی دیگر و براساس نتایج به دست آمده از عملكرد GPU در محاسبات عمومی، ممكن است تصمیم گرفته باشید یك كارت ویدیویی به‌‌ عنوان یك پردازنده كمكی سریع را بخرید. قیمت پرداخت شده برای خرید چنین كارتی، نسبت به عملكرد به دست ‌آمده از آن، بسیار مناسب خواهد بود و برای مشكل تهیه یك پردازنده كمكی، استفاده از چند كارت ویدیویی PCI به صورت گروهی كه در یك محفظه جاسازی شده‌اند، راه‌حلی با هزینه قابل قبول محسوب می‌شود.
● توضیح چند اصطلا‌ح‌
۱- ۳dfx Interactive، شركتی بود كه از ابتدا در تولید واحدهای پردازش گرافیك‌‌های سه بُعدی و سپس كارت‌‌های گرافیكی تخصص داشته است. پس از سال‌‌ها حكمرانی در این زمینه، در اواخر دهه ۱۹۹۰ تا پایان سال ۲۰۰۰، این شركت پر سر و صداترین پایان را در تاریخ صنعت كامپیوترهای شخصی برای خود رقم زد. دفتر مركزی این شركت تا هنگام ورشكستگی مالی، در شهر سن خوزه، (ایالت كالیفرنیا) قرارداشت. دارایی‌‌های معنوی (و بسیاری از كارمندان آن) توسط شركت NVIDIA، رقیب سرسخت آن، جذب شدند.
۲- شركت NVIDIA یكی از ارائه‌دهندگان اصلی پردازنده‌‌های گرافیكی (graphics processing units) برای كارت‌‌های گرافیكی، تجهیزات چندرسانه‌‌ای‌‌ و ارتباطات برای كامپیوترهای شخصی و كنسول‌‌های بازی مانند، Xbox اولیه و Playstation ۳ است. دفاتر مركزی این شركت در شهر سن كلارا، از ایالت كالیفرنیا قرار دارد. در سال ۲۰۰۱، این شركت درآمدی برابر با ۳۷/۱ میلیارد دلار داشته و درآمد خالص آن معادل ۱/۱۷۷ میلیون دلار بوده است.
۳- محاسبات موازی: اصطلاحی است ناظر اجرای همزمان یك وظیفه بر روی چند پردازنده، به منظور دستیابی به سرعت بیشتر.
۴- Brook برای GPU، یك مفسر و به‌‌كارگیری زمان اجرای برنامه Brook برای سخت‌‌افزارهای گرافیكی مدرن است. اهداف این پروژه عبارتند از:
- برنامه‌نویسی همه منظوره بر روی GPUها
- ارائه یك ابزار مفید به تولیدكنندگانی كه قصد اجرای برنامه‌ها بر روی GPUها را دارند.
- تحقیق درباره مدل برنامه‌نویسی، كاربردهای جاری و به‌‌كارگیری سیستم‌‌ها.
ترجمه: مسعود پاك‌نظر
منبع : ماهنامه شبکه