حقيقة اختيار معالج بمزيد من النوى غالبًا لا يترجم إلى زيادة في الأداء بنفس الدرجة عند استخدام برامج معينة. لماذا تحدث هذه الظاهرة وبالتالي ما أسبابها؟ نشرحها لك بالتفصيل.
أحد أسباب استخدام إصدارات أحدث من البرامج بمرور الوقت هو أنها مصممة للاستفادة بشكل أفضل من المعالجات ذات العدد الأساسي الأعلى. دعونا لا ننسى أنه مع مرور الوقت ، يتزايد عدد هؤلاء في وحدات المعالجة المركزية. ومع ذلك ، لماذا لا يرتفع الأداء في البرامج على قدم المساواة؟
البرامج لا تتناسب مع عدد النوى
من المهم أن نأخذ في الاعتبار أن البرامج التي يتم تنفيذها ليس لديها القدرة على تقسيم عملياتها أو مهامها النشطة في أي لحظة معينة ، وفقًا لعدد سلاسل التنفيذ التي لدينا في منطقتنا. وحدة المعالجة المركزية:. أكثر من أي شيء آخر يرجع إلى حقيقة أن هذا التقسيم واضح في كود البرنامج ، أي أنه نتاج مهارة المبرمج وتصميم التطبيق.
في الواقع ، ما يهم عند ترميز برنامج ليس تحسينه من أجل استخدام أكبر عدد ممكن من النوى ، بل من أجل زمن الانتقال. فهم الأخير على أنه الوقت الذي يستغرقه المعالج لإكمال مهمة تقاس بوحدات زمنية. وهو أن أداء وحدة المعالجة المركزية يتكون من إكمال معظم المهام في أقصر وقت ممكن. والتي ستعتمد على الهندسة المعمارية الخاصة بك أولاً وسرعة الساعة الخاصة بك ثانيًا.
ومع ذلك ، ما يهمنا فيما يتعلق بوقت الاستجابة هو معرفة عدد المهام التي يمكن أن تنتهي في فترة معينة ، وهو عبء العمل وهذا سيعتمد على الموقف والطريقة التي تمت كتابة البرامج بها. بمعنى آخر ، لا يعتمد الأداء على الأجهزة فحسب ، بل على مدى جودة أو ضعف كتابة البرنامج.
تقسيم العمل في عدة مراكز
الآن ، إذا قمنا بزيادة عدد النوى في نظام ما ، فسيصبح من الممكن تقسيم العمل إلى أجزاء وإتمامه بشكل أسهل. هذا هو المكان الذي تأتي فيه صيغة T / N ، حيث T هو عدد المهام التي يجب تنفيذها و N هو عدد مؤشرات التنفيذ التي يمكن للنظام تنفيذها. من الواضح أنه يمكننا تحميل أكبر عدد ممكن من الوظائف على عدد قليل من النوى وإجبارهم على إصلاحها. تكمن المشكلة في أن هذا الإجراء يأتي بنتائج عكسية لأنه يفيد معظم وحدات المعالجة المركزية الحديثة ، والتي تتمتع بأداء أعلى بشكل فردي في كل نواة.
ومع ذلك ، فإن تقسيم العمل بين النوى المختلفة هو عمل إضافي يُعطى عادةً إلى جوهر يعمل كموصل ويتعين عليه القيام بالمهام التالية:
- يجب عليك إنشاء عمليات وقوائم مهام والتحكم فيها جيدًا في جميع الأوقات.
- يجب أن يعرفوا كيفية التنبؤ في جميع الأوقات عندما تبدأ مهمة ما وتنتهي ، بما في ذلك الوقت المستغرق لإنهاء مهمة وبدء أخرى.
- يجب أن تتمتع النوى المختلفة بالقدرة على إرسال إشارة إلى النواة الرئيسية لمعرفة متى تبدأ العملية وتنتهي.
تم اعتماد هذا الحل من قبل SONY و Toshiba و IBM في Cell Broadband Engine ، وهو المعالج المركزي لجهاز PS3 حيث كان هناك نواة رئيسية مسؤولة عن توجيه الباقي. على الرغم من أنه تم اعتماده من قبل Atari Jaguar. بالنسبة لـ PS4 SONY لم تكرر هذا النموذج مرة أخرى ولم يقم أحد بتنفيذه على جهاز الكمبيوتر لأنه كابوس ، ومع ذلك ، فهي الطريقة الأكثر فعالية لتقسيم العمل.
لا يمكن تشغيل كل شيء على نوى متعددة
إذا سألنا أنفسنا عما إذا كان بإمكاننا تقسيم أي مهمة إلى مهام فرعية لتوزيعها في عدد أكبر من النوى إلى أجل غير مسمى ، فإن الإجابة هي لا. على وجه التحديد ، يتعين علينا تصنيف المهام إلى ثلاثة أنواع مختلفة:
- تلك التي يمكن أن تكون متوازية تمامًا ، وبالتالي ، يتم تقسيمها بين النوى المختلفة التي يمتلكها المعالج المركزي.
- المهام التي يمكن تشغيلها جزئيًا بالتوازي.
- أجزاء من الكود لا يمكن تنفيذها بالتوازي.
في الحالة الأولى ، يتم تطبيق T / N على 100٪ ، في الحالة الثانية ، ندخل بالفعل ما يسمى بقانون Amdahl حيث يكون التسارع الناتج عن زيادة عدد النوى جزئيًا وفي الحالة الثالثة نحتاج ببساطة إلى كل قوة جوهر واحد لهذه المهمة ،
ما الذي يميز وحدة المعالجة المركزية عن وحدة معالجة الرسومات في تعدد مؤشرات الترابط
هنا نصل إلى نقطة تفاضلية ، كل وحدة معالجة الرسوميات: تحتوي شريحة الرسومات أو شريحة الرسومات على وحدة تحكم مسؤولة عن قراءة قوائم الأوامر وتوزيعها بين نوى GPU المختلفة وحتى بين الوحدات المختلفة. يعد هذا تنفيذًا على مستوى الأجهزة للحالة السابقة ويعمل بشكل مثالي في أي تكوين تريد التشبع فيه ، طالما كان هناك عمل ، وبالتالي احتفظ بأكبر عدد ممكن من النوى. ومع ذلك ، يجب أن نفهم أن مؤشر ترابط مفهوم التنفيذ في وحدة معالجة الرسومات يتوافق دائمًا مع البيانات المقابلة وقائمة الإرشادات الخاصة بها. أي بكسل أو رأس أو أي بيانات.
مما يجعل من السهل موازنتها. أي ، إذا أردنا قلي بيضة ، فستكون العملية في وحدة المعالجة المركزية هي قلي البيضة ، والتي ستكون متسلسلة تمامًا. من ناحية أخرى ، في شريحة الرسومات ، تتمثل المهمة ببساطة في تسخين الزيت أو إضافة بيضة إلى المقلاة. كل هذا لن يؤدي إلى تسريع قلي بيضة واحدة ، ولكن العديد منها ، وهذا هو السبب في أن وحدات معالجة الرسومات أفضل لمهام مثل حساب ملايين المضلعات أو وحدات البكسل في نفس الوقت ، ولكن ليس للمهام المتسلسلة.