المعالجة التفرعية
المعالجة المتوازية (بالإنجليزية: Parallel Processing) هي تقنية حاسوبية تُنفذ بها عدة عمليات في وقت واحد، مما يؤدي إلى إنقاص زمن المعالجة. لذلك السبب تُستخدم في معالجة التطبيقات الكثيفة مثل التنبؤ بالمستقبل الاقتصادي، إنتاج المؤثرات المرئية للأفلام المستقبلية.
هناك طريقتان شائعتان تُنفذ بها العمليات المتوازية:
- فإما أنه يتم تنفذيها من خلال تنفيذ عدة برامج (عمليات) في وقت واحد (بالإنجليزية: multiprocessing).
- أو من خلال توزيع التعليمات البرمجية إلى مراحل (بالإنجليزية: instruction-level).
يحتاج تنفيذ عدة برامج في وقت واحد إلى ربط عدة معالجات أو عدة حواسيب مع بعضها بعضا لحل مشكلة معينة. بينما عملية توزيع التعليمات إلى مراحل وتنفيذ كل مرحلة في وقت واحد تتم باستخدام معالج وحيد.
إن الزمن اللازم لإيجاد حل مشكلة ما في حال تقسيمها إلى عشرة أجزاء ومعالجتها على عشرة حواسيب في نفس الوقت، يساوي إلى عشر الوقت الذي يحتاجه حاسوب غير موازي لحل كل جزء من أجزاء المشكلة العشرة بشكل تسلسلي.
صحيح أنه هناك العديد من التطبيقات القابلة للتجزيء إلى عمليات متوازية، ولكن هناك بعض العمليات من الصعب أن تُجزئ، لأن أجزاءها مرتبطة مع بعضها البعض، أي أن هناك أجزاء عليها أن تنتظر حل أجزاء أخرى حتى تستطيع حل الجزء الخاص بها.
أجزاء العملية التي لا يمكن أن تحل بطريقة متوازية تدعى أجزاء تسلسلية. في الحقيقة تحدد هذه الأجزاء التسلسلية الوقت الكلي اللازم من أجل حل مشكلة ما. على سبيل المثال: افرض أنه لدينا مشكلة ما نريد حلها، تتضمن هذه المشكلة 9 مليون عملية يمكن أن تنجز بشكل متوازي وواحد مليون يجب أن تُنجز بشكل تسلسلي. بشكل نظري يمكننا القول : أن تسع ملايين حاسب تُنجز تسع أعشار المشكلة في وقت واحد، وتترك عشرًا لحله بشكل تسلسلي، وبذلك يكون زمن التنفيذ الكلي هو عشر الزمن في حال لم تكن المعالجة تفرعية.
البنية التفرعية
في عام 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) هذا الشكل أكثر مرونة، ولكنه في نفس الوقت صعب التحقيق برمجيًا، لأنه يحتاج إلى تعليمات إضافية لتنسيق عمل المعالِجات. ومن الممكن أن يستخدم كبديل عن كل الأنظمة السابقة ولكن بشكل أقل كفاءة. يستخدم هذا الشكل في بعض برامج الذكاء الصناعي، ودراسة ازدحام المدن.
الربط التفرعي
من العوامل المحددة لبنية الربط التفرعي كيفية ربط المعالجات مع بعضها البعض. فمن طرق الربط التفرعي جعل المعالجات تتشارك على ذاكرة واحدة، وبذلك ستتصل المعالجات مع بعضها عن طريق قراءة معطيات بعضها البعض. يدعى هذا النوع من الربط التفرعي الذاكرة المشتركة. في هذا النمط من الربط التفرعي، يمكن لأي معالج الولوج إلى معطيات الذاكرة، لذا يجب منع المعالجات المترابطة من أن تكتب سهوًا نتائجها فوق بعضها.
الطريقة الثانية في ربط المعالجات، السماح لها بالتواصل عن طريق رسائل، ترسلها المعالجات إلى بعضها. تُعرف هذه التقنية بتقنية تمرير الرسائل أو تقنية الذاكرة المقسمة، حيث أن المعطيات تُقسم وتُخزن في ذواكر المعالجات المنفصلة. هذه الطريقة في الربط تجعل من الصعب على المعالجات التشارك على المعلومات لأن المعالجات غير موصولة إلى ذاكرة واحدة، ولكنها تعتبر في نفس الوقت طريقة ربط آمنة لأنها تمنع المعالجات من كتابة نتائجها فوق بعضها.
في نظام الذاكرة المشتركة، عندما عدد المعالجات يزداد، يصبح من الصعب الولوج إلى الذاكرة، مما يؤدي إلى حدوث حالة اختناق.
لحل المحدودية في الذاكرة التشاركية، وحل مشكلة فردية الذواكر في نظام الذواكر المنفصلة، تُبنى الذواكر المنفصلة مع دارات تسمح للمعالِجات بدخول ذواكر بعضها البعض. هذه الطريقة المبتكرة تسمى بالذواكر المنفصلة المشتركة، بهذه الطريقة نستطيع التخلص من مشاكل التي واجهتنا في الطريقتين السابقتين.
حاسب الديب بلو
حاسب ديب بلو (بالإنجليزية: DEEP BLUE): هو حاسوب فائق من إنتاج شركة (بالإنجليزية: IBM) يستخدم تقنية المعالجة التفرعية الشاملة لحل المشاكل.
- تقنية المعالجة المتوازية الشاملة (بالإنجليزية: massively parallel processing technology) (تقنية قادرة على إنجاز 100 عملية في المرة تكفي لحل جميع المشاكل التي نواجهها في الوقت الحاضر).
يستخدم هذا الحاسوب 256 معالاجا لحساب 50 إلى 100 مليار حركة شطرنج خلال ثلاث دقائق. هناك حواسب تشبه ديب بلو تستخدم لحل التطبيقات الحقيقية في عالمنا مثل: التنبؤ الجوي، أبحاث العقارات والجينات، تحسين مخدمات الشابكة (الإنترنت).
أمثلة عن المعالجات المتزامنة
المعالجات ثنائية النواة
المعالجات ثنائية النواة(بالإنجليزية: Dual Core): وهو عبارة عن مصطلح يشير إلى شرائح الدارات المتكاملة (بالإنجليزية: IC) التي تحتوي في داخلها على معالجين (نواتين) فيزيائيين كاملين يتوضعان على شريحة سيليكونية واحدة، أو على عدة شرائح سليكونية داخل ال (بالإنجليزية: ICE PACKAGE). كل نواة فيزيائية تملك مصادرها الخاصة من مسجلات ووحدات تنفيذ..الخ في المعالج ذو النوى المتعددة، التي تتوضع على نفس الشريحة السليكونية، من ممكن لهذه النوى أن تشترك أو أن لا تشترك بالخابية (Cache).
المعالجات ثنائية النواة يمكن أن تصنع بأحد الأشكال التالية :
- لكل نواة الخافية الخاصة بها.
- النواتان تشتركان بخابية الشريحة.
- تقسم الخابية إلى قسم مخصص في حال عمل المعالج كمعالج وحيد وقسم آخر مشترك بين النواتين.
ونلاحظ أن المعالجات ثنائية النواة لا تستخدم الممر الأمامي (بالإنجليزية: FSB) لتتصل مع بعضها البعض، بل تستخدم الممر الأمامي فقط لتتصل مع النظام الخارجي.
المعالجة باستخدام تقانة النياسب (المسالك)المتعددة
المعالجة باستخدام تقنية النياسب المتعددة (بالإنجليزية: 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 % للتطبيقات المتعددة الخيوط.
Parallel processing]] sv:Parallell bearbetning