فاجأت Nvidia العالم قبل سنوات قليلة عندما أعلنت و لأول مرة عن الجيل الثامن من بطاقاتها الرسومية ، و ذلك نظرا لأن البنية الإنشائية للبطاقة المعلن عنها حديثا في ذلك الوقت ( 8800GTX ) تختلف تماما عما عهدناه في الأجيال السابقة ، حيث كانت البطاقات الرسومية تعتمد بشكل رئيسي على ما يدعى بالـPipelines ، حيث اعتمدت التقنية الجديدة ( و التي أصبحت المعيار الأساسي لجميع البطاقات الرسومية المعاصرة ) على معالجات كثيرة موزعة على البطاقة الرسومية ، و تدعى هذه المعالجات Stream Processors ، فما هو الفرق بين الـStream Processors و الـPipelines ؟ و ما هي العمليات التي تدار في كل منهما ؟ و لماذا احتلت الأولى مكان الثانية تماما و قضت عليها ؟ سنهدف في هذه المقالة إلى توضيح الفرق بين البنيتين بشكل سهل و مبسط بقدر الإمكان .

و حتى نقوم بالمقارنة ، يتوجب علينا أولا أن نشرح عمل كل من التقنيتين ، و سنبدأ بالتقنية الأقدم و هي الـPipelines ، و لنشرح عمل الـPipelines ، يتوجب علينا أولا أن نوضح معاني 3 مصطلحات رئيسية سنستعملها كثيرا ها هنا ، و ستكون هي الجوهر في المقارنة أيضا .
Vertex Shader : و هي عملية من عمليات المعالجة الرسومية ، حيث تتم إضافة مؤثرات خاصة للبيئة ثلاثية الأبعاد باستخدام عمليات رياضية معقدة ، حيث من الممكن إضافة الألوان ، التكستشرز و المؤثرات الضوئية على الأجسام و ذلك بتغيير قيم معينة في البيانات .

Pixel Shader : و هي تقنية تعمل على معالجة اللون الخاص بكل بيكسل ، لإضافة تأثيرات معينة ، مثل الـBump Mapping ، أو الظلال ، أو مؤثرات الانفجارات ، حيث تقوم هذه التقنية بحساب التأثير على كل بيكسل تراه في الشاشة و من ثم معالجة اللون و درجة الضوء و الظل الخاصة به لتعطي التأثير الرسومي المطلوب .

Geometry Shader : و هي تقنية حديثة للغاية ، تقوم بإنتاج نقاط و خطوط و مثلثات جديدة من المرسلة بالأصل الى الـPipeline ، و تتم هذه العملية بعد عملية الـVertex Shading ، و كمثال لتبسيط مفهوم الجيومتري شادر ، تخيلوا لو كان لدينا مثلث يتكون من ثلاثة خطوط ، هذه الخطوط الثلاثة ستشكل مدخلات ( Input ) عملية الجيومتري ، و من ثم ستحصل كل منها على قيمة صفر أو أكثر ، و ترسل بعد ذلك إلى الـPixel Shader على شكل أجزاء لإضافة التأثيرات المطلوبة ! و هذه العملية إحدى الميزات الجديدة للـDirect3d 10 من مايكروسوفت ، و بالغالب فهي تعطي نتائج أسرع في عملية الـRendering ، انت تستطيع من الفيرتكس الأصلية الان ، و عن طريق الجيومتري شادر ، أن تنتج المزيد من المثلثات ، الخطوط ، النقاط في نفس الوقت و ترسلها إلى الـPixel Shader .
و الان لنعطي مثال على فائدة الجيومتري شادر ، بالتأكيد انت تعرف تأثيرات الـmotion blur ، و التي تجعل الجسم يبدو ضبابيا و كأنه يتحرك بسرعة ، الان هذه العملية ستصبح أفضل بكثير باستخدام الجيومتري شادر ، لأنها تنتج المزيد من الخطوط و النقاط من نفس الجسم الأصلي قبل أن ترسل إلى الـPixel Shader لإجراء التأثيرات المطلوبة ، و بذلك فإن الجيومتري شادر تقلل كثيرا من الاعتماد على الـCPU المسكين في أداء العديد من العمليات بشكل لم يكن ممكنا من قبل .
و هذا يقودنا قليلا إلى البعض الحديث عن إمكانيات الـDirect X10 و ميزاته عن الدايركت إكس9 ، المبرمجين باستخدام الدايركت إكس 10 الان يستطيعون إنتاج المزيد و المزيد من العناصر على الشاشة ، المزيد من الأشجار ، المزيد من الصخور و الأعشاب ، وجعلها تبدو مختلفة عن بعضها البعض ، موديلات الأشخاص ستبدو أكثر واقعية ، باستخدام الجيومتري شادر الان يمكننا الحصول على Soft Shadows أكثر واقعية ، بالإضافة إلى استخدام أفضل لتقنية الـHDR أيضا ( تقنية متخصصة بمعالجة الضوء و محاكاة تأثيراته على بيكسلات الشاشة بشكل واقعي )

و بعد أن شرحنا هذه المصطلحات الثلاثة ، لنرى الان كيف يعمل الـPipeline ؟

