معالجة تفرعية  المعالجة المتوازية أو المعالجة التفرعيّة هي تقنية حاسوبية تُنفذ بها عدة عمليات في وقت واحد، مما يؤدي إلى إنقاص زمن المعالجة. لذلك السبب تُستخدم في معالجة التطبيقات الكثيفة مثل التنبؤ بالمستقبل الاقتصادي، إنتاج المؤثرات المرئية للأفلام المستقبلية.  هناك طريقتان شائعتان تُنفذ بها العمليات المتوازية:  يحتاج تنفيذ عدة برامج في وقت واحد إلى ربط عدة معالجات أو عدة حواسيب مع بعضها بعضا لحل مشكلة معينة. بينما عملية توزيع التعليمات إلى مراحل وتنفيذ كل مرحلة في وقت واحد تتم باستخدام معالج وحيد.  إن الزمن اللازم لإيجاد حل مشكلة ما في حال تقسيمها إلى عشرة أجزاء ومعالجتها على عشرة حواسيب في نفس الوقت، يساوي إلى عشر الوقت الذي يحتاجه حاسوب غير موازي لحل كل جزء من أجزاء المشكلة العشرة بشكل تسلسلي.  صحيح أنه هناك العديد من التطبيقات القابلة للتجزيء إلى عمليات متوازية، ولكن هناك بعض العمليات من الصعب أن تُجزئ، لأن أجزاءها مرتبطة مع بعضها البعض، أي أن هناك أجزاء عليها أن تنتظر حل أجزاء أخرى حتى تستطيع حل الجزء الخاص بها.  أجزاء العملية التي لا يمكن أن تحل بطريقة متوازية تدعى أجزاء تسلسلية. في الحقيقة تحدد هذه الأجزاء التسلسلية الوقت الكلي اللازم من أجل حل مشكلة ما. على سبيل المثال: افرض أنه لدينا مشكلة ما نريد حلها، تتضمن هذه المشكلة 9 ملايين عملية يمكن أن تنجز بشكل متوازي وواحد مليون يجب أن تُنجز بشكل تسلسلي. بشكل نظري يمكننا القول: أن تسع ملايين حاسب تُنجز تسع أعشار المشكلة في وقت واحد، وتترك عشرًا لحله بشكل تسلسلي، وبذلك يكون زمن التنفيذ الكلي هو عشر الزمن في حال لم تكن المعالجة تفرعية.  لتوضيح فكرة المعالجة التفرعية، لنتخيل أنه يوجد عدد كبير من المتقدمين نُحاول جمع المعلومات عنهم، فسيكون ذلك العمل صعبا وطويلا على شخص واحد، أما عندما يتواجد مجموعة من الناس يمكنهم المساعدة فإنه يُمكن تقسيم العمل على عدة أناس بحيث أن كل شخص يسأل سؤال معينا ويتخصص بالبحث عن معلومة معينة. إن هذه العملية في تقسيم العمل تُدعى: «المعالجة التفرعية».  بالنسبة لمفهوم الحاسوب فان المعالجة التفرعية تعني تقسيم معالجة تعليمات البرنامج الواحد على عدة معالجات، وأفضل مثال يتمثل في مخدمات شبكات الانترنيت والتي تستخدم رقائق Intel Xeon.  للاطلاع على عنوان موقع URL والحصول على المزيد من المعلومات، نقوم بالاتصال بشبكة الإنترنت وإدخال عنوان الموقع في الحقل المخصص ضمن المتصفح، فتظهر صفحة هذا الموقع. تتم هذه العملية بالتفصيل الآتي:   نبذة عن العناوين IP address، البوابات (Ports)، البروتوكولات (Protocols):  لضمان استمرار الاتصال مع جميع الأجهزة فإنه يخصص لكل جهاز ضمن شبكة الإنترنت عنوان وحيد فريد يدعى عنوان IP. مصطلح IP هو اختصار لمصطلح بروتوكول الإنترنت Internet Protocol. يخصص لهذا العنوان كلمة بطول 32 خانة ثنائية، يعبر عنها عادة بأربعة أعداد (مجموعات ثمانية) تفصل فيما بينها فواصل عشرية. يأخذ عنوان الـ IP الشكل التالي: 216.27.61.137.  أطلق على الأعداد الأربعة ضمن العنوان IP بالمجموعات الثمانية لأن قيمها تتراوح بين 0 و 255 لها 28 قيمة ضمن كل مجموعة.  كل جهاز ضمن شبكة الإنترنت له عنوان IP وحيد. للمخدم عنوان IP مستقر لا يتغير غالباً، أما الأجهزة المنزلية التي تتصل بالشبكة عبر المودم فإنه يسند لها غالباً عنوان IP من قبل مزود خدمة الإنترنت ISP عند دخولها الشبكة. هذا العنوان وحيد عند كل دخول ويمكن أن يتغير عند الدخول التالي، ومنه نرى أن مزود خدمة الإنترنت ISP يحتاج فقط إلى عنوان IP واحد لكل مودم (أكثر منه لكل مستثمر) يعمل معه.  يمكن معرفة معلومات كثيرة عن جهازك ضمن شبكة الإنترنت باستخدام البرنامج WINIPCFG.EXE ضمن بيئة Windows. IPCONFIG>EXE ضمن بيئة / Windows XP 2000  إن أي جهاز من أجهزة المخدمات يقدم خدماته لشبكة الإنترنت عبر العديد من البوابات، بوابة واحدة لكل خدمة من خدماته، فمثلاً إذا كان المخدم يقدم خدمة الويب وخدمة FTP فإن خدمة الويب تكون على البوابة 80 وخدمة FTP على البوابة 21. وبالتالي يتم الاتصال مع المخدم باستخدام عنوان IP محدد وبوابة محددة. البوابات المعروفة والشائعة لها بوابات محددة ومعروفة، سنورد هنا بعضاً منها: - echo 7 - daytime 13 - qotd 17 (Quote of the day) - ftp21 - telnet 23 - time 37 - nameserver 42 - nickname 43 (Who is) - gopher 70 - finger 79 - www 80  في حال اتصال الزبون مع المخدم عبر بوابة محددة فإنه يلج هذا المخدم مستخدماً بروتوكولاً خاصاً، ويعرف البروتكول بأنه طريقة محددة مسبقاً يتم وفقها اتصال الزبون مع المخدم بشكل سهل وفعال وبأقل قدر من الأخطاء أبسط أنواع البروتوكولات هو daytime protocol. إن استخدمت البوابة 13 للاتصال مع مخدم يدعم هذا البروتوكول فسوف يرسل لك المخدم التاريخ والوقت الجاري وينهي بعدها الاتصال. البروتوكول هو «إن اتصلت معي، سأرسل لك التاريخ والوقت وأقطع الاتصال بعدها».  في بروتوكول HTTP الأصلي، كل ما عليك إرساله هو اسم الملف الفعلي، مثل "/" أو "/web-" server.htm. عدِل هذا البروتوكول لاحقاً لمعالجة إرسال كامل عنوان URL. سمح هذا للشركات التي تستضيف نطاقات وهمية حيث يعيش العديد من النطاقات على جهاز واحد من استخدم عنوان IP واحد لجميع النطاقات التي تستضيفها.  المخدم عبارة عن برنامج بسيط جداً، وهو يتلقى اسم الملف المرسل مع الأمر GET، ثم يبحث عن الملف، يجده ويرسله إلى المتصفح.  إذا جمعت كل الأوامر والتعليمات التي تتعامل مع البوابة وتحقق الاتصال معها، فبإمكانك كتابة برنامج بلغة C يزودك بمخدم ويب بسيط بأقل من 500 سطر أوامر.  تضيف أغلب المخدمات مستويات مختلفة من الأمن والحماية لعملية التخديم التي تقوم بها. مثلاً هناك بعض الصفحات التي يتطلب الدخول إليها وتصفحها امتلاك اسم وكلمة مرور خاصين.فعند طلب هذه الصفحة تظهر أمامك مباشرة صفحة أولى تضم قائمة لطلب الاسم وكلمة المرور. والمخدم هنا يسمح فقط للأشخاص الأعضاء الذين يملكون كلمات مرور صحيحة برؤية هذه الصفحة.  بعض المخدمات الأخرى تقدم مستويات حماية أعلى مثل التشفير والتعمية مما يسمح بإرسال المعلومات الحساسة السرية عبر الإنترنت، مثل رقم بطاقة الائتمان.  ما سبق ينطبق على مخدمات الويب التي تنقل صفحات ثابتة وبسيطة، لا يتغير محتواها إلا بتعديلها من قبل المالك والمصمم.  بسبب صعوبة تذكر سلسلة الأرقام الطويلة التي تعرَف العنوان IP وعدم تآلف الكثير من الناس معها، وبما أن العنوان IP عرضة للتغيير في بعض الأحيان، تمتلك جميع مخدمات الإنترنت أسماء محددة مقروءة تدعى أسماء النطاق domain names مثلاً: www.yahoo.com http:// هو اسم دائم، محدد ومقروء. ومن الواضح أنه مقروء أكثر من سلسلة الأرقام السابقة. يتألف الاسم www.yahoo.com http:// من ثلاثة أجزاء:   مخدمات اسم النطاق DNS (domain name servers) هي المسؤولة عن إسناد الأسماء المقروءة للعناوين IP، وهي عبارة عن قاعدة بيانات بسيطة تعمل على إسناد الاسم المناسب للعنوان IP المطلوب، وتنشره على كامل شبكة الإنترنت.   في عام 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 % للتطبيقات المتعددة الخيوط.