معالجة تفرعية

المقدمة

لتوضيح فكرة المعالجة التفرعية، لنتخيل أنه يوجد عدد كبير من المتقدمين نُحاول جمع المعلومات عنهم، فسيكون ذلك العمل صعبا وطويلا على شخص واحد، أما عندما يتواجد مجموعة من الناس يمكنهم المساعدة فإنه يُمكن تقسيم العمل على عدة أناس بحيث أن كل شخص يسأل سؤال معينا ويتخصص بالبحث عن معلومة معينة. إن هذه العملية في تقسيم العمل تُدعى: "المعالجة التفرعية".
بالنسبة لمفهوم الحاسوب فان المعالجة التفرعية تعني تقسيم معالجة تعليمات البرنامج الواحد على عدة معالجات، وأفضل مثال يتمثل في مخدمات شبكات الانترنيت والتي تستخدم رقائق Intel Xeon.

العناوين IP

لضمان استمرار الاتصال مع جميع الأجهزة فإنه يخصص لكل جهاز ضمن شبكة الإنترنت عنوان وحيد فريد يدعى عنوان 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 سطر أوامر. 
تضيف أغلب المخدمات مستويات مختلفة من الأمن والحماية لعملية التخديم التي تقوم بها. مثلاً هناك بعض الصفحات التي يتطلب الدخول إليها وتصفحها امتلاك اسم وكلمة مرور خاصين.فعند طلب هذه الصفحة تظهر أمامك مباشرة صفحة أولى تضم قائمة لطلب الاسم وكلمة المرور. والمخدم هنا يسمح فقط للأشخاص الأعضاء الذين يملكون كلمات مرور صحيحة برؤية هذه الصفحة.
بعض المخدمات الأخرى تقدم مستويات حماية أعلى مثل التشفير والتعمية مما يسمح بإرسال المعلومات الحساسة السرية عبر الإنترنت، مثل رقم بطاقة الائتمان.
ما سبق ينطبق على مخدمات الويب التي تنقل صفحات ثابتة وبسيطة، لا يتغير محتواها إلا بتعديلها من قبل المالك والمصمم.

البنية التفرعية

في عام 1966 م قام مهندس الإلكترون الأمريكي مايكل ج. فلين بالتمييز بين أربع أشكال للمعالِجات (طريقة تصميم المعالجات لمعالجة المعلومات والتعليمات البرمجية). فالمعلومات يُمكن أن تُرسل لمعالج دفعة واحدة، أو على عدة دفعات. وبشكل مشابه فإن التعليمات يُمكن أن تنجز تعليمة تعليمة، أو عدة تعليمات في المرة الواحدة.

الحواسيب التسلسلية التي تعمل وفق مبدأ تعليمة واحدة كل مرة، معلومة واحدة كل مرة

(بالإنجليزية: SISD serial instructionstream stream,single data stream) في هذه الحالة جزء واحد من أجزاء المعلومة يُرسل إلى معالج وحيد. فإذا كان لدينا 100 عدد يجب أن تُضربها بالعدد 3، فإن كل عدد من الأعداد المائة يُرسل إلى المعالج ويُضرب بالعدد 3 وثم يُخزن الناتج، وهكذا بالنسبة للعدد التالي في المجموعة، يُرسل ويُحسب حتى نحصل على المائة نتيجة مخزنة.
من التطبيقات المناسبة للشكل SISD، القرارات ذات النتائج المترابطة بشكل معقد. مثل:المعالجات الكلمية (بالإنجليزية: word processing).

عدة تعليمات كل مرة, معلومة واحدة كل مرة

(بالإنجليزية: A Multiple Instruction stream, Single Data stream MISD) في هذ الحالة يقوم معالج بنسخ دفعة معلومات ويرسلها معلومة معلومة إلى معالجات أخرى، وكل معالج بدوره ينفذ على المعلومة نفسها برنامج تختلف عن المعالج الآخر. على سبيل المثال قد نرسل محتويات بنية معطيات في وقت واحد إلى عدة معالجات، كل معالج سوف يُوجد قيمة في بنية المعطيات، تختلف عن القيمة التي سيوجدها معالج آخر. من المشاكل التي يلائمها الحل بالمعالجة التفرعية MISD أنظمة المعالجة المرئية (وهو أن يأخذ البرنامج الحاسوبي معطياته من صورة رقمية كما في الرجل الآلي).

-تعليمة واحدة وعدة معلومات A.

(بالإنجليزية:  Single Instruction stream, Multiple Data stream SIMD) بمعنى آخر إجراء نفس التعليمة على معطيات مختلفة (ضرب مائة عدد بالرقم 3 في وقت واحد). وبذلك فإن معالجات SMID تُبرمج بشكل يشابه كثيرًا برمجة معالجات SISD، ولكن العمليات هنا تحدث على مصفوفة من القيم بدلًاُ من قيمة واحدة. ولذلك SIMD تُعرف بما يسمى مصفوفة المعالجات.
هناك العديد من التطبيقات التي تستخدم المعالِجات SIMD، كعمليات تحسين الصور، ومعالجات الرادار لضبط الملاحة الجوية.

-عمليات مختلفة من أجل كل دفعة من المعلومات

(بالإنجليزية: A Multiple Instruction stream, Multiple Data stream MIMD) هذا الشكل أكثر مرونة، ولكنه في نفس الوقت صعب التحقيق برمجيًا، لأنه يحتاج إلى تعليمات إضافية لتنسيق عمل المعالِجات. ومن الممكن أن يستخدم كبديل عن كل الأنظمة السابقة ولكن بشكل أقل كفاءة.
يستخدم هذا الشكل في بعض برامج الذكاء الصناعي، ودراسة ازدحام المدن.

الربط التفرعي

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

المعالجة باستخدام تقانة النياسب (المسالك)المتعددة

المعالجة باستخدام تقنية النياسب المتعددة (بالإنجليزية: HYPER-THREADING TECHNOLOGY): طورت شركة إنتل تقنية (بالإنجليزية: HT) وزودت معالجاتها بها، بحيث يصبح بمقدور المعالج وحيد النواة أن ينفذ نيسبين، بشكل متوازي(في نفس الوقت) بدلا من طريقة تبديل السياق بين النياسب(بالإنجليزية: context switching). فجدولة النياسب على نفس النواة الفيزيائية يسمح باستخدام أفضل لمصادر المعالج. يمكن أن نجد أن تقنية ال (بالإنجليزية: HT) في معالجات إنتل (بالإنجليزية: XEON) وبعض معالجات بنتيوم فور (بالإنجليزية: PENTIUM 4).
أضافت هذه التقنية إلى المعالج الفيزيائي الوحيد، دارات وبرمجيات، تمكنه ليبدو وكأنه معالجين منفصلين (كل معالج من هذين المعالجين هو معالج منطقي وليس فيزيائي).
لكل من هذين المعالجين تحكم مقاطعة مبرمج خاص به (بالإنجليزية: Advanced Programmble Interrpt Controllers AIPC) والذي يسمح بإدارة مقاطعات المعالِجات، وتقسيم المقاطعات بين المعالِجات (سواء كانت المقاطعات دينامكية أو ستاتيكية) بشكل منسجم.
الموارد المشتركة في هذه الحالة بين المعالِجات تشمل الكاش والمسجلات ووحدات التنفيذ (بالإنجليزية: Ececution Unites)
المعالجات المزودة بتقنية (بالإنجليزية: HT) تحتاج إلى: أنظمة تشغيل تدعم (بالإنجليزية: HT) وبيوس يدعم تقنية (بالإنجليزية: HT).
من الملاحظ أنه يمكننا أن نجد معالج ثنائي النواة، كل نواة تحتوي على تقنية ال (بالإنجليزية: HT) وبذلك المعالج يصبح المرء قادرًا على تشغيل أربع برامج (أو نياسب threads) في نفس الوقت.
التكلفة والأداء: كما أسلفنا بالذكر فإن المعالجات المزودة بتقنية ال (بالإنجليزية: HT) تظهر لنظام التشغيل وكأنها معالجان منطقيان. ولكن من غير المتوقع أن تعمل بكفاءة معالجين فيزيائيين حقيقيين. فمعالجات (بالإنجليزية: HT) تعمل بكفاءة أداء أعلى بحوالي 1.3 - 1.5 مرة من المعالجات التقليدية التي لا تحتوي هذه التقنية. وبذلك نكون قد رفعنا الأداء بحوالي 18 % إلى 30 % في بيئة المعالجات المتعددة المهام (بالإنجليزية: Multi-Tasking) بمساحة أقل من 5 % من مساحة الشريحة السليكونية تأخذها دارات تقنية (بالإنجليزية: HT).
في المعالجات الثنائية نلاحظ ارتفاع الأداء عن المعالجات وحيدة النواة بحوالي 10 % بالنسبة للتطبيقات وحيدة الخيط، وبحوالي 40 % - 80 % للتطبيقات المتعددة الخيوط.