برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید



شركت اينتل در نظر دارد گرد و غبار را از پردازنده‌هاي خود بزدايد و آن‌ها را با آرايشي جديد براي كاربردي چالش برانگيز به‌كار بندد. چالش پردازش‌هاي موازي و محاسبات بي‌د‌رنگ. اينتل در اين راه به‌طور مشخص بازار سودآور بازي‌هاي كامپيوتري را نشان كرده و خود را آماده كرده تا با غول‌هايي كه سال‌ها است در اين عرصه يكه تازند سرشاخ شود و اين آغاز نبرد است... . پيش از پرداختن به موضوع اصلي اين مقاله، بهتر است درباره اين‌كه اينتل قصد دارد چه مشكلي را حل كند سخن بگوييم تا ارزش تحقيقات اينتل بيشتر آشكار شود. بر همين اساس، در ابتدا مروري بر بازي‌ها و فيلم‌ها داريم، سپس تكنيك‌هاي به‌كار رفته در اين دو حوزه را مقايسه خواهيم كرد و در نهايت به اينتل و آنچه در چنته دارد، خواهيم رسيد.





تفاوت كيفيت نماها در فيلم ها و بازي‌ها

با يك نگاه كلي به بازي‌هاي كامپيوتري و فيلم‌هايي كه امروزه توسط كامپيوتر ساخته مي‌شوند، مشاهده مي‌شود كه تفاوت قابل ملاحظه‌اي ميان صحنه‌هاي فيلم‌ها و صحنه‌هاي بازي‌ها (و نرم‌افزارهاي تعاملي) وجود دارد؛ به‌طوري‌كه در مقايسه با بازي‌ها، صحنه‌هاي فيلم‌ها بسيار واقعي‌تر به‌نظر مي‌رسند و جلوه‌هاي به‌كار رفته در آن‌ها باور‌پذيرترند و به‌طور كلي تصاوير و نماها در سطح بالاتري از كيفيت قرار دارند. اين تفاوت به‌طور گسترده‌اي به تفاوت در نحوه رندر كردن تصاوير و مدل‌هاي سه‌بعدي در اين دو حوزه مربوط مي‌شود.

رندر تصاوير بازي‌ها

تكنيكي كه براي ساخت و در واقع رندر تصاوير و نماهاي يك بازي به‌كار مي‌رود، با روش به‌كار رفته در فيلم‌ها بسيار متفاوت است. روش مورد استفاده در رندر تصاوير بازي‌ها، روشي است كه تحت عنوان Rasterization شناخته مي‌شود. اين روش، در حال حاضر رايج‌ترين تكنيك مورد استفاده در ساخت گرافيك‌هاي سه‌بعدي بي‌درنگ بوده ونسبت به ساير تكنيك‌هاي رندرينگ بسيار سريع‌تر است.

افزون بر‌‌اين، با توجه به اين‌كه در كاربردهاي رندرينگ، پاسخ سريع به واكنش‌هاي كاربر بسيار حياتي است، اين شيوه به شيوه‌هاي ديگر رندر تصاوير ترجيح داده مي‌شود. البته بايد توجه داشت كه اين تكنيك همچنين نمي‌تواند بسياري از موقعيت‌هاي پيچيده نورپردازي را در صحنه به‌درستي شببيه‌سازي كند. ضمن آن‌‌كه در بازنمايي سه‌بعدي نماها، به محاسبات پيچيده‌اي نياز دارد.

نياز به همين محاسبات پيچيده باعث شده است كه سازندگان سخت‌افزار به منظور بهتر اجرا شدن يك بازي، انجام محاسبات و پردازش‌هاي لازم را به پردازشگرهاي اختصاصي (GPU) بسپارند تا مقدار قابل‌توجهي از بار پردازشي پردازنده‌مركزي (CPU) كاسته شود، اما الگوريتم به‌كار رفته در اين شيوه و نيز نحوه پردازش پردازنده هاي گرافيكي آن‌چنان هم بهينه نيستند.

مشكلات پردازنده هاي گرافيكي‌

