يحمل مستقبل المعالجات متعددة النوى عقبات كبيرة في وجه المبرمجين وتتمثل في تحديات كثيرة في عالم المعالجات متعددة النوى.

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

فهناك مبرمجون يعملون تدريجيا في تطوير مهاراتهم وذلك بكتابة كود البرامج تعمل مع معالجين أو أربعة ليتم لاحقا توسيعها لثمانية نوى أو حتى ضعفها أو أكثر. بينما يقفز آخرون مباشرة نحو كتابة برامج تعمل بعدد غير محدد من النوى.

وهذه الطريقة الأخيرة هي التي تشجع إنتل كل المطورين لتبنيها رغم كلفتها العالية في المرحلة الأولية. ولكن بعد ذلك ستثمر على المدى الطويل لأن المعالجات متعددة النوى ستصبح أكثر من مجرد ثنائية ورباعية ومحاولة التعامل مع الأداء الموازي للبرنامج بالاعتماد على معالج واحد في كل مرحلة لن تنفع رغم أنها مقبولة حاليا.

يأتي هذا التحول المكلف في البرمجة بتعقيدات كثيرة، ومثلا، تختلف كتابة وتصميم كود البرامج لمعالجات عديدة النوى عن البرامج المصممة لمعالج وحيد أو ثنائية النوى حيث يمكن في الأخير إجراء تعديلات بسيطة على المهام، ومثلا، عند تصميم محرك لعبة كمبيوتر يمكن تعديل الكود لعمل مسار مخصص لتشغيل الصوت ومسار لحوسبة الرسوميات ومسار ثالث لحوسبة الذكاء الاصطناعي للخصم.

ويمكن لكل هذه المسارات الاعتماد على نفس الكود التي استخدمت في لعبة ذات مسار واحد مما يقلص كلفة إجراء التعديلات البرمجية ولن تحتاج اللعبة لأكثر من معالج ثلاثي النوى. يمكن هنا الاعتماد على أسلوب البرمجة المعروفة باصطلاح software pipelining وهو تقسيم مهام الحوسبة إلى عدة خطوات يتم إنجازها على الترتيب وتنفذ كل نواة خطوة منها، وإذا جرى تقسيم كل مهمة إلى أربعة خطوات مستقلة فستعتمد على أربع نوى دون إمكانية الاستفادة من النوى الباقية إن وجدت.

تنصح إنتل مطوري البرامج بتقسيم تلك الخطوات عند تصميم برامج الألعاب مثلا، إلى أجزاء صغيرة بحيث يمكن تنفيذها في عدد غير محدد من النوى. وبدلا من التعامل مع أجزاء رئيسية لكل نواة مثل محرك الرسوميات في نواة وأداة الذكاء الاصطناعية في أخرى ومحرك الصوت في نواة ثالثة، يجب إعادة كتابة كود هذه ليتم توزيع مهامها بالتساوي على النوى المتوفرة مهما كان عددها.

وبالطبع يستدعي ذلك عملية إعادة تطوير كاملة لمحرك اللعبة رغم أنه هناك برامج لا تحتاج للكثير من إعادة البرمجة وكتابة الكود مثل برامج تتبع الأشعة Ray tracing في تصميم الرسوميات المجسمة أوثلاثية الأبعاد والألعاب، فالخوارزميات في هذه التطبيقات مألوفة ويمكنها تقسيم المهام في أي عدد من نوى المعالج.

لكن هناك أيضا برامج ستستدعي إعادة برمجة لتستفيد من عصر معالجات النوى المتعددة. فهناك حاجة لتوفير خوارزميات تجري حوسبتها على التوازي، ويستدعي ذلك أيضا أدوات اختبار لهذه الخوارزميات وهي أقل كفاءة من تلك المتوفرة للبرامج ذات المسار الوحيد.

ومهما يكن من أمر الجدل الذي سيحدثه ذلك في عالم البرمجيات إلا أن إي إم دي وإنتل متفقتان على أن أيام البرامج التي تتوائم مع المعالجات الأسرع قد انتهت، وسيكون أي تحسن مستقبلي في أداة الحوسبة متوقفا على تعديلات في البرامج للاستفادة من النوى المتعددة.



المصدر Arabian Business