# توارد (حوسبة)

المُوارَدة أو التوارد أو سير العمل أو طريقة خط المواسير أو أنابيب التجزئة في مجال الحوسبة تعبير يقصد به استخدام زمرة من عناصر معالجة البيانات ووصلها بسلسلة متتالية يكون فيها مخرج (خارج output ) الواحدة منها مدخل (داخل input ) التي تليها.

## أنابيب تجزئة تنفيذ التعليمات ( pipelines )

يمكن أن ننظر إلى معالجة تعليمة كسلسلة خطوات مستقلة تنفذها وحدات جزئية مستقلة من وحدة التحكم من (un إلى um) وتستطيع هذه الوحدات الجزئية كونها مستقلة أن تتزاحم على العمل بنفس الوقت ولن يعود ضروريا أن تنتظر معالجة تعليمة ما اكتمال معالجة التعليمة السابقة لها وبالتالي ء في أية لحظة ستلاحظ أن وحدة التحكم تحوي عددا من التعليمات كل منها في إحدى مراحل معالجتها. ويمكن تشبيه الوضع بوحدة تصنيع حيث تتواجد عدة واحدات من المنتج على خطوط تجميع في مواقع العمل المختلفة وكل من هذه الوحدات في إحدى مراحل تجميعها. إن الشروط الوحيدة الواجب فرضها هي:
يطلق على هذه الصيغة اسم نظام أنابيب تجزئة التنفيذ حيث تعالج التعليمات كما لو أنها تنتقل عبر أنابيب متصلة وتؤدي هذه الصيغة إلى زيادة هامة في سرعة عمل الآلة. نشير هنا إلى أن الزمن الكلي اللازم لتنفيذ تعليمة واحدة يبقى كما هو إلا أن بمجموع الأزمنة التي تستغرقها محطات المعالجة المختلفة يختصر (بالتحاكي مع عبارة محطات العمل على خط تجميع).
سندعو T زمن الحلقة الكبرى وتحتاج كل محطة إلى زمن أصغر لإتمام حصتها من عملية المعالجة وسندعو هذا الزمن t زمن الحلقة الصغرى لكل محطة. وبما أن كل محطة تنجز حصتها من عملية معالجة تعليمة واحدة في حلقة صغرى واحدة فإن أنبوب التجزئة ككل سيعالج التعليمات بمعدل تعليمة واحدة في كل حلقة صغرى، ولولا استخدام أنابيب التجزئة لكان هذا المعدل يساوي تعليمة واحدة في كل حلقة كبرى.

## آلية عمل أنابيب التجزئة

لفهم آلية عمل أنابيب التجزئة سنلقي الضوء على كيفية تنفيذ سلسلة تعليمات بالطريقة التقليدية ثم نبين الفرق بينها وبين تنفيذ السلسلة نفسها باستخدام أنابيب التجزئة.
يتطلب تنفيذ أية تعليمة تنفيذ سلسلة عمليات صغرية m1…..mn (انظر الشكل التالي) وتختلف هذه السلسلة من تعليمة لأخرى. في نمط التنفيذ التقليدي يجب إتمام السلسلة بأكملها قبل البدء بسلسلة العمليات الخاصة بالتعليمة التالية، ويمكن لذلك تحقيق دارات التحكم اللازمة بطريقة مباشرة. تعرف حالة النظام بعدد التعليمات المنجزة (أي بعدد محتويات المسجل CIAC ) وبالعملية الصغرية التي يتم تنفيذها حاليا (أي محتويات مسجل عنوان العملية الصغرية الحالية CMIAR ( Current Micro Instruction Address register ).
عند استخدام أنابيب التجزئة تقسم هذه السلسلة المؤلفة من n عملية صغرية إلى k سلسلة جزئية s1,……,sk قابلة للتنفيذ بشكل متزامن (يكون ذلك ممكنا إذا كانت المصادر التي تتطلبها هذه المصادر الجزئية متنافية فيما بينها) تنفذ السلاسل الجزئية في محطات معالجة مستقلة p1 ….. pk في أي لحظة قد تكون السلاسل الجزئية كلها تحت التنفيذ في المحطات وتعمل كل محطة على تعليمة مختلفة .
لنتساءل ما هي المكونات الداراتية اللازمة لكل محطة عمل؟
تحتاج كل محطة إلى ذوا كر خزن مؤقتة ( buffer ) لاحتواء مدخلاتها، ويتصل خرج المحطة بدخل المحطة التالية. يمكننا أن نفترض أن العمليات في المحطات المختلفة تستغرق أزمنة متساوية وهذا الشرط هام كما سنرى قريبا. ونستخدم وحدة تحكم مشتركة للتحكم بالعمليات المتزامنة في كل المحطات. إلا أنه يجب الانتباه إلى أن عدد العمليات الصغرية قد يتغير من محطة لأخرى والمحطات التي لديها عدد أقل من العمليات الصغرية ستنتظر لفترة من الوقت تنفذ عمليات بلا فائدة ( null operation).
تفترض الدراسة السابقة ومخطط الشكل التالي أن لكل محطة مصادر عتادية خاصة بها (ذواكر خزن مؤقت أدوات معالجة منطقية ... الخ)لكن ليس بالضرورة أن يتحقق هذا الفرض دوما.يمكن مثلا أن تستخدم كل من السلسلتين الجزئيتين s1 و s4 الدارات نفسها، وبالتالي يجب إيجاد طريقة لمنع تنشيط السلسلتين بنفس الوقت. بشكل عام يؤدي ذلك إلى فرض قيود تحد من مدى التوازي الذي يمكن تحقيقه بواسطة أنابيب التجزئة.
نشير أخيرا إلى أن بعض المحطات قد لا يلزم تشغيلها بالنسبة لبعض التعليمات وهذا سهل التحقيق لكن بالمقابل قد يلزم تشغيل بعض المحطات بطرق مختلفة وفقا للتعليمة المنفذة لذلك من الضروري أن تمتلك هذه المحطات معلومات بخصوص نمط التعليمة التي تعالجها في كل لحظة.
نصادف عادة في الأنظمة الحاسوبية ثلاثة أنماط مختلفة من أنابيب التجزئة:
يخص النمط الأول: عمليات جلب التعليمات والمعطيات وتحزين النتائج وهو يؤدي نفس الوظائف بالنسبة لطيف واسع من التعليمات .
أما النمط الثاني: فيستخدم لتحقيق عمليات محددة مثل ضرب الأعداد الممثلة بالفاصلة العائمة.
كما يمكن أن نمجد نمطا ثالثا متعدد الوظائف: كأن يساهم في جمع أو جداء الأعداد الممثلة بطريقة الفاصلة العائمة .

## أثر أنابيب التجزئة في زيادة السرعة

نظرا للتعقيد والكلفة الإضافية التي تتطلبها تقنية أنابيب التجزئة والمعالجة المتوازية لا بد لنا أن نتساءل إلى أي مدى نستطيع زيادة السرعة عند استخدام هذه التقنيات. لنفترض لدينا سلسلة مباشرة من L تعليمة تنفذ عبر أنبوب تجزئة مؤلف من n محطة عندئذ تقسم كل عملية إلى n عملية وسنفترض أن الزمن الوسطي لإنجاز العملية هو t لنأخذ أولا الحالة التي يتم فيها تنفيذ العملية بدون تجزئة.
الزمن اللازم لتنفيذ تعليمة واحدة في السلسلة = nt .
الزمن اللي اللازم لتنفيذ سلسلة التعليمات = nt)L ).
لنقارن هذه الحالة مع الحالة التي تجزأ فيها العملية حيث ينفذ الأنبوب L عملية. عندئذ يعتمد الزمن الكلي للحساب على عاملين:
1- زمن الإعداد (أي الزمن اللازم لملء الأنبوب في البداية). 2 - زمن الحساب (الزمن اللازم لإنجاز العدد المطلوب من الحلقات لسلسلة العمليات المحددة). عندئذ يكون: الزمن الكلي اللازم لتهيئة الأنبوب وإنجاز التعليمة الأولى = nt . أما بالنسبة للتعليمات التالية، فيحتاج تنفيذ كل تعليمة زمنا إضافيا t الزمن اللازم لتنفيذ ( L-1 ) تعليمة متبقية = L-1)t ) ويكون الزمن الكلي = n+L-1)t ) وتكون عندئذ نسبة الكسب في السرعة عند استخدام أنبوب التجزئة = (nL)/(n+L-1) نلاحظ أن هذه النسبة تقترب من n من أجل قيم كبيرة لـ L . نستنتج من الدراسة السابقة أن استخدام أنابيب تجزئة التعليمات يسمح بتخفيض زمن الحساب بشكل كبير، إلا أننا وبهدف التبسيط افترضنا أن كل المحطات تستغرق الزمن نفسه لمعالجة عملياتها ولكي تكون دراستنا واقعية أكثر يجب أن نأخذ بعين الاعتبار احتمال أن يكون لكل محطة زمن معالجة مختلف عن أزمنة باقي المحطات.

## الأنابيب متعددة الوظائف: Multifunction Pipelines

يمكن أن يصم أنبوب التجزئة لينجز وظيفة وحيدة (جمع، ضرب، إزاحة) أو لينجز عدة وظائف، وفي هذه الحالة لا بد من استخدام وحدة تحكم (مبرمجة صغريا مثلا) للسيطرة على عمل الأنبوب. ونقول عن الأنبوب متعدد الوظائف أنه سكوني إذا كان تبديل وظيفته يتطلب إفراغ محطاته كلها وإعادة ملئها من جديد ونقول إنه ديناميكي إذا لم يكن ذلك ضروريا طبعا، من الأبسط استخدام الأنبوب نفسه لتحقيق وظائف متشابهة، لنستعرض فيما يلي الخطوات اللازمة لعمليتي الجمع والضرب المتشابهتين بشكل مجمع.
| خطوات لازمة لعملية الجداء | خطوات مشتركة | خطوات لازمة لعملية الجمع |
| 1 – جمع | / | طرح الأسس |
| 2- جداء جزئي | / | إزاحة الجزء الكسرى * |
| | جمع * | |
| | تقييس | |
| | تقريب | |
| | إعادة تقييس | |
ملاحظة: يشير الرمز (*) بجانب اسم العملية إلى تكرار هذه العملية لعدد من المرات.