به‌طور كلي سه مشكل، پيش روي GPUهايي كه وظيفه پردازش بازي‌ها را برعهده دارند وجود دارد كه هنگام استفاده از rasterizing، آن‌ها را با چالش مواجه مي‌سازد. هر سه مشكل نيز ناشي از نخستين گام در اجراي روش rasterizing است. در rasterization، صحنه در ابتداي پردازش به مجموعه‌اي از چند ضلعي‌ها (polygon)ها نظير (مثلث‌ها) تقسيم مي‌شود.

اين امر در ابتداي كار باعث مي‌شود دقت محيط ساخته‌‌‌شده پايين بيايد؛ زيرا به‌عنوان مثال يك كره به‌صورت يك چند وجهي (ده‌ها، صدها يا هزاران وجه) در نظر گرفته مي‌شود و اين امر باعث غيرطبيعي به‌نظر رسيدن اشياء مي‌شود. به‌منظور حل اين مشكل مي‌توان تعداد اين چند ضلعي‌ها را بيشتر در نظر گرفت، اما اين كار سبب بروز مشكل دوم مي‌شود:‌ از آنجا ‌كه سيستم مبتني بر raster، تمامي چند ضلعي‌هاي موجود در مدل را پردازش مي‌كند، افزايش تعداد آن‌ها، بار محاسباتي زيادي را بر پردازنده گرافيكي تحميل مي‌كند و تا زماني‌كه آخرين چند ضلعي رندر نشود، تصوير درستي از اجزاي صحنه در دست نخواهد بود.

به عنوان مثال، نمي‌توان فهميد كدام شيء، كدام شيء را پوشانده است. دانستن مواردي از اين قيبل براي اهدافي مانند سر و شكل دادن به هوش مصنوعي بازي بسيار مفيد است.

مشكل سوم هم به محاسبه و ايجاد سايه‌ها، انعكاس‌ها و برخورد نورها به اشياء و اثراتي از اين دست مربوط مي‌شود؛ جلوه‌هايي كه در واقعي بودن يك صحنه نقش زيادي دارند، اما ايجاد آن‌ها با استفاده از پردازنده‌هاي گرافيكي امروزي به‌سادگي و به‌درستي امكان‌پذير نيست، زيرا ما از همان ابتداي كار به اشتباه فرض كرده‌ايم كه چند ضلعي‌هاي تشكيل دهنده اجزاي صحنه، مجزا و مستقل از هم هستند، در حالي‌ كه ظاهر هر شيء در يك صحنه وابستگي زيادي به اشياي ديگر صحنه دارد، زيرا نور در يك صحنه نقشي اساسي ايفا مي‌كند.

برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
شکل 1: تفاوت تکنيک‌هاي Ray Tracing و Rasterized
اين موردي است كه در تكنيك raster مورد توجه نيست و متخصصان كامپيوتر اين پديده را تحت عنوان مشكل global illumination مي‌شناسند. تصاويري كه با توجه به نورهاي كلي موجود در صحنه (نه‌فقط نورهايي كه مستقيم از منبع نوري منتشر مي‌شوند) رندر مي‌شوند بسيار واقع‌گرايانه‌تر هستند و جزئيات دقيق‌تر و صحيح‌تري از صحنه را نمايش مي‌دهند، اما استفاده از الگوريتم‌هاي global illumination بسيار پيچيده است و ارائه تصاوير نيز به زمان بيشتري نياز دارد.

پردازنده‌هاي جديدتر، به‌منظور فائق آمدن بر مشكل global illumination و تخمين نورهاي غيرمستقيم موجود در صحنه كه ناشي از برخورد نورها با سطوح و اشياء گوناگون هستند ، يك صحنه را (در حقيقت يك فريم را) چندين بار پردازش مي‌كنند.

ناگفته پيدا است به‌دليل اين‌كه در يك صحنه ممكن است انواع و اقسام سطوح با جنس‌هاي متفاوت وجود داشته باشد كه طبعاً واكنش‌هاي متفاوتي در برابر نور خواهند داشت، توان سخت افزاري بالايي مورد نياز است و نتيجه كار هم عموماً در حد مطلوب نخواهد بود. اين موضوع، ناتواني پردازنده‌هاي امروزي را در‌‌‌برآوردن خواست بازيكنان حرفه‌اي كه خواستار واقعيت در حد اعلاي خود هستند، بيش از پيش نمايان مي‌سازد .

رندر تصاوير فيلم‌ها: ري تريسينگ

براي رندر تصاوير فيلم‌ها معمولاً از تكنيك ري‌تريسينگ (Ray Tracing) استفاده مي‌شود. اين تكنيك معايب روش rasterization را نداشته و راه‌حل مناسبي خصوصاً براي مشكل globalillumination به شمار مي‌آيد، زيرا ري‌تريسينگ بر پايه شبيه‌سازي برخورد شعاع‌هاي نور با اجزاي صحنه استوار است و بر‌خلاف موتورهاي گرافيكي مبتني بر raster كه براي يك صحنه به تخمين زدن، در‌نظر گرفتن انواع و اقسام فرض‌ها و حتي دخالت مستقيم انسان متكي هستند، ري‌تريسينگ با استفاده از قوانين حاكم بر نور عمل مي‌كند.

از آنجا كه شعاع‌هاي نور مستقل هستند، در تصاوير ايجاد شده توسط تكنيك ري‌تريسينگ، بازتاب‌ها، سايه‌ها، دود و مواردي از اين قبيل به درستي نشان داده مي‌شوند.

انيميشن ماشين‌ها، يك مثال از ري‌تريسينگ

كمپاني پيكسار در ساخت انيميشن <ماشين‌ها> (Cars) به استفاده از ري‌تريسينگ روي آورد و يك Rayracer به سيستم Raster Rendering معمول خود اضافه كرد. دليل اين رويكرد پيكسار به ويژگي خاص كاراكترهاي اين انيميشن برمي‌گردد. زيرا جلوه‌هايي نظير درخشش بدنه فلزي شخصيت‌هاي اين انيميشن چيزي نبود كه با استفاده از روش‌هاي رندر معمول حاصل شود.

در اين انيميشن، نور و قوانين نوري حرف اول را مي‌زند و اصولاً به روشي جزء ري‌تريسينگ براي ساخت جلوه‌هاي موردنظر آن نمي‌توان فكر كرد. البته اين شركت پيش از اين در مقابل استفاده‌‌از‌‌‌‌‌ري‌تر يسينگ مقاومت مي‌كرد؛‌‌ ‌به همان دليلي كه سازندگان بازي و ساير نرم‌افزارهاي تعاملي در اين مورد مقاومت مي‌كنند. اين دليل هم طبق معمول وجود محدوديت سخت‌افزاري بود.

ري‌تريسينگ به‌رغم نتايج بسيار عالي، به‌منظور ‌انجام حجم بالاي محاسبات، نياز به يك سخت‌افزار قدرتمند دارد. به‌عنوان مثال، شبكه سه هزار كامپيوتري پيكساربراي رندر هر ثانيه از فيلم به روزها زمان نياز داشت.

ممكن است فيلم‌سازان چنين تأخيري را تحمل كنند، اما در بازي‌ها و نرم افزارهاي تعاملي و به‌طور كلي در پردازش تصاوير به‌صورت بي‌درنگ real time (يا بهتر بگوييم آنلا‌ين)، چنين وقفه‌اي قابل تحمل نيست، جايي كه حتي ثانيه‌ها هم ارزشمند هستند.

آرزوي ديرينه سازندگان بازي‌ها و نرم افزارهاي تعاملي كه به رندركردن بي‌درنگ نياز دارند، همواره اين بوده است كه به نوعي بتوانند ري‌تريسينگ را به‌صورت آنلا‌ين در اختيار بگيرند. اما به رغم قابليت‌هاي فراوان اين تكنيك، حجم بالاي محاسبات مورد نياز در اين تكنيك به خصوص زماني‌كه قرار است اين‌كار به‌صورت آني انجام شود، باعث شده كه سازندگان بازي‌ها به سيستم‌هاي مبتني بر raster rendering قناعت كنند.

ري‌تريسينگ بي‌‌درنگ‌

برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
شکل 2: مقايسه قابليت برنامه‌نويسي و پردازش موازي ميان CPU و GPU
مدتي است كه با توجه به قابليت‌ها و نتايج خوب ري‌تريسينگ، نوع بي‌درنگ آن مورد توجه قرار گرفته است تا ري‌تريسينگ را ازحوزه‌هايي چون سينما به قلمرو بازي سوق دهد. يك دهه قبل، ري‌تريسينگ بي‌درنگ حتي با استفاده از صدها پردازنده باز هم يك مورد دست نيافتني به‌شمار مي‌آمد.

اصولاً امروزه استفاده از ري‌تريسينگ به‌دليل نيازهاي محاسباتي وسيعي كه دارد، محدود به ساخت فيلم‌ها مي‌شود و فكر كردن به انجام اين تكنيك به‌صورت بي‌درنگ هنوز هم لرزه بر اندام بسياري از متخصصان مي‌اندازد.

استفاده از تكنيك ري‌تريسينگ ‌‌‌‌به‌صورت بي‌درنگ در بازي‌ها باعث مي‌شود كه ما با بازي‌هايي بسيار واقعي‌تر مواجه شويم. اما براي رسيدن به اين هدف در ابتدا لازم است مشكل پيش روي ري‌تريسينگ بي‌درنگ، ‌‌يعني محدوديت سخت‌افزاري را حل كنيم .

ري‌تريسينگ و پردازش موازي

در حقيقت از آنجا‌كه در ري‌تريسينگ، هر شعاع (ray) ‌مي‌تواند به‌طور مستقل محاسبه شود، مي‌توان پيكسل‌ها را به طور مستقل محاسبه كرد و اين براي پردازش موازي بسيار مناسب است. ‌در اين‌حالت مي‌توان مجموعه‌ا‌ي از rayها را كه مشابه هستند، در قالب يك بسته (packet) تبديل كرده و اين بسته ها را به‌طور موازي مورد پردازش قرارداد. هر بسته توسط يك ProgramThread مجزا مورد پردازش قرارمي‌گيرد. پردازنده‌هاي چند هسته‌اي جديد مي‌توانند بيش از يك دوجين از چنين threadهايي را به طور همزمان اجرا كنند.

در ري‌تريسينگ بي‌درنگ يك صحنه به بخش‌هايي تقسيم شده و در يك ساختار درختي (KD-Tree) و سلسله مراتبي طوري مرتب مي‌شود كه هر قطعه‌اي از صحنه كه محاسبات مشابهي دارد در يك بخش از اين ساختار قرار مي‌گيرد.‌‌ به جاي آزمودن هر شعاع براي هر شيء renderer براي يافتن كمترين اشيايي كه يك شعاع مي‌تواند به آن برخورد كند، اين ساختار سلسله مراتبي را از پايين تا سرشاخه‌ها دنبال مي‌كند تا به اصطلاح را بيابد. Page مناسب بخشي از تصوير شامل (عموماً) يك شيء است. با استفاده از اين ساختار درختي، ميزان محاسبات موردنياز براي تعيين كليت يك صحنه به حداقل ممكن مي‌رسد.

تلفيق قابليت‌هاي پردازنده مركزي و گرافيكي

در حالي‌كه ‌CUDA (سرنام Compute Unified Device Architecture) متعلق به Nvidia در عرصه پردازنده‌هاي گرافيكي همه منظوره (GPGPU) پيشرو هستند و تلاش براي ارتقاي كيفيت پردازنده‌هاي‌گرافيكي همچنان توسط سازندگان دنبال مي‌شود، اما توسعه پردازنده‌هاي مركزي و پردازنده‌هاي گرافيكي و تلفيق اين دو با هم نيز به‌عنوان يك حوزه مهم تحقيقاتي مورد توجه قرار دارد.

در حال حاضر حركتي به سمت تلفيق قابليت‌ها و مزاياي پردازنده‌هاي مركزي و گرافيكي آغاز شده است كه سبب خواهد شد در آينده، شاهد يكپارچه شدن دستورات پردازنده‌هاي مركزي و گرافيكي باشيم؛ به‌طوري‌كه كدهايي داشته باشيم كه روي تراشه‌هاي گرافيكي و روي واحدهاي پردازش مركزي قابل اجرا باشند.

در اين ميان مي‌توان به تلاش‌هاي AMD اشاره كرد كه در پي تلفيق پردازنده‌هاي مركزي و گرافيكي روي يك تراشه است. اما در مقابل، اينتل در تلاش است تا فقط با استفاده از پردازنده‌هاي چندهسته‌اي به خصوصيات پردازنده‌هاي گرافيكي دست يابد. اين شركت به‌طور مشخص روي پردازنده هاي مبتني بر معماري x86 متمركز شده است.

اينتل و ري‌تريسينگ

اينتل به بازار محصولات مرتبط با Visual computing چشم دوخته است و قصد دارد در برابر شركت‌هايي كه اين عرصه را در دست دارند، خودي نشان دهد. اين شركت روي ارائه معماري ويژه‌اي متمركز شده است كه بتواند از پس محاسبات و مشكلاتي نظير ري‌تريسينگ برآيد.

در اين زمينه مي‌توان به تلاش‌هاي يكي از متخصصان اينتل به نام دنيل پل اشاره كرد. وي بازي QuakeIV (و نيز QuakeIII) را كه براساس روش سنتي ساخت بازي رندر شده بود دوباره براساس ري‌تريسينگ رندر كرد. او اين كار را بدون نياز به پردازنده‌هاي گرافيكي موجود در كارت‌هاي گرافيك و فقط با استفاده از سيستمي شامل هشت هسته مبتني بر پردازنده x86 انجام داد و از كارت ويديو فقط براي ارسال تصاوير به نمايشگر استفاده كرد.

‌از آنجا كه ماهيت روش ري‌تريسينگ به گونه‌اي است كه براي پردازش با هسته‌هاي پردازنده مركزي مناسب است، پل نيازي به استفاده از پردازنده‌گرافيكي نداشت. اين مورد به خوبي قابليت‌هاي ري‌تريسينگ را نشان مي‌دهد.

راهكار اينتل Larrabee

برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
شکل 3: معماري Larrabee
علاوه بر اين، اينتل در حال حاضر جزئياتي را درباره پردازنده‌اي با اسم رمز Larrabee منتشر كرده است كه اميد اصلي اين شركت در تحقق بخشيدن به روِياي ري‌تريسينگ بي‌درنگ به‌حساب مي‌آيد.

در واقع اينتل در تلاش است توانايي‌هاي يك پردازنده مركزي را با توانايي‌هاي برنامه‌نويسي موازي موجود در پردازنده‌هاي گرافيكي تركيب كند كه در كاربردهاي گرافيكي و پردازش‌هاي موازي همه‌منظوره موردنياز است، ارائه يك معماري است كه توانايي full programming يك پردازنده مركزي (و نيز ساير خصوصيات خوب آن) را با موازي سازي كه در پردازنده‌هاي گرافيكي موجود است، يك‌جا عرضه كند.

Larrabee اين قابليت را فراهم مي‌كند و راه‌حلي عملي براي رفع محدوديت‌هاي پردازنده‌هاي گرافيكي موجود به‌شمار مي‌آيد. با اين‌كه رقباي سرسخت اينتل نظير Nvidia، هنوز Larrabee را به‌عنوان يك تهديد جدي در برابر پردازنده‌هاي خود قلمداد نمي‌كنند، ولي اينتل به اين محصول اميد زيادي دارد و با جديت فراوان از آن دفاع مي‌كند.

جزئيات Larrabee

مي‌توان گفت كه اينتل به نوعي خصوصيات خوب پردازنده‌هاي گرافيكي و مركزي را به هم گره زده و Larrabee را ساخته است. Larrabee با اين‌كه از خصوصيت پردازش موازي پردازنده‌هاي گرافيكي بهره‌مند است و نيز قادر است نظير پردازنده‌هاي گرافيكي عمليات rasterizing را انجام دهد (در نتيجه با DirectX و OpenGL سازگار است) در عين حال يك تفاوت اساسي با پردازنده‌هاي گرافيكي دارد و آن قابليت برنامه‌ريزي بالاي آن است.

به‌طور كلي هر چند يك پردازشگر گرافيك (به‌طور صحيح‌تر GPGPU) قابل برنامه‌ريزي مي‌باشد، ولي كاربر بايد زبان ويژه آن پردازشگر گرافيك را بداند. از اين‌رو كار با يك پردازشگر گرافيك آن‌چنان هم ساده نيست. به عنوان مثال Nvidia براي اين‌كه به توسعه‌دهندگان اجازه دهد راحت‌تر با پردازنده‌هاي گرافيكي كار كنند آن‌ها را تشويق به يادگيري زبان برنامه‌نويسي خاصي مي‌كند كه CUDA ناميده مي‌شود.

اين زبان اجازه مي‌دهد كه پردازنده‌هاي‌گرافيكي مانند يك پردازنده‌مركزي قابل برنامه‌نويسي شود. AMD نيز براي اين منظور از يك زبان برنامه‌نويسي اپن‌سورس به نام CL بهره مي‌برد، اما طبيعت چندهسته‌اي Larrabee به استفاده‌كننده اين امكان را مي‌دهد تا با APIهاي شخصي، به ايجاد rasrizer ،ray tracer ،voxelenerer يا تركيبي از اين موارد بپردازد؛ اين يعني بيشترين انعطاف‌پذيري در يك پردازنده.

كاربر Larrabee حتي مي‌تواند پا را فراتر نهاده و علاوه بر مصارف گرافيكي، از آن براي تمام مواردي كه هدف استفاده از قابليت‌هاي پردازش موازي است، استفاده كند.

قلب Larrabee مجموعه‌اي از هسته‌هاي x86 مي‌باشد كه روند كاري مورد استفاده در آن از تراشه‌هاي پنتيوم مشتق شده‌است. Larrabee همين‌طور شامل بخشي است كه اينتل از آن به‌عنوان يك واحد پردازش برداري (vector processing unit) ياد مي‌كند كه باعث افزايش كارايي گرافيكي و ويديويي مي‌شود. كليت اين تراشه يك كانال ارتباطي حلقه‌اي دو طرفه دارد كه اجازه مي‌دهد ميان هر يك از هسته‌هاي x86 مجزا ارتباط سريع برقرار شود.

Larrabee يك پردازنده پرهسته (many core) است و تعداد هسته‌هاي آن بيش از ده عدد خواهد بود. اينتل هنوز به‌طور روشن بيان نكرده است كه Larrabee چند‌هسته‌اي است. نخستين نمونه‌هاي اين پردازنده صرفاً براي بازي‌هاي كامپيوتري طراحي شده و بايد با پردازنده‌هاي پيشرفته ارائه شده توسط ATI (‌كه در حال حاضر در مالكيت AMD است) و نيز Nvidia رقابت كند.

پشتيباني اين پردازنده از APIهاي DirectX و OpenGL (كه به‌صورت استاندارد درآمده‌اند) نشان مي‌دهد كه اينتل قصد دارد توسعه‌دهندگان و سازندگان بازي‌ها را به ساخت ابزارهاي بازي‌سازي براساس معماري جديد تشويق كند.

اينتل مدعي است كه با اين نوآوري باب جديدي در زمينه محاسبات موازي باز شده است. اين شيوه به توسعه‌دهندگان راهي ارائه مي‌كند تا با استفاده از مجموعه دستورات آشناي x86 (با استفاده از زبان‌هاي برنامه‌نويسي C و ++C) ابزارهاي بسيار اختصاصي بسازند؛ كاربردهايي نظير بازي‌ها كه به Visual Computing نيازدارند يا نرم‌افزارهاي علمي كه به توانايي‌هاي گرافيكي بالايي نياز دارند.

نبردي كه آغاز شده است!

اين نبردي كه آغاز شده، براي آناني كه محاسبات بي‌درنگ برايشان حياتي است، از عاشقان بازي‌هاي كامپيوتري گرفته تا آن‌هايي كه قصد دارند يك طوفان عظيم را روي PC خود شبيه‌سازي كنند، بسيار مفيد است. اينتل، AMD و Nvidia تلاش مي‌كنند تا برتري‌هاي خود را به رخ رقبا بكشند. اين رقابت چيزي نيست جز هل دادن فناوري كامپيوتر به سمت افق‌هاي جديد‌تر و شكوفاتر.



shabakeh-mag



منابع:
- ساينتيفيك امريكن‌
-
www.tgdaily.com
- وب سايت شركت Intel
-
www.news.cnet.com
- www.eweek.com