المعالجة المتعددة (هندسة الحاسوب)

في هندسة الحاسوب ، تعد المعالجة المتعددة هي قدرة وحدة المعالجة المركزية (CPU) (أو نواة واحدة في معالج متعدد النوى ) على توفير خيوط تنفيذ متعددة .
ملخص
ازدادت شعبية نموذج المعالجة متعددة الخيوط مع توقف الجهود المبذولة لاستغلال التوازي على مستوى التعليمات منذ أواخر التسعينيات. وقد أتاح ذلك لمفهوم الحوسبة الإنتاجية الظهور مجددًا من مجال معالجة المعاملات المتخصص . ورغم صعوبة تسريع خيط واحد أو برنامج واحد، فإن معظم أنظمة الحاسوب تُنفذ مهامًا متعددة بين خيوط أو برامج متعددة. وبالتالي، فإن التقنيات التي تُحسّن إنتاجية جميع المهام تُؤدي إلى تحسينات شاملة في الأداء.
هناك تقنيتان رئيسيتان للحوسبة عالية الإنتاجية وهما تعدد الخيوط وتعدد العمليات .
المزايا
إذا واجه أحد الخيوط عددًا كبيرًا من حالات عدم العثور على البيانات في ذاكرة التخزين المؤقت ، فبإمكان الخيوط الأخرى الاستمرار في الاستفادة من موارد الحوسبة غير المستخدمة، مما قد يؤدي إلى تسريع التنفيذ الإجمالي، حيث كانت هذه الموارد ستظل خاملة لو تم تنفيذ خيط واحد فقط. كذلك، إذا لم يتمكن خيط من استخدام جميع موارد الحوسبة الخاصة بوحدة المعالجة المركزية (لأن التعليمات تعتمد على نتائج بعضها البعض)، فإن تشغيل خيط آخر قد يمنع هذه الموارد من أن تصبح خاملة.
العيوب
قد تتداخل الخيوط المتعددة مع بعضها البعض عند مشاركة موارد الأجهزة مثل الذاكرة المؤقتة أو مخازن الترجمة المؤقتة (TLBs). ونتيجة لذلك، لا تتحسن أوقات تنفيذ الخيط الواحد، بل قد تتدهور، حتى عند تنفيذ خيط واحد فقط، بسبب انخفاض الترددات أو مراحل خط الأنابيب الإضافية اللازمة لاستيعاب أجهزة تبديل الخيوط.
تتفاوت الكفاءة الإجمالية؛ إذ تدّعي إنتل تحسينًا يصل إلى 30% باستخدام تقنية Hyper-Threading الخاصة بها ، [ 1 ] بينما يحقق برنامج اصطناعي يُنفّذ حلقة من عمليات الفاصلة العائمة غير المُحسّنة تحسينًا في السرعة بنسبة 100% عند تشغيله بالتوازي. من جهة أخرى، لا تُعاني برامج لغة التجميع المُعدّلة يدويًا باستخدام امتدادات MMX أو AltiVec ، والتي تُجري جلبًا مُسبقًا للبيانات (كما قد يفعل مُشفّر فيديو جيد)، من أخطاء ذاكرة التخزين المؤقت أو موارد الحوسبة الخاملة. وبالتالي، لا تستفيد هذه البرامج من تعدد الخيوط في الأجهزة، بل قد تشهد انخفاضًا في الأداء نتيجة التنافس على الموارد المشتركة.
من وجهة نظر البرمجيات، يُعد دعم الأجهزة للمعالجة المتعددة أكثر وضوحًا للبرمجيات، مما يتطلب تغييرات أكبر في كلٍ من برامج التطبيقات وأنظمة التشغيل مقارنةً بالمعالجة المتعددة. غالبًا ما تتوازى تقنيات الأجهزة المستخدمة لدعم المعالجة المتعددة مع تقنيات البرمجيات المستخدمة في تعدد مهام الحاسوب . كما تُعد جدولة الخيوط مشكلة رئيسية في المعالجة المتعددة.
قد يؤدي دمج البيانات من عمليتين إلى تكاليف أعلى بكثير مقارنةً بمعالجة البيانات نفسها على خيط معالجة واحد، وقد تصل هذه التكاليف إلى ضعفين أو أكثر بسبب النفقات الإضافية مثل التواصل بين العمليات والمزامنة. [ 2 ] [ 3 ] [ 4 ]
الأنواع
يحدث أبسط أنواع تعدد الخيوط عندما يستمر خيط واحد في العمل حتى يتم حظره بسبب حدث يُسبب عادةً تأخيرًا طويلًا. قد يكون هذا التأخير ناتجًا عن خطأ في ذاكرة التخزين المؤقت، مما يستدعي الوصول إلى ذاكرة خارجية، وهو ما قد يستغرق مئات دورات المعالج لاسترجاع البيانات. بدلًا من انتظار حل التأخير، يقوم المعالج متعدد الخيوط بتحويل التنفيذ إلى خيط آخر جاهز للعمل. وعندما تصل بيانات الخيط السابق، يُعاد الخيط السابق إلى قائمة الخيوط الجاهزة للعمل .
على سبيل المثال:
- الدورة i : يتم إصدار التعليمة j من الخيط A.
- الدورة i + 1 : يتم إصدار التعليمة j + 1 من الخيط A.
- الدورة i + 2 : يتم إصدار التعليمة j + 2 من الخيط A ، وهي تعليمة تحميل مفقودة في جميع الذاكرات المؤقتة.
- الدورة i + 3 : تم استدعاء جدولة الخيوط، والتبديل إلى الخيط B.
- الدورة i + 4 : يتم إصدار التعليمة k من الخيط B.
- الدورة i + 5 : يتم إصدار التعليمة k + 1 من الخيط B.
من الناحية النظرية، يشبه هذا المفهوم تعدد المهام التعاوني المستخدم في أنظمة التشغيل الآنية ، حيث تتخلى المهام طواعيةً عن وقت التنفيذ عندما تحتاج إلى انتظار حدث معين. يُعرف هذا النوع من تعدد الخيوط باسم تعدد الخيوط الكتلي أو التعاوني أو ذي الحبيبات الخشنة.
يهدف دعم تعدد الخيوط في الأجهزة إلى تمكين التبديل السريع بين خيط مُعلق وآخر جاهز للتنفيذ. ويعني التبديل بين الخيوط تغيير الجهاز لمجموعة سجلات معينة. ولتحقيق هذا الهدف، يتم تكرار مكونات الجهاز الخاصة بسجلات البرنامج المرئية، بالإضافة إلى بعض سجلات التحكم في المعالج (مثل عداد البرنامج). فعلى سبيل المثال، للتبديل السريع بين خيطين، يُصمم المعالج بمجموعتين من السجلات.
يُتيح دعم الأجهزة الإضافية للمعالجة المتعددة إمكانية تبديل الخيوط في دورة معالجة واحدة، مما يُحسّن الأداء. كما يُتيح هذا الدعم لكل خيط العمل بشكل مستقل دون مشاركة موارد الأجهزة مع الخيوط الأخرى، مما يُقلل من التغييرات البرمجية المطلوبة في التطبيق ونظام التشغيل لدعم المعالجة المتعددة.
تحتوي العديد من عائلات المتحكمات الدقيقة والمعالجات المدمجة على بنوك سجلات متعددة تسمح بالتبديل السريع للسياق عند حدوث مقاطعات. ويمكن اعتبار هذه المخططات نوعًا من تعدد الخيوط المتداخلة بين خيط برنامج المستخدم وخيوط المقاطعات.
المعالجة المتعددة الدقيقة
يهدف تعدد الخيوط الدقيق إلى إزالة جميع حالات توقف البيانات الناتجة عن تبعية البيانات من مسار التنفيذ . وبما أن كل خيط مستقل نسبيًا عن الخيوط الأخرى، تقل احتمالية حاجة تعليمة في مرحلة معينة من مراحل مسار التنفيذ إلى مخرجات تعليمة سابقة في المسار. من الناحية النظرية، يشبه هذا المفهوم تعدد المهام الاستباقي المستخدم في أنظمة التشغيل؛ ويمكن تشبيه ذلك بأن الفترة الزمنية المخصصة لكل خيط نشط تمثل دورة معالجة واحدة.
على سبيل المثال:
- الدورة i + 1 : يتم إصدار تعليمة من الخيط B.
- الدورة i + 2 : يتم إصدار تعليمة من الخيط C.
كان يُطلق على هذا النوع من المعالجة المتعددة في البداية اسم المعالجة الأسطوانية، حيث تمثل أجزاء الأسطوانة مراحل خط الأنابيب وخيوط التنفيذ الخاصة بها. أما المعالجة المتعددة المتداخلة، أو الاستباقية، أو الدقيقة، أو المقسمة زمنيًا، فهي مصطلحات أحدث.
إضافةً إلى تكاليف الأجهزة المذكورة في نوع المعالجة المتعددة الكتلية، تتضمن المعالجة المتعددة المتداخلة تكلفة إضافية تتمثل في تتبع كل مرحلة من مراحل خط الأنابيب لمعرف الخيط الخاص بالتعليمات التي تعالجها. كذلك، ونظرًا لزيادة عدد الخيوط التي تُنفذ بالتزامن في خط الأنابيب، يلزم أن تكون الموارد المشتركة، مثل ذاكرة التخزين المؤقت وذاكرة الترجمة السريعة، أكبر حجمًا لتجنب التداخل بين الخيوط المختلفة.
المعالجة المتعددة المتزامنة
يُعدّ تعدد الخيوط الأكثر تطورًا خاصًا بالمعالجات فائقة القياس . فبينما يُصدر المعالج فائق القياس العادي تعليمات متعددة من خيط واحد في كل دورة معالجة، يُمكنه في تعدد الخيوط المتزامن (SMT) إصدار تعليمات من خيوط متعددة في كل دورة معالجة. ونظرًا لمحدودية التوازي على مستوى التعليمات في أي خيط ، يسعى هذا النوع من تعدد الخيوط إلى استغلال التوازي المتاح عبر خيوط متعددة لتقليل الهدر الناتج عن خانات الإصدار غير المستخدمة.
على سبيل المثال:
- الدورة i : يتم إصدار التعليمات j و j + 1 من الخيط A والتعليمات k من الخيط B في وقت واحد.
- الدورة i + 1 : يتم إصدار التعليمات j + 2 من الخيط A ، والتعليمات k + 1 من الخيط B ، والتعليمات m من الخيط C في وقت واحد.
- الدورة i + 2 : يتم إصدار التعليمات j + 3 من الخيط A والتعليمات m + 1 و m + 2 من الخيط C في وقت واحد.
ولتمييز الأنواع الأخرى من تعدد الخيوط عن SMT، يتم استخدام مصطلح " تعدد الخيوط الزمني " للإشارة إلى متى يمكن إصدار التعليمات من خيط واحد فقط في كل مرة.
إضافةً إلى تكاليف الأجهزة المذكورة في تقنية المعالجة المتعددة المتداخلة، تتضمن تقنية المعالجة المتعددة المتزامنة تكلفة إضافية تتمثل في تتبع كل مرحلة من مراحل خط الأنابيب لمعرف الخيط لكل تعليمة قيد المعالجة. ومرة أخرى، يجب تحديد حجم الموارد المشتركة، مثل ذاكرة التخزين المؤقت وذاكرة الترجمة السريعة، بما يتناسب مع العدد الكبير من الخيوط النشطة قيد المعالجة.
وتشمل التطبيقات DEC (لاحقًا Compaq ) EV8 (لم يكتمل)، وتقنية Intel Hyper-Threading ، و IBM POWER5 / POWER6 / POWER7 / POWER8 / POWER9 ، وIBM z13 / z14 / z15 ، و Sun Microsystems UltraSPARC T2 ، و Cray XMT ، و AMD Bulldozer و Zen microarchitectures.
تفاصيل التنفيذ
يُعدّ مُجدوِل الخيوط مجالًا بحثيًا رئيسيًا، إذ يجب عليه اختيار الخيوط الجاهزة للتنفيذ بسرعة من بين قائمة الخيوط الجاهزة، فضلًا عن الحفاظ على قوائم الخيوط الجاهزة والخيوط المتوقفة. ومن المواضيع الفرعية المهمة أنظمة تحديد أولويات الخيوط المختلفة التي يمكن للمُجدوِل استخدامها. ويمكن تنفيذ مُجدوِل الخيوط برمجيًا بالكامل، أو عتاديًا بالكامل، أو كمزيج من البرمجيات والعتاد.
مجال بحث آخر هو نوع الأحداث التي يجب أن تتسبب في تبديل الخيوط: أخطاء ذاكرة التخزين المؤقت، والاتصال بين الخيوط، وإكمال DMA ، وما إلى ذلك.
إذا كانت آلية تعدد الخيوط تُكرر جميع البيانات المرئية للبرمجيات، بما في ذلك سجلات التحكم ذات الامتيازات وذاكرة الترجمة السريعة (TLB)، فإنها تُمكّن من إنشاء آلات افتراضية لكل خيط. وهذا يسمح لكل خيط بتشغيل نظام تشغيل خاص به على نفس المعالج. من ناحية أخرى، إذا تم حفظ بيانات وضع المستخدم فقط، فإن ذلك يقلل من متطلبات الأجهزة، مما يسمح بتفعيل عدد أكبر من الخيوط في وقت واحد بنفس مساحة الشريحة أو التكلفة.
انظر أيضاً
مراجع
- ↑ "تقنية Intel Hyper-Threading، دليل المستخدم التقني" (ملف PDF) . صفحة 13. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 21-08-2010.
- ↑ سيلبرشاتز، أبراهام؛ جالفين، بيتر ب.؛ غاني، جريج (29 يوليو 2008). مفاهيم أنظمة التشغيل . وايلي. ISBN 978-0470128725.
- ↑ تنظيم وتصميم الحاسوب، إصدار MIPS: واجهة الأجهزة/البرمجيات (سلسلة مورغان كوفمان في هندسة وتصميم الحاسوب) . مورغان كوفمان. 2013. ISBN 978-0124077263.
- ↑ البرمجة المتوازية: تقنيات وتطبيقات باستخدام محطات العمل الشبكية والحواسيب المتوازية . بيرسون. 2005. ISBN 978-0131405639.
روابط خارجية
- دراسة استقصائية للمعالجات ذات تعدد الخيوط الصريح ، مجلة ACM ، مارس 2003، بقلم ثيو أونغيرر، وبوروت روبي، ويوري سيلك
- نظام التشغيل | الفرق بين تعدد المهام، وتعدد الخيوط، وتعدد المعالجة ، GeeksforGeeks، 6 سبتمبر 2018.
- وحدات المعالجة المركزية
- معالجة التعليمات
- المعالجات الدقيقة
- الحوسبة المتوازية
- الخيوط (الحوسبة)