يقوم الـCPU أولا بإرسال قيم Vertex إلى البطاقة الرسومية GPU من اجل المعالجة ، وفي السابق كانت العمليات الفيزيائية و حركة الشعر و هذه الأمور تقوم بالتنفيذ عن طريق الـمعالج فقط ! أما الان و مع الدايركت إكس 10 فإنه من الممكن أيضا ان تقوم البطاقة الرسومية بهذه العمليات لتخفف العبء عن المعالج .
و بعد هذه المرحلة تبدأ مرحلة الـSetup ، حيث تحوّل قيم الفيرتكس إلى مثلثات ، خطوط و نقاط ، و في مرحلة الـRasterization تتحول إلى الأجزاء المكونة للبيكسل ، و بعد ذلك تتحرك الأجزاء إلى الـPixel Shader ، و ذلك لتطبيق تأثيرات شادر متنوعة على هذه الأجزاء و استخدام أنسجة متعددة ( Textures ) معقدة التركيب بنفس الوقت ، و من ثم تتحرك النواتج إلى الـROP ، وهو ( Pixel Output Engine ) في الـPipeline حيث يتم التأكد من أن اجزاء البيكسلات المرئية فقط هي التي ستظهر على الشاشة ، و أخيرا فإن البيكسلات الجاهزة ترسل إلى الـframe buffer جاهزة للقراءة و العرض على شاشتك الخاصة .

و على الرغم من كون هذه الطريقة ممتازة و تعطي نتائج رائعة ، إلا أنها تعاني الكثير من العيوب ، على سبيل المثال ، إذا كان أحد أجزاء الـPipeline ( على سبيل المثال : Pixel Shader ) محدود القدرات ، فأداء البطاقة الرسومية ككل سيكون محدودا أيضا ، و في المشاهد التي تحتوي على الكثير من الـPixel Shaders في بعض الألعاب ، فإن مرحلة الفيرتكس ستضطر للتأجيل ، و العكس صحيح .
حسنا ، الان جميع هذه المشاكل تلاشت مع التقنية الجديدة ، تقنية الـStream Processor ! حيث أن كل معالج موجود في البطاقة الرسومية سيكون قادرا على القيام بأي من العمليات الأربع ، و هي الـVertex Shader ، أو الـGeometry Shader ، أو الـPixel Shader ، أو حتى العمليات الفيزيائية Physics و التي لم تعد مرهونة بالمعالج فقط ، و الان لنفرض أن عددا من معالجات الستريم ( البالغ عددها 128 وحدة في الجي فورس 8800GTX ) مشغولة بشكل كبير بعملية بيكسل شادر مكثفة ، فماذا سيحصل لعملية الفيرتكس أو الجيومتري مثلا ؟ سترسل إلى معالجات أخرى على نفس البطاقة لمعالجتها مما سيختصر الوقت بشكل كبير و يفتح مجالات كبيرة جدا أمام البطاقة الرسومية ، و بفضل هذه المعالجات الجديدة Stream Processor نستطيع ان نرى التأثيرات الفيزيائية المذهلة بلعبة كـCrysis مثلا .
من الجدير بالذكر أن المعالجات المستقبلية ( الستريم بروسيسورز ) من الممكن أن تتطور بكل بساطة للقيام بأي عمليات جديدة ، أما العمليات الأربعة المذكورة مسبقا فهي ما يمكن القيام به في بطاقة كالـ جيفورس 8800GTX في الوقت الحالي ، و بالطبع فإن الجيومتري شادر كما ذكرنا سابقا عملية جديدة تماما و هي من أهم مزايا و خواص الدايركت إكس10 .
لنعد الان إلى البنية الإنشائية للبطاقات الرسومية الحديثة التي تستعمل الـStream Processors ، و سنرمز لها من الان و صاعدا بـSP
تحتوي الجيفورس 8800GTX على 128 SP ، مقسمة على 16 شادر بروسيسور ، كل معالج للشادر يحتوي على 8 من معالجات الستريم بروسيسور ، هناك 4 وحدات مخصصة لعمليات التكستشرز و 8 مخصصة للـfiltering مشتركة بين جميع معالجات الشادر ، و هذا يعني أننا نملك 32 بيكسل ينتج لدينا لكل Clock ، و بمعنى آخر ، فإن الـ2X Anisotropic ستكون عملية طبيعية للبطاقة في جميع الألعاب بدون التأثير على أداء البطاقة ، و هذا ما كانت تريد نفيديا تقديمه للاعبين الذين يطمحون بالحصول على أعلى الإعدادات في ألعابهم بدون التعرض دائما للتباطؤ و انخفاض الأداء ، و كذلك فإنه يمكن للبطاقة أن تقوم بفلترة التكستشرز في ذات الوقت الذي تقوم فيه بإجراء عمليات الشادر ، وهو أمر كان مستحيلا مع بطاقات الجيل السابع فما دون .

و من الجدير بالذكر أيضا أن البنيئة الإنشائية الجديدة في الفئة الثامنة و التاسعة حاليا من بطاقات نفيديا ، مكنتها من دعم الألعاب القديمة أيضا التي بنيت على الدايركت إكس9 بلا أي مشاكل ، بل مع تحسن واضح و كبير في الأداء .
في النهاية نرجو أن نكون قد وفقنا في تقديم الفروقات الحقيقية و الشرح بشكل وافي لكل من الـPipelines و الـStream Processors التي شكلت طفرة في عالم الرسوميات و قفزت بألعابنا إلى مستويات و أبعاد جديدة على المستوى الرسومي .