في تطبيق متعدد مؤشرات الترابط ، هل سيكون ترتيب متعدد النوى أو متعدد المعالجات أفضل؟

StackOverflow https://stackoverflow.com/questions/2767795

سؤال

لقد قرأت الكثير حول هذا الموضوع بالفعل هنا (على سبيل المثال ، stackoverflow.com/questions/1713554/threads-processes-vs-multithreading-multi-core-multiprocessor-how- they-are أو متعدد CPU ومتعدد النواة وموثوقية مفرطة) وفي مكان آخر (على سبيل المثال ، ixbtlabs.com/articles2/cpu/rmmt-l2-cache.html أو software.intel.com/en-us/articles/multi-core-introduction/) ، لكنني ما زلت غير متأكد من زوجين يبدو واضحة للغاية. لذلك اعتقدت أنني سأسأل فقط.

(1) هو معالج متعدد النواة يكون فيه كل جوهر يكرس ذاكرة التخزين المؤقت بشكل فعال مثل نظام المعالجات المتعددة (متوازنة بالطبع لسرعة المعالج وحجم ذاكرة التخزين المؤقت وما إلى ذلك)؟

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

شكرا للمساعدة!

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

المحلول

حجم ذاكرة التخزين المؤقت مهم. من أجل هذا ، أفترض معالجات x86 واستخدام فقط ذاكرة التخزين المؤقت L2 ، والتي تتم مشاركتها على المعالجات الأساسية المزدوجة.

إذا كنت تقارن 2 معالجتين أساسيتين مع معالج ثنائي ثنائي واحد ، فإن المعالجات الأساسية المفردة على حد سواء لديها نفس كمية ذاكرة التخزين المؤقت للبيانات (تعمل بنفس السرعة) ، فأنت لديك المزيد من ذاكرة التخزين المؤقت ، لذلك يمكن أن تتناسب المزيد من الأجزاء من الصور في ذاكرة التخزين المؤقت ، ومن المحتمل جدًا أنه إذا كان على معالجة بيانات الصورة تحميل و/أو تخزينها إلى هذه البيانات مرارًا وتكرارًا ، فإن هذا سيستمر بسرعة أكبر في نفس سرعة الساعة.

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

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

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

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

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