معالجة تفرعية
المعالجة المتوازية أو المعالجة التفرعيّة هي تقنية حاسوبية تُنفذ بها عدة عمليات في وقت واحد، مما يؤدي إلى إنقاص زمن المعالجة. لذلك السبب تُستخدم في معالجة التطبيقات الكثيفة مثل التنبؤ بالمستقبل الاقتصادي، إنتاج المؤثرات المرئية للأفلام المستقبلية.
هناك طريقتان شائعتان تُنفذ بها العمليات المتوازية:
يحتاج تنفيذ عدة برامج في وقت واحد إلى ربط عدة معالجات أو عدة حواسيب مع بعضها بعضا لحل مشكلة معينة. بينما عملية توزيع التعليمات إلى مراحل وتنفيذ كل مرحلة في وقت واحد تتم باستخدام معالج وحيد.
إن الزمن اللازم لإيجاد حل مشكلة ما في حال تقسيمها إلى عشرة أجزاء ومعالجتها على عشرة حواسيب في نفس الوقت، يساوي إلى عشر الوقت الذي يحتاجه حاسوب غير موازي لحل كل جزء من أجزاء المشكلة العشرة بشكل تسلسلي.
صحيح أنه هناك العديد من التطبيقات القابلة للتجزيء إلى عمليات متوازية، ولكن هناك بعض العمليات من الصعب أن تُجزئ، لأن أجزاءها مرتبطة مع بعضها البعض، أي أن هناك أجزاء عليها أن تنتظر حل أجزاء أخرى حتى تستطيع حل الجزء الخاص بها.
أجزاء العملية التي لا يمكن أن تحل بطريقة متوازية تدعى أجزاء تسلسلية. في الحقيقة تحدد هذه الأجزاء التسلسلية الوقت الكلي اللازم من أجل حل مشكلة ما. على سبيل المثال: افرض أنه لدينا مشكلة ما نريد حلها، تتضمن هذه المشكلة 9 مليون عملية يمكن أن تنجز بشكل متوازي وواحد مليون يجب أن تُنجز بشكل تسلسلي. بشكل نظري يمكننا القول : أن تسع ملايين حاسب تُنجز تسع أعشار المشكلة في وقت واحد، وتترك عشرًا لحله بشكل تسلسلي، وبذلك يكون زمن التنفيذ الكلي هو عشر الزمن في حال لم تكن المعالجة تفرعية.
في عام 1966 م قام مهندس الإلكترون الأمريكي مايكل ج. فلين بالتمييز بين أربع أشكال للمعالِجات (طريقة تصميم المعالجات لمعالجة المعلومات والتعليمات البرمجية). فالمعلومات يُمكن أن تُرسل لمعالج دفعة واحدة، أو على عدة دفعات. وبشكل مشابه فإن التعليمات يُمكن أن تنجز تعليمة تعليمة، أو عدة تعليمات في المرة الواحدة.
في هذه الحالة جزء واحد من أجزاء المعلومة يُرسل إلى معالج وحيد. فإذا كان لدينا 100 عدد يجب أن تُضربها بالعدد 3، فإن كل عدد من الأعداد المائة يُرسل إلى المعالج ويُضرب بالعدد 3 وثم يُخزن الناتج، وهكذا بالنسبة للعدد التالي في المجموعة، يُرسل ويُحسب حتى نحصل على المائة نتيجة مخزنة.
من التطبيقات المناسبة للشكل SISD، القرارات ذات النتائج المترابطة بشكل معقد. مثل:المعالجات الكلمية .
في هذ الحالة يقوم معالج بنسخ دفعة معلومات ويرسلها معلومة معلومة إلى معالجات أخرى، وكل معالج بدوره ينفذ على المعلومة نفسها برنامج تختلف عن المعالج الآخر. على سبيل المثال قد نرسل محتويات بنية معطيات في وقت واحد إلى عدة معالجات، كل معالج سوف يُوجد قيمة في بنية المعطيات، تختلف عن القيمة التي سيوجدها معالج آخر. من المشاكل التي يلائمها الحل بالمعالجة التفرعية MISD أنظمة المعالجة المرئية (وهو أن يأخذ البرنامج الحاسوبي معطياته من صورة رقمية كما في الرجل الآلي).
بمعنى آخر إجراء نفس التعليمة على معطيات مختلفة (ضرب مائة عدد بالرقم 3 في وقت واحد). وبذلك فإن معالجات SMID تُبرمج بشكل يشابه كثيرًا برمجة معالجات SISD، ولكن العمليات هنا تحدث على مصفوفة من القيم بدلًاُ من قيمة واحدة. ولذلك SIMD تُعرف بما يسمى مصفوفة المعالجات.
هناك العديد من التطبيقات التي تستخدم المعالِجات SIMD، كعمليات تحسين الصور، ومعالجات الرادار لضبط الملاحة الجوية.
هذا الشكل أكثر مرونة، ولكنه في نفس الوقت صعب التحقيق برمجيًا، لأنه يحتاج إلى تعليمات إضافية لتنسيق عمل المعالِجات. ومن الممكن أن يستخدم كبديل عن كل الأنظمة السابقة ولكن بشكل أقل كفاءة.
يستخدم هذا الشكل في بعض برامج الذكاء الصناعي، ودراسة ازدحام المدن.
من العوامل المحددة لبنية الربط التفرعي كيفية ربط المعالجات مع بعضها البعض. فمن طرق الربط التفرعي جعل المعالجات تتشارك على ذاكرة واحدة، وبذلك ستتصل المعالجات مع بعضها عن طريق قراءة معطيات بعضها البعض. يدعى هذا النوع من الربط التفرعي الذاكرة المشتركة. في هذا النمط من الربط التفرعي، يمكن لأي معالج الولوج إلى معطيات الذاكرة، لذا يجب منع المعالجات المترابطة من أن تكتب سهوًا نتائجها فوق بعضها.
الطريقة الثانية في ربط المعالجات، السماح لها بالتواصل عن طريق رسائل، ترسلها المعالجات إلى بعضها. تُعرف هذه التقنية بتقنية تمرير الرسائل أو تقنية الذاكرة المقسمة، حيث أن المعطيات تُقسم وتُخزن في ذواكر المعالجات المنفصلة. هذه الطريقة في الربط تجعل من الصعب على المعالجات التشارك على المعلومات لأن المعالجات غير موصولة إلى ذاكرة واحدة، ولكنها تعتبر في نفس الوقت طريقة ربط آمنة لأنها تمنع المعالجات من كتابة نتائجها فوق بعضها.
في نظام الذاكرة المشتركة، عندما عدد المعالجات يزداد، يصبح من الصعب الولوج إلى الذاكرة، مما يؤدي إلى حدوث حالة اختناق.
لحل المحدودية في الذاكرة التشاركية، وحل مشكلة فردية الذواكر في نظام الذواكر المنفصلة، تُبنى الذواكر المنفصلة مع دارات تسمح للمعالِجات بدخول ذواكر بعضها البعض. هذه الطريقة المبتكرة تسمى بالذواكر المنفصلة المشتركة، بهذه الطريقة نستطيع التخلص من مشاكل التي واجهتنا في الطريقتين السابقتين.
حاسب ديب بلو : هو حاسوب فائق من إنتاج شركة يستخدم تقنية المعالجة التفرعية الشاملة لحل المشاكل.
يستخدم هذا الحاسوب 256 معالاجا لحساب 50 إلى 100 مليار حركة شطرنج خلال ثلاث دقائق.
هناك حواسب تشبه ديب بلو تستخدم لحل التطبيقات الحقيقية في عالمنا مثل: التنبؤ الجوي، أبحاث العقارات والجينات، تحسين مخدمات الشابكة (الإنترنت).
المعالجات ثنائية النواة: وهو عبارة عن مصطلح يشير إلى شرائح الدارات المتكاملة التي تحتوي في داخلها على معالجين (نواتين) فيزيائيين كاملين يتوضعان على شريحة سيليكونية واحدة، أو على عدة شرائح سليكونية داخل ال .
كل نواة فيزيائية تملك مصادرها الخاصة من مسجلات ووحدات تنفيذ..الخ
في المعالج ذو النوى المتعددة، التي تتوضع على نفس الشريحة السليكونية، من ممكن لهذه النوى أن تشترك أو أن لا تشترك بالخابية (Cache).
المعالجات ثنائية النواة يمكن أن تصنع بأحد الأشكال التالية :
ونلاحظ أن المعالجات ثنائية النواة لا تستخدم الممر الأمامي لتتصل مع بعضها البعض، بل تستخدم الممر الأمامي فقط لتتصل مع النظام الخارجي.
المعالجة باستخدام تقنية النياسب المتعددة : طورت شركة إنتل تقنية وزودت معالجاتها بها، بحيث يصبح بمقدور المعالج وحيد النواة أن ينفذ نيسبين، بشكل متوازي(في نفس الوقت) بدلا من طريقة تبديل السياق بين النياسب. فجدولة النياسب على نفس النواة الفيزيائية يسمح باستخدام أفضل لمصادر المعالج. يمكن أن نجد أن تقنية ال في معالجات إنتل وبعض معالجات بنتيوم فور .
أضافت هذه التقنية إلى المعالج الفيزيائي الوحيد، دارات وبرمجيات، تمكنه ليبدو وكأنه معالجين منفصلين (كل معالج من هذين المعالجين هو معالج منطقي وليس فيزيائي).
لكل من هذين المعالجين تحكم مقاطعة مبرمج خاص به والذي يسمح بإدارة مقاطعات المعالِجات، وتقسيم المقاطعات بين المعالِجات (سواء كانت المقاطعات دينامكية أو ستاتيكية) بشكل منسجم.
الموارد المشتركة في هذه الحالة بين المعالِجات تشمل الكاش والمسجلات ووحدات التنفيذ 
المعالجات المزودة بتقنية تحتاج إلى: أنظمة تشغيل تدعم وبيوس يدعم تقنية .
من الملاحظ أنه يمكننا أن نجد معالج ثنائي النواة، كل نواة تحتوي على تقنية ال وبذلك المعالج يصبح المرء قادرًا على تشغيل أربع برامج (أو نياسب threads) في نفس الوقت.
التكلفة والأداء: كما أسلفنا بالذكر فإن المعالجات المزودة بتقنية ال تظهر لنظام التشغيل وكأنها معالجان منطقيان. ولكن من غير المتوقع أن تعمل بكفاءة معالجين فيزيائيين حقيقيين. فمعالجات تعمل بكفاءة أداء أعلى بحوالي 1.3 - 1.5 مرة من المعالجات التقليدية التي لا تحتوي هذه التقنية. وبذلك نكون قد رفعنا الأداء بحوالي 18 % إلى 30 % في بيئة المعالجات المتعددة المهام بمساحة أقل من 5 % من مساحة الشريحة السليكونية تأخذها دارات تقنية .
في المعالجات الثنائية نلاحظ ارتفاع الأداء عن المعالجات وحيدة النواة بحوالي 10 % بالنسبة للتطبيقات وحيدة الخيط، وبحوالي 40 % - 80 % للتطبيقات المتعددة الخيوط.