سؤال

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

هل كانت مفيدة؟

المحلول

الشيء الرئيسي هو تقدير بنية الماكينة في الواقع.

"جوهر" هو وحدة المعالجة المركزية مع ذاكرة التخزين المؤقت مع اتصال بذاكرة النظام. معظم بنيات الماكينة متعددة المعالجة المتماثلة ، مما يعني أن ذاكرة النظام يمكن الوصول إليها بنفس القدر من قبل جميع النوى في النظام.

تقوم معظم أنظمة التشغيل بتشغيل موضوع جدولة على كل نواة (Linux لا). يحتوي المجدول على قائمة من المواضيع التي تتحملها ، وسيقوم بتشغيلها بأفضل ما في وسعها على النخاع الذي يتحكم فيه. القواعد التي يستخدمها لاختيار الخيط الذي سيتم تشغيله سيكون إما Round Robin ، أو قائم على الأولوية ، إلخ ؛ أي جميع قواعد الجدولة العادية. حتى الآن ، يشبه المجدول الذي ستجده في جهاز كمبيوتر أساسي واحد. إلى حد ما ، يكون كل جدولة مستقلة عن جميع المحدودين الآخرين.

ومع ذلك ، فإن هذه بيئة SMP ، مما يعني أنه لا يهم حقًا ما الذي يعمل الأساسية. وذلك لأن جميع النوى يمكنها رؤية جميع الذاكرة ، ويتم تخزين جميع التعليمات البرمجية والبيانات لجميع مؤشرات الترابط في النظام بأكمله في تلك الذاكرة المفردة.

لذلك يتحدث المجدولون فيما بينهم لمساعدة بعضهم البعض. يمكن للمجدولات التي تحتوي على العديد من المواضيع التي يمكن تشغيلها تمرير مؤشر ترابط إلى جدولة يتم استخدام جوهرها. هم موازنة التحميل داخل الجهاز. "تمرير مؤشر ترابط أكثر" يعني نسخ بنية البيانات التي تصف مؤشر الترابط (معرف مؤشر الترابط ، أي البيانات ، أي رمز).

هذا عن ذلك. نظرًا لأن التواصل الوحيد بين النوى هو عبر الذاكرة ، فإنه يعتمد على نظام الإقصاء المتبادل الفعال المتاح ، وهو شيء يجب على الأجهزة السماح به.

الصعوبة

لذلك قمت برسم صورة بسيطة للغاية ، ولكن في الممارسة العملية ، فإن الذاكرة ليست متناظرة تمامًا. يتم تصنيع SMP في هذه الأيام فوق تضخيم النقل و QPI.

لقد ولت منذ فترة طويلة الأيام التي كان لدى النوى حقًا وصول متساوٍ إلى ذاكرة النظام على المستوى الإلكتروني. في أدنى طبقة من الهندسة المعمارية الخاصة بهم AMD هي numa بحتة ، و Intel تقريبا.

في الوقت الحاضر ، يتعين على جوهر إرسال طلب إلى النوى الأخرى عبر رابط تسلسلي عالي السرعة (تضخم أو QPI) يطلب منهم إرسال بيانات لديهم في ذاكرتهم المرفقة. قامت Intel و AMD بعمل جيد لجعلها تبدو مقنعة مثل SMP في الحالة العامة ، لكنها ليست مثالية. تستغرق البيانات في الذاكرة المرفقة بلواة مختلفة وقتًا أطول للحصول على. إنه معقد بجنون - النوى الآن هي العقد على الشبكة - ولكن هذا ما كان عليهم القيام به للحصول على أداء محسّن.

لذلك يأخذ المجدولون ذلك في الاعتبار عند اختيار ما يجب أن يعمل عليه الأساسية. سيحاولون وضع مؤشر ترابط على قلب الأقرب إلى الذاكرة التي تحمل البيانات التي يمكن للمعلومات الوصول إليها.

المستقبل مرة أخرى

إذا كان من الممكن تفكيك النظام الإيكولوجي للبرامج في العالم ، فسيتمكن شباب الأجهزة من توفير الكثير من المساحة على السيليكون ، وسيكون لدينا أنظمة أسرع أكثر كفاءة. وقد تم ذلك من قبل؛ كانت المحولون محاولة جيدة في بنية NUMA بدقة.

إن NUMA وتوصيل العمليات المتسلسلة سيجعل اليوم أسهل بكثير في كتابة برامج متعددة الخيوط التي تتماسك بسهولة شديدة وتعمل بشكل أكثر كفاءة من مجموعات الذاكرة المشتركة لـ SMP اليوم.

كانت SMP في الواقع طريقة رخيصة ومشرقة لجمع النوى المتعددة ، وكانت التكلفة من حيث صعوبات تطوير البرمجيات والأجهزة غير الفعالة عالية للغاية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top