المعالجة التفرعية parallel processing هي تقنية حاسوبية تُنفذ بها عدة عمليات في وقت واحد ، مما يؤدي إلى إنقاص زمن المعالجة . لذلك السبب تُستخدم في معالجة التطبيقات الكثيفة مثل التنبأ بالمستقبل الاقتصادي ، إنتاج المؤثرات المرئية للأفلام المستقبلية.
هناك طريقتين شائعتين تُنفذ بها العمليات التفرعية :
- فإما أنه يتم تنفذيها من خلال تنفيذ عدة برامج (عمليات ) في وقت واحد multiprocessing ..
- أو من خلال توزيع التعليمات البرمجية إلى مراحل instruction-level ..
تنفيذ عدة برامج في وقت واحد multiprocessing يحتاج إلى ربط عدة معالجات أو عدة كمبيوترات مع بعضها البعض لحل مشكلة معينة . بينما instruction-leve عملية توزيع التعليمات إلى مراحل وتنفيذ كل مرحلة في وقت واحد تتم باستخدام معالج وحيد ..
إن الزمن اللازم لإيجاد حل مشكلة ما في حال تقسيمها إلى عشرة أجزاء ومعالجتها على عشرة حواسب في نفس الوقت ، يساوي إلى عشر الوقت الذي يحتاجه كمبيوتر غير تفرعي لحل كل جزء من أجزاء المشكلة العشرة بشكل تسلسلي..
صحيح أنه هناك العديد من التطبيقات القابلة للتجزيء إلى عمليات تفرعية ، ولكن هناك بعض العمليات من الصعب أن تُجزىء ، لأن أجزاءها مرتيطة مع بعضها البعض ، أي أن هناك أجزاء عليها أن تنتظر حل أجزاء أخرى حتى تستطيع حل الجزء الخاص بها. أجزاء العملية التي لا يمكن أن تحل بطريقة تفرعية تدعى أجزاء تسلسلية . في الحقيقة هذه الأجزاء التسلسلية تحدد الوقت الكلي اللازم من أجل حل مشكلة ما .. على سبيل المثال : أفرض أنه لدينا مشكلة ما نريد حلها ، تتضمن هذه المشكلة 9 مليون عملية يمكن أن تنجزبشكل تفرعي وواحد مليون يجب أن تُنجز بشكل تسلسلي . بشكل نظري يمكننا القول : أن تسع ملايين حاسب تُنجز تسع أعشار المشكلة في وقت واحد ، وتترك عشرا ً لحله بشكل تسلسلي ، وبذلك يكون زمن التنفيذ الكلي هو عشر الزمن في حال لم تكن المعالجة تفرعية ..
في عام 1966 قام مهندس الإلكترون الأمريكي مايكل فلين بالتمييز بين أربع أشكال للمعالِجات ( طريقة تصميم المعالجات لمعالجة المعلومات والتعليمات البرمجية) . فالمعلومات يُمكن أن تُرسل لمعالج دفعة واحدة ، أو على عدة دفعات . وبشكل مشابه فإن التعليمات يُمكن أن تُنجزتعليمة تعليمة ، أو عدة تعليمات في المرة الواحدة .
. في هذه الحالة جزء واحد من أجزاء المعلومة يُرسل إلى معالج وحيد . فإذا كان لدينا 100 عدد يجب أن تُضربها بالعدد 3 ، فإن كل عدد من الأعداد المائة يُرسل إلى المعالج ويُضرب بالعدد 3 وثم يُخزن الناتج ، وهكذا بالنسبة للعدد التاليفي المجموعة يُرسل ويُحسب حتى نحصل على امائة نتيجة مخزنة . من التطبيقات المناسبة للشكل SISD ، القرارات ذات النتائج المترابطة بشكل معقد . مثل المعالجات الكلمية word processing .
في هذ الحالة يقوم معالج بنسخ دفعة معلومات ويرسلها معلومة معلومة إلى معالجات أخرى ، كل معالج بدوره ينفذ على المعلومة نفسها برنامج تختلف عن المعالج الآخر . على سبيل المثال قد نرسل محتويات بنية معطيات في وقت واحد إلى عدة معالجات ، كل معالج سوف يُوجد قيمة في بنية المعطيات ، تختلف عن القيمة التي سيوجدها معالج آخر. . من المشاكل التي يلائمها الحل بالمعالجة التفرعية MISD أنظمة المعالجة المرئية ( وهو أن يأخذ البرنامج الحاسوبي معطياته من صورة رقمية كما في الرجل الآلي ) ..
بمعنى آخر إجراء نفس التعليمة على معطيات مختلفة ( ضرب مائة عدد بالرقم 3 في وقت واحد) . وبذلك فإن معالجات SMID تُبرمج بشكل يشابه كثيرا ً برمجة معالجات SISD ، ولكن العمليات هنا تحدث على مصفوفة من القيم بدلا ُ من قيمة واحدة . ولذلك SIMD تُعرف بما يسمى مصفوفة المعالجات .. هناك العديد من التطبيقات التي تستخدم المعالِجات SIMD ،كعمليات تحسين الصور ، ومعالجات الرادار لضبط الملاحة الجوية .
هذا الشكل أكثر مرونة ، ولكنه في نفس الوقت صعب التحقيق برمجيا ً, لأنه يحتاج إلى تعليمات إضافية لتنسيق عمل المعالِجات . ومن الممكن أن يستخدم كبديل عن كل الأنظمة االسابقة ولكن بشكل أقل كفاءة . يستخدم هذا الشكل في بعض برامج الذكاء الصنعي ، ودراسة ازدحام المدن..
من العوامل المحددة لبنية الربط التفرعي كيفية ربط المعالجات مع بعضها البعض . فمن طرق الربط التفرعي جعل المعالجات تتشارك على ذاكرة واحدة ، وبذلك ستتصل المعالجات مع بعضها عن طريق قراءة معطيات بعضها البعض . يدعى هذا النوع من الربط التفرعي الذاكرة المشتركة . في هذا النمط من الربط التفرعي ، يمكن لأي معالج الولوج إلى معطيات الذاكرة ، لذا يجب منع المعالجات المترابطة من أن تكتب سهوا ً نتائجها فوق بعضها ً .
الطريقة الثانية في ربط المعالجات ، السماح لها بالتواصل عن طريق رسائل, ترسلها المعالجات إلى بعضها. تُعرف هذه التقنية بتقنية تمرير الرسائل أو تقنية الذاكرة المقسمة ، حيث أن المعطيات تُقسم وتُخزن في ذواكر المعالجات المنفصلة . هذه الطريقة في الربط تجعل من الصعب على المعالجات التشارك على المعلومات لأن المعالجات غير موصولة إلى ذاكرة واحدة ، ولكنها تعتبر في نفس الوقت طريقة ربط آمنة لأنها تمنع المعالجات من كتابة نتائجها فوق بعضها .
في نظام الذاكرة المشتركة ، عندما عدد المعالجات يزداد ، يصبح من الصعب الولوج إلى الذاكرة, مما يؤدي إلى حدوث حالة إختناق .
لحل المحدودية في الذاكرة التشاركية ، وحل مشكلة فردية الذواكر في نظام الذواكر المنفصلة ، تُبنى الذواكر المنفصلة مع دارات تسمح للمعالِجات بدخول ذواكر بعضها البعض . هذه الطريقة المبتكرة تسمى بالذواكر المنفصلة المشتركة ، بهذه الطريقة نستطيع التخلص من مشاكل في الطريقتين السابقتين .
حاسب DEEP BLUE:هو حاسب سوبر كمبيوتر من أنتاج شركة IBM يستخدم تقنية المعالجة التفرعية الشاملة لحل المشاكل .
يستخدم هذا الحاسب 256 معالج لحساب 50 إلى 100 بليون حركة شطرنج خلال ثلاث دقائق . هناك حواسب تشبه deep blue تستخدم لحل التطبيقات الحقيقية في عالمنا مثل : التنبأ الجوي ، أبحاث العقارات و الجينات ، تحسين مخدمات شبكة الأنترنت .
وهو عبارة عن مصطلح يشير إلى شرائح الدارات المتكاملة IC التي تحتوي في داخلها على معالجين(نواتين) فيزيائيين كاملين يتوضعان على شريحة سيليكونية واحدة ، أو على عدة شرائح سليكونية داخل ال ICE PACKAGE .. كل نواة فيزيائية تملك مصادرها الخاصة من مسجلات ووحدات تنفيذ ..الخ في المعالج ذو النوى المتعددة ، التي تتوضع على نفس الشريحة السليكونية ، من ممكن لهذه النوى أن تشترك أو أن لا تشترك بالكاش..
المعالجات ثنائية النواة يمكن أن تصنع بأحد الأشكال التالية : - لكل نواة كاشها الخاص بها .. - النواتين تشتركان بكاش الشريحة.. - تقسم الكاش إلى قسم مخصص في حال عمل المعالج كمعالج وحيد و قسم آخر مشترك بين النواتين.. ونلاحظ أن المعالجات ثنائية النواة لا تستخدم الممر الأمامي FSB للتصل مع بعضها البعض ، بل تستخدم الممر الأمامي فقط لتتصل مع النظام الخارجي..
طورت شركة أنتل تقنية HT وزودت معالجاتها بها ، بحيث يصبح بمقدور المعالج وحيد النواة أن ينفذ خيطان ، بشكل تفرعي (في نفس الوقت) بدلا ً من طريقة تبديل السياق بين الخيوط context switching .. فجدولة الخيطان على نفس النواة الفيزيائية يسمح باستخدام أفضل لمصادر المعالج..يمكن أن نجد أن تقنية ال HT في معالجات أنتل XEON وبعض معالجات PENTIUM 4 . أضافت هذه التقنية إلى المعالج الفيزيائي الوحيد ، دارات و برمجيات ، تمكنه ليبدو وكأنه معالجين منفصلين ( كل معالج من هذين المعالجين هو معالج منطقي وليس فيزيائي) . لكل من هذين المعالجين تحكم مقاطعة مبرمج خاص به Advanced Programmble Interrpt Controllers AIPC والذي يسمح بإدارة مقاطعات المعالِجات ، وتقسيم المقاطعات بين المعالِجات ( سواء كانت المقاطعات دينامكية أو ستاتيكية) بشكل منسجم . الموارد المشتركة في هذه الحالة بين المعالِجات تشمل الكاش والمسجلات ووحدات التنفيذ Ececution Unites .. المعالجات المزودة بتقنية HT تحتاج إلى : أنظمة تشغيل تدعم HT وبيوس يدعم تقنية HT.. من الملاحظ أن يمكن أن نجد معالج ثنائي النواة ، كل نواة تحتوي على تقنية ال HT وبذلك المعالج يصبح قادرا ً على تشغيل أربع برامج (أو خيوط ) في نفس الوقت ..
التكلفة والأداء: كما اسلفنا بالذكر فإن المعالجات المزودة بتقنية ال HT تظهر لنظام التشغيل وكأنها معالجين منطقيان . ولكن من غير المتوقع أن تعمل بكفاءة معالجين فيزيائيين حقيقيان . فمعالجات HT تعمل بكفاءة أداء أعلى بحوالي 1.3 -1.5 مرة من المعالجات التقليدية التي لا تحتوي هذه التقنية.. وبذلك نكون قد رفعنا الأداء بحوالي 18 % إلى 30 % في بيئة المعالجات المتعددة المهام Multi- Tasking بمساحة أقل من 5 % من مساحة الشريحة السليكونية تأخذها دارات تقنية HT ...
في المعالجات الثنائية نلاحظ ارتفاع الأدء عن المعالجات وحيدة النواة بحوالي 10 % بالنسبة للتطبيقات وحيدة الخيط ، وبحوالي 40 % - 80 % للتطبيقات المتعددة الخيوط.