الصفحة الرئيسية / متنوع / دعم لتقنية الخيوط الفائقة. تقنية Hyper-Threading من Intel. الإنتاجية لا تكفي أبدًا

دعم لتقنية الخيوط الفائقة. تقنية Hyper-Threading من Intel. الإنتاجية لا تكفي أبدًا

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

Intel Hyper Threading: ما هو؟
إذا لم تتعمق في غابة مصطلحات الكمبيوتر ، ولكن ضعها بلغة بسيطة ، إذن هذه التكنولوجياتم تصميمه لزيادة تدفق الأوامر التي تتم معالجتها في وقت واحد بواسطة وحدة المعالجة المركزية. تستخدم رقائق المعالجات الحديثة ، كقاعدة عامة ، 70٪ فقط من إمكانيات الحوسبة المتاحة. الباقي يبقى ، إذا جاز التعبير ، في الاحتياط. بالنسبة لمعالجة تدفق البيانات ، في معظم الحالات ، يتم استخدام مؤشر ترابط واحد فقط ، على الرغم من حقيقة أن النظام يستخدم معالجًا متعدد النواة.

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

مرجع التاريخ
دعونا نتعمق قليلاً في تاريخ هذا التطور. ظهر دعم Hyper Threading لأول مرة في معالجات Intel Pentium 4. لاحقًا ، استمر تطبيق هذه التقنية في سلسلة Intel Core iX (يرمز X لسلسلة المعالجات هنا). وتجدر الإشارة إلى أنه لسبب ما غائب في خط رقائق المعالج Core 2. صحيح أن الزيادة في الإنتاجية كانت ضعيفة نوعًا ما: في مكان ما عند مستوى 15-20٪. يشير هذا إلى أن المعالج لم يكن لديه قوة المعالجة اللازمة ، وأن التكنولوجيا التي تم إنشاؤها كانت عمليا سابقة لعصرها. اليوم ، يتوفر دعم تقنية Hyper Threading بالفعل في جميع الرقائق الحديثة تقريبًا. لزيادة قوة المعالج المركزي ، تستخدم العملية نفسها 5٪ فقط من السطح البلوري ، مع ترك مساحة لمعالجة الأوامر والبيانات.

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

كيفية تمكين Hyper Threading في BIOS؟
لقد توصلنا بالفعل إلى معرفة القليل عن ماهية تقنية Hyper Threading وتعرّفنا على تاريخ تطورها. لقد اقتربنا من فهم تقنية Hyper Threading. كيف يتم تفعيل هذه التقنية لاستخدامها في المعالج؟ هنا يتم كل شيء بكل بساطة. يجب عليك استخدام النظام الفرعي لإدارة BIOS. يتم إدخال النظام الفرعي باستخدام مفاتيح Del و F1 و F2 و F3 و F8 و F12 و F2 + Del وما إلى ذلك. إذا كنت تستخدم جهاز كمبيوتر محمولاً من نوع Sony Vaio ، فسيكون لديهم مدخلات محددة عند استخدام مفتاح ASSIST المخصص. في إعدادات BIOS ، إذا كان المعالج الذي تستخدمه يدعم تقنية Hyper Threading ، فيجب أن يكون هناك خط إعداد خاص. في معظم الحالات ، تبدو مثل Hyper Threading Technology ، وفي بعض الأحيان تبدو وكأنها وظيفة. اعتمادًا على مطور النظام الفرعي وإصدار BIOS ، يمكن احتواء إعداد هذه المعلمة إما في القائمة الرئيسية أو في الإعدادات المتقدمة. لتمكين هذه التقنية ، يجب عليك الدخول إلى قائمة الخيارات وتعيين القيمة على ممكّن. بعد ذلك ، تحتاج إلى حفظ التغييرات التي تم إجراؤها وإعادة تشغيل النظام.

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

تتضمن العديد من معالجات Intel وحدات ذات تنسيق دعم مفرط-تقنية الخيط ، والتي ، وفقًا لفكرة المطورين ، يجب أن تساعد في زيادة أداء الشريحة وتسريع الكمبيوتر ككل. ما هي تفاصيل هذا الحل من شركة أمريكية؟ كيف يمكنك الاستفادة من خيوط المعالجة المتعددة؟

أساسيات التكنولوجيا

دعنا نلقي نظرة على التفاصيل الأساسية حول Hyper-Threading. ما هذه التكنولوجيا؟ تم تطويره بواسطة Intel وتم تقديمه لأول مرة للجمهور في عام 2001. كان الغرض من إنشائه هو زيادة أداء الخوادم. المبدأ الرئيسي المطبق في Hyper-Threading هو توزيع حسابات المعالج على عدة خيوط. علاوة على ذلك ، يكون هذا ممكنًا حتى إذا تم تثبيت نواة واحدة فقط على النوع المقابل من الدوائر المصغرة (في المقابل ، إذا كان هناك 2 أو أكثر منها ، وتم توزيع الخيوط الموجودة في المعالج بالفعل ، فإن التكنولوجيا تكمل هذه الآلية بنجاح).

يتم ضمان تشغيل شريحة الكمبيوتر الرئيسية ضمن عدة خيوط عن طريق إنشاء نسخ من الحالات المعمارية في سياق العمليات الحسابية. في هذه الحالة ، يتم استخدام نفس مجموعة الموارد الموجودة على الشريحة. إذا كان التطبيق يستخدم القدرة المناسبة ، فسيتم تنفيذ العمليات المهمة عمليًا بشكل أسرع. من المهم أيضًا أن يتم دعم التقنية المعنية بواسطة نظام الإدخال / الإخراج للكمبيوتر - BIOS.

تمكين خيوط المعالجة المتعددة

إذا كان المعالج المثبت في الكمبيوتر يدعم المعيار المناسب ، فعادة ما يتم تنشيطه تلقائيًا. ولكن في بعض الحالات ، يجب عليك تنفيذ الإجراءات اللازمة يدويًا حتى تعمل تقنية Hyper-Threading. كيف يتم تمكينه؟ بسيط جدا.

تحتاج إلى إدخال واجهة BIOS الرئيسية. للقيام بذلك ، في بداية تشغيل الكمبيوتر ، تحتاج إلى الضغط على مفتاح DEL ، أحيانًا - F2 ، F10 ، في كثير من الأحيان - مفاتيح أخرى ، لكن المفتاح المطلوب يظهر دائمًا في أحد أسطر النص المعروضة على الشاشة بعد ذلك مباشرة تشغيل جهاز الكمبيوتر. في واجهة BIOS ، تحتاج إلى العثور على عنصر Hyper-Threading: في إصدارات نظام الإدخال / الإخراج التي تدعمه ، عادةً ما يكون موجودًا في مكان بارز. بعد تحديد الخيار المناسب ، يجب عليك الضغط على Enter وتنشيطه ، ووضع علامة عليه على أنه ممكّن. إذا تم تعيين هذا الوضع بالفعل ، فإن تقنية Hyper-Threading تعمل. يمكنك استخدام كل مزاياها. بعد تنشيط التقنية في الإعدادات ، يجب عليك حفظ جميع الإدخالات في BIOS عن طريق تحديد Save and Exit Setup. بعد ذلك ، سيتم إعادة تشغيل الكمبيوتر في الوضع عندما يعمل المعالج بدعم Hyper-Theading. وبالمثل ، يتم تعطيل Hyper-Threading. للقيام بذلك ، حدد خيارًا آخر في العنصر المقابل - معطل واحفظ الإعدادات.

بعد دراسة كيفية تمكين Hyper-Threading وإلغاء تنشيط هذه التقنية ، دعنا نلقي نظرة فاحصة على ميزاتها.

وحدات المعالجة المركزية مع دعم خيوط المعالجة المتعددة

أول معالج تم تطبيق مفهوم الشركة عليه ، حسب بعض المصادر ، هو Intel Xeon MP ، المعروف أيضًا باسم Foster MP. تشبه هذه الرقاقة في عدد من المكونات المعمارية لبنتيوم 4 ، والتي طبقت أيضًا لاحقًا التقنية المعنية. بعد ذلك ، تم تنفيذ ميزة الحوسبة متعددة الخيوط على معالجات خادم Xeon مع قلب Prestonia.

إذا تحدثنا عن الانتشار الحالي لـ Hyper-Threading - ما هي "المحترفين" الذين يدعمونها؟ من بين الرقائق الأكثر شيوعًا من هذا النوع تلك التي تنتمي إلى عائلات Core و Xeon. هناك أيضًا معلومات تفيد بأن خوارزميات مماثلة يتم تنفيذها في معالجات مثل Itanium و Atom.

بعد دراسة المعلومات الأساسية حول Hyper-Threading ، المعالجات بدعمها ، دعنا نلقي نظرة على الحقائق الأكثر روعة حول تاريخ تطور التكنولوجيا.

تاريخ التنمية

كما أشرنا أعلاه ، عرضت Intel المفهوم المعني للجمهور في عام 2001. لكن الخطوات الأولى في إنشاء التكنولوجيا تمت في أوائل التسعينيات. لاحظ مهندسو الشركة الأمريكية عدم الاستفادة الكاملة من موارد معالجات الكمبيوتر عند تنفيذ عدد من العمليات.

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

ومع ذلك ، اتفق معظم المتخصصين في تكنولوجيا المعلومات على أنه حتى لو لم يكن 70٪ من قدرة المعالج معطلة ، إلا أن هناك قدرًا كبيرًا جدًا منهم.

المهمة الرئيسية للمطورين

قررت إنتل تصحيح هذا الوضع من خلال نهج جديد نوعيًا لضمان كفاءة شرائح الكمبيوتر الرئيسية. تم اقتراح إنشاء تقنية من شأنها أن تسهم في استخدام أكثر فعالية لقدرات المعالجات. في عام 1996 ، بدأ متخصصو إنتل تطويرها العملي.

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

تمكنت Intel من حل المشكلة. في البداية ، كانت التكنولوجيا تسمى ويلاميت. في عام 1999 ، تم إدخاله في بنية بعض المعالجات ، وبدأ اختباره. سرعان ما تلقت التكنولوجيا اسمها الحديث - Hyper-Threading. من الصعب تحديد ما كان عليه بالضبط - إعادة تسمية بسيطة أو تعديلات أساسية على النظام الأساسي. نحن نعلم بالفعل المزيد من الحقائق المتعلقة بظهور التكنولوجيا في الأماكن العامة وتنفيذها في نماذج مختلفة من معالجات Intel. من بين أسماء التطوير الشائعة اليوم تقنية Hyper-Threading Technology.

جوانب التوافق مع التكنولوجيا

ما مدى جودة دعم تقنية خيوط المعالجة المتعددة في أنظمة التشغيل؟ ويمكن ملاحظة أنه إذا كنا نتحدث عن الحديث إصدارات Windows، فلن تكون هناك مشاكل للمستخدم للاستفادة الكاملة من مزايا تقنية Intel Hyper-Threading Technology. بالطبع ، من المهم أيضًا أن يدعم نظام الإدخال / الإخراج التكنولوجيا - لقد تحدثنا عن هذا أعلاه.

عوامل البرمجيات والأجهزة

فيما يتعلق بالإصدارات الأقدم من نظام التشغيل - Windows 98 و NT و XP القديم نسبيًا ، فإن الشرط الضروري للتوافق مع Hyper-Threading هو دعم ACPI. إذا لم يتم تنفيذه في نظام التشغيل ، فلن يتعرف الكمبيوتر على جميع التدفقات الحسابية التي يتم تكوينها بواسطة الوحدات النمطية المقابلة. لاحظ أن نظام التشغيل Windows XP ككل يضمن استخدام مزايا التكنولوجيا المعنية. من المرغوب فيه للغاية أيضًا أن يتم تنفيذ خوارزميات مؤشرات الترابط المتعددة في التطبيقات التي يستخدمها مالك الكمبيوتر الشخصي.

في بعض الأحيان قد تحتاج إلى جهاز كمبيوتر - إذا قمت بتثبيت معالجات بدعم Hyper-Threading عليه بدلاً من تلك التي كانت موجودة عليه في الأصل ولم تكن متوافقة مع التقنية. ومع ذلك ، كما هو الحال في أنظمة التشغيل ، لن تكون هناك مشاكل خاصة إذا كان المستخدم لديه جهاز كمبيوتر حديث أو على الأقل مكونات الأجهزة المقابلة لمعالجات Hyper Threading الأولى ، كما أشرنا أعلاه ، تم تنفيذها في خط Core ، وتكييفها إلى ذلك ، تدعم الشرائح الموجودة على اللوحات الأم تمامًا الوظائف المقابلة للرقاقة.

معايير التسريع

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

إذن ، الشروط الأساسية لاستخدام التكنولوجيا بنجاح:

دعم خيوط المعالجة بواسطة نظام الإدخال / الإخراج ؛

توافق اللوحة الأم مع المعالج من النوع المقابل ؛

دعم إحدى التقنيات من خلال نظام التشغيل والتطبيق المحدد الذي يعمل عليها.

إذا لم يكن هناك أي مشاكل معينة في النقطتين الأوليين ، فبالنسبة لتوافق البرامج مع Hyper-Threading ، قد لا تزال هناك بعض التراكبات. ولكن يمكن ملاحظة أنه إذا كان أحد التطبيقات يدعم ، على سبيل المثال ، العمل مع معالجات ثنائية النواة ، فسيكون متوافقًا ومضمونًا تقريبًا مع تقنية Intel.

على الأقل هناك دراسات تؤكد الزيادة في أداء البرامج التي تم تكييفها مع الدوائر الدقيقة ثنائية النواة بحوالي 15-18٪ إذا كانت وحدات Intel Hyper Threading تعمل في المعالج. نحن نعلم بالفعل كيفية تعطيلها (في حالة وجود شك لدى المستخدم حول مدى استصواب استخدام التكنولوجيا). ولكن ربما يكون هناك عدد قليل جدًا من الأسباب الملموسة لظهورها.

فائدة عملية خيوط المعالجة المتعددة

هل أحدثت التكنولوجيا المعنية تأثيرًا ملموسًا على شركة Intel؟ هناك آراء مختلفة حول هذا الموضوع. لكن يلاحظ الكثير من الناس أن تقنية Hyper-Threading أصبحت شائعة جدًا لدرجة أن هذا الحل أصبح لا غنى عنه للعديد من الشركات المصنعة لأنظمة الخوادم ، كما تم استقباله بشكل إيجابي من قبل مستخدمي أجهزة الكمبيوتر العاديين.

معالجة بيانات الأجهزة

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

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

حل المهام المختلفة في وقت واحد

وبالتالي ، فإن المعالجات التي تدعم Hyper-Threading تتكيف بشكل أفضل من الدوائر المصغرة غير المتوافقة معها ، لتعمل في نفس الوقت على تشغيل المتصفح وتشغيل الموسيقى والعمل مع المستندات في نفس الوقت. بالطبع ، لا يشعر المستخدم بكل هذه المزايا عمليًا إلا إذا كانت مكونات البرامج والأجهزة للكمبيوتر الشخصي متوافقة بشكل كافٍ مع وضع التشغيل هذا.

تطورات مماثلة

Hyper-Threading ليست هي التقنية الوحيدة المصممة لتحسين أداء الكمبيوتر من خلال الحوسبة متعددة الخيوط. لديها نظائرها.

على سبيل المثال ، تدعم معالجات POWER5 التي أصدرتها شركة IBM أيضًا تعدد مؤشرات الترابط. أي أن كل عنصر (في المجموع ، تم تثبيت عنصرين متطابقين عليه) يمكنه أداء المهام في خيطين. وهكذا ، تعالج الدائرة المصغرة 4 تدفقات من الحسابات في وقت واحد.

لدى AMD أيضًا بعض الأعمال الرائعة في مجال مفاهيم تعدد مؤشرات الترابط. لذلك ، من المعروف أن بنية البلدوزر تستخدم خوارزميات مشابهة لـ Hyper-Threading. تتمثل إحدى ميزات حل AMD في أن كل من الخيوط تعالج كتل معالج منفصلة. عندما يظل المستوى الثاني شائعًا. يتم تنفيذ مفاهيم مماثلة في هندسة Bobcat التي طورتها AMD ، والتي تم تكييفها لأجهزة الكمبيوتر المحمولة وأجهزة الكمبيوتر الصغيرة.

بالطبع ، يمكن اعتبار نظائرها المباشرة للمفهوم من AMD و IBM و Intel بشروط شديدة. وكذلك مناهج تصميم معمارية المعالجات بشكل عام. لكن المبادئ المطبقة في التقنيات المعنية يمكن اعتبارها متشابهة تمامًا ، والأهداف التي وضعها المطورون فيما يتعلق بتحسين كفاءة أداء الدوائر المصغرة قريبة جدًا من حيث الجوهر ، إن لم تكن متطابقة.

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

فرط خيوط (خيوط المعالجة المفرطة ، "خيوط المعالجة الفائقة"، خيوط المعالجة الفائقة - روس.) - تقنية طورتها الشركة شركة انتل، والذي يسمح لنواة المعالج بتنفيذ تدفقات بيانات أكثر من واحد (عادة اثنين). منذ أن وجد أن المعالج التقليدي في معظم المهام لا يستخدم أكثر من 70% من بين جميع قدرات الحوسبة ، فقد تقرر استخدام تقنية تسمح ، عندما تكون بعض وحدات الحوسبة في وضع الخمول ، بتحميلها باستخدام مؤشر ترابط آخر. هذا يسمح لك بزيادة أداء النواة من 10 إلى 80٪حسب المهمة.

شاهد كيف تعمل خيوط المعالجة المتعددة .

لنفترض أن المعالج يقوم بعمليات حسابية بسيطة وفي نفس الوقت تكون مجموعة التعليمات خاملة و SIMDملحقات.

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

بطبيعة الحال ، لا يصل الخيط الافتراضي إلى النواة الكاملة ، لكن هذا يسمح لك بالتحقيق تقريبًا 100% كفاءة قوة الحوسبة ، تحميل المعالج بالكامل تقريبًا بالعمل ، وعدم تركه خاملاً. مع كل هذا لتنفيذ تقنية HTفقط تقريبا. 5% مساحة إضافية للقالب ، ويمكن في بعض الأحيان إضافة الأداء إليها 50% . تتضمن هذه المنطقة الإضافية كتلًا إضافية من السجلات والتنبؤ بالفروع ، والتي تحسب التدفق حيث يمكن استخدام قوة الحوسبة في لحظة معينة وإرسال البيانات من كتلة عنوان إضافية هناك.

لأول مرة ظهرت التكنولوجيا على المعالجات بنتيوم 4، ولكن لم تكن هناك زيادة كبيرة في الأداء ، لأن المعالج نفسه لم يكن يتمتع بقوة حوسبة عالية. كان النمو في أحسن الأحوال 15-20% ، وفي العديد من المهام ، كان المعالج يعمل بشكل أبطأ بكثير من دونه HT.

ابطئ المعالج بسبب التكنولوجيا فرط خيوط، يحدث إذا:

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

بعد بنتيوم 4, شركة انتلبدأت في استخدام التكنولوجيا فقط من كور i7الجيل الأول ، تخطي السلسلة 2 .

أصبحت قوة المعالجة للمعالجات كافية للتنفيذ الكامل لميزة مؤشرات الترابط دون حدوث ضرر كبير ، حتى للتطبيقات غير المحسّنة. في وقت لاحق، فرط خيوطظهرت على معالجات الطبقة الوسطى وحتى الميزانية والمحمولة. تستخدم في جميع السلاسل أنا الأساسية (i3; معالج i5; i7) و على المعالجات المحمولة ذرة(لا على الاطلاق). ومن المثير للاهتمام أن المعالجات ثنائية النواة ذات HT، الحصول على مكاسب أداء أكبر من استخدام رباعي النواة فرط خيوط، يقف على 75% أربعة نووية كاملة.

ما هي فائدة HyperThreading؟

سيكون مفيدًا للاستخدام بالاقتران مع البرامج المهنية والرسومات والتحليلية والرياضية والعلمية ومحرري الفيديو والصوت والمحفوظات ( Photoshop و Corel Draw و Maya و 3D's Max و WinRar و Sony Vegas &إلخ). جميع البرامج التي تستخدم الكثير من العمليات الحسابية ، HTسيكون بالتأكيد مفيدًا. الحمد لله في 90% الحالات ، تم تحسين هذه البرامج بشكل جيد لاستخدامها.

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

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

على اللوحات الأم التي تدعم ملفات HT، يمكنك دائمًا تعطيل تقنية hyperthreading.

20 يناير 2015 الساعة 07:43 مساءً

المزيد حول خيوط المعالجة المتعددة

  • اختبار أنظمة تكنولوجيا المعلومات ،
  • برمجة

كان هناك وقت كان من الضروري فيه تقييم أداء الذاكرة في سياق تقنية Hyper-threading. توصلنا إلى استنتاج مفاده أن تأثيرها ليس إيجابيا دائما. عندما ظهر مقدار وقت الفراغ ، كانت هناك رغبة في مواصلة البحث والنظر في العمليات الجارية بدقة من دورات الماكينة والبتات ، باستخدام البرمجياتالتنمية الخاصة.

منصة البحث

موضوع التجارب - كمبيوتر محمول ASUS N750JK بمعالج Intel Core i7-4700HQ. تبلغ سرعة الساعة 2.4 جيجا هرتز ، معززة بوضع Intel Turbo Boost حتى 3.4 جيجا هرتز. 16 جيجا بايت مثبتة ذاكرة الوصول العشوائي DDR3-1600 (PC3-12800) تعمل في وضع القناة المزدوجة. نظام التشغيل - مايكروسوفت ويندوز 8.1 64 بت.

الشكل 1 تكوين المنصة المدروسة.

يحتوي معالج النظام الأساسي قيد الدراسة على 4 مراكز ، والتي عند تمكين تقنية Hyper-Threading ، توفر دعم الأجهزة لـ 8 خيوط أو معالجات منطقية. تمرر البرامج الثابتة للنظام الأساسي هذه المعلومات إلى نظام التشغيل عبر جدول ACPI MADT (جدول وصف APIC المتعدد). نظرًا لأن النظام الأساسي يحتوي على وحدة تحكم RAM واحدة فقط ، فلا يوجد SRAT (جدول تقارب موارد النظام) الذي يعلن قرب مراكز المعالج من وحدات التحكم في الذاكرة. من الواضح أن الكمبيوتر المحمول المعني ليس منصة NUMA ، ولكن نظام التشغيل، لأغراض التوحيد ، يعتبره نظام NUMA بنطاق واحد ، كما هو موضح في السطر NUMA Nodes = 1. الحقيقة الأساسية لتجاربنا هي أن ذاكرة التخزين المؤقت لبيانات المستوى الأول يبلغ حجمها 32 كيلو بايت لـ كل من النوى الأربعة. يشترك معالجان منطقيان في نفس النواة في مخابئ L1 و L2.

عملية التحقيق

سنحقق في اعتماد سرعة قراءة كتلة البيانات على حجمها. للقيام بذلك ، سنختار الطريقة الأكثر إنتاجية ، وهي قراءة معاملات 256 بت باستخدام تعليمات VMOVAPD AVX. في المخططات ، يُظهر المحور X حجم الكتلة ، بينما يُظهر المحور Y سرعة القراءة. بالقرب من النقطة X ، المقابلة لحجم ذاكرة التخزين المؤقت L1 ، نتوقع رؤية نقطة انعطاف ، حيث يجب أن ينخفض ​​الأداء بعد خروج الكتلة التي تتم معالجتها من ذاكرة التخزين المؤقت. في اختبارنا ، في حالة تعدد مؤشرات الترابط ، يعمل كل من الخيوط الـ 16 التي تم بدء تشغيلها مع نطاق عناوين منفصل. للتحكم في تقنية Hyper-Threading داخل أحد التطبيقات ، يستخدم كل مؤشر ترابط وظيفة SetThreadAffinityMask API ، والتي تحدد قناعًا يتوافق فيه كل معالج منطقي مع بت واحد. تسمح قيمة واحدة للبت باستخدام المعالج المحدد بواسطة مؤشر ترابط محدد ، وتحظره القيمة الصفرية. بالنسبة لـ 8 معالجات منطقية للمنصة المدروسة ، يسمح القناع 11111111b باستخدام جميع المعالجات (تم تمكين Hyper-Threading) ، يسمح القناع 01010101b باستخدام معالج منطقي واحد في كل نواة (تم تعطيل Hyper-Threading).

يتم استخدام الاختصارات التالية في الرسوم البيانية:

MBPS (ميغا بايت في الثانية)كتلة سرعة القراءة بالميغابايت في الثانية;

CPI (ساعات لكل تعليمات)عدد الدورات لكل تعليمات;

عداد طابع الوقت (TSC)عداد دورة المعالج.

ملاحظة: قد لا تتطابق سرعة ساعة سجل TSC مع سرعة ساعة المعالج عند التشغيل في وضع Turbo Boost. يجب أن يؤخذ ذلك في الاعتبار عند تفسير النتائج.

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

رقم الخبرة 1. خيط واحد



الصورة 2 القراءة في موضوع واحد

السرعة القصوى 213563 ميغا بايت في الثانية. تحدث نقطة الانعطاف بحجم كتلة يبلغ حوالي 32 كيلو بايت.

رقم الخبرة 2. 16 مؤشر ترابط على 4 معالجات ، تعطيل خاصية Hyper-Threading



تين. 3 القراءة في ستة عشر موضوعًا. عدد المعالجات المنطقية المستخدمة أربعة

تم تعطيل الترابط المفرط. السرعة القصوى 797598 ميغا بايت في الثانية. تحدث نقطة الانعطاف بحجم كتلة يبلغ حوالي 32 كيلو بايت. كما هو متوقع ، مقارنة بالقراءة بخيط واحد ، زادت السرعة بنحو 4 مرات ، من حيث عدد النوى العاملة.

رقم الخبرة 3. 16 خيطًا في 8 معالجات ، تم تمكين خيوط المعالجة المتعددة



الشكل 4 القراءة في ستة عشر موضوعًا. عدد المعالجات المنطقية المستخدمة ثمانية

تم تفعيل الترابط التشعبي. السرعة القصوى 800722 ميغا بايت في الثانية ، نتيجة إدراج Hyper-Threading ، تقريبًا لم تزد. العيب الكبير هو أن نقطة الانعطاف تحدث بحجم كتلة يبلغ حوالي 16 كيلو بايت. أدى تمكين Hyper-Threading إلى زيادة السرعة القصوى بشكل طفيف ، لكن انخفاض السرعة يحدث الآن بنصف حجم الكتلة - حوالي 16 كيلو بايت ، لذلك انخفض متوسط ​​السرعة بشكل ملحوظ. هذا ليس مفاجئًا ، فكل نواة لها ذاكرة التخزين المؤقت L1 الخاصة بها ، بينما تشاركها المعالجات المنطقية في نفس النواة.

الاستنتاجات

يتم قياس العملية التي تم التحقيق فيها بشكل جيد على معالج متعدد النواة. الأسباب هي أن كل مركز يحتوي على ذاكرة التخزين المؤقت الخاصة به للمستويين الأول والثاني ، وحجم الكتلة الهدف يمكن مقارنته بحجم ذاكرة التخزين المؤقت ، ويعمل كل من الخيوط مع نطاق العناوين الخاص به. للأغراض الأكاديمية ، أنشأنا مثل هذه الظروف في اختبار تركيبي ، مدركين أن التطبيقات الحقيقية عادة ما تكون بعيدة عن التحسين المثالي. لكن تضمين Hyper-Threading ، حتى في ظل هذه الظروف ، كان له تأثير سلبي ، مع زيادة طفيفة في سرعة الذروة ، هناك خسارة كبيرة في سرعة معالجة الكتل ، وحجمها في النطاق من 16 إلى 32 كيلوبايت.

لقد كتبنا أن استخدام أنظمة Xeon ذات المعالج الفردي لا معنى له ، حيث سيكون أداؤها بسعر أعلى مماثلاً لأداء Pentium 4 من نفس التردد. الآن ، بعد فحص دقيق ، من المحتمل أن يتم تعديل هذا البيان بشكل طفيف. تعمل تقنية Hyper-Threading المطبقة في Intel Xeon مع قلب Prestonia بالفعل وتعطي تأثيرًا ملموسًا. على الرغم من وجود العديد من الأسئلة أيضًا عند استخدامه ...

أعط الأداء

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

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

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

إذن ، ما هي طرق زيادة أدائهم؟

تعزيز الساعة. يمكن أن يكون "ضعيفًا" بشكل أكبر العملية التكنولوجيةوزيادة التردد. لكن ، كما تعلم ، هذا ليس بالأمر السهل وهو محفوف بجميع أنواع الآثار الجانبية ، مثل مشاكل تبديد الحرارة.

زيادة موارد المعالج- على سبيل المثال ، زيادة حجم ذاكرة التخزين المؤقت ، إضافة كتل جديدة (وحدات التنفيذ). كل هذا يستلزم زيادة في عدد الترانزستورات ، وتعقيد المعالج ، وزيادة مساحة البلورة ، وبالتالي في التكلفة.

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

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

بالإضافة إلى المعالجة المتعددة "الخالصة" ، هناك العديد من الخيارات "الوسيطة" التي تتيح لك تسريع تنفيذ التطبيق:

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

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

التبديل على الحدث Multithreading. تبديل المهام عندما تكون هناك فترات توقف طويلة ، مثل "أخطاء ذاكرة التخزين المؤقت" (أخطاء ذاكرة التخزين المؤقت) ، وعدد كبير منها نموذجي لتطبيقات الخادم. في هذه الحالة ، يتم تعليق العملية التي تنتظر تحميل البيانات من ذاكرة بطيئة نسبيًا إلى ذاكرة التخزين المؤقت ، مما يؤدي إلى تحرير موارد وحدة المعالجة المركزية للعمليات الأخرى. ومع ذلك ، فإن ميزة Switch-on-Event Multithreading ، مثل Time-Slice Multithreading ، لا تحقق دائمًا الاستخدام الأمثل لموارد المعالج ، ولا سيما بسبب أخطاء التنبؤ بالفرع ، وتبعيات التعليمات ، وما إلى ذلك.

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

كيف تعمل خيوط المعالجة المتعددة

كما تعلم ، يتضمن "نموذج الحوسبة" الحالي الحوسبة متعددة مؤشرات الترابط. هذا لا ينطبق فقط على الخوادم ، حيث يوجد هذا المفهوم في البداية ، ولكن أيضًا على محطات العمل وأنظمة سطح المكتب. يمكن أن تنتمي الخيوط إلى نفس التطبيقات أو تطبيقات مختلفة ، ولكن دائمًا ما يكون هناك أكثر من مؤشر ترابط نشط واحد (لرؤية هذا ، يكفي فتح مدير المهام في نظام التشغيل Windows 2000 / XP وتشغيل عرض عدد الخيوط). في الوقت نفسه ، لا يمكن للمعالج التقليدي تنفيذ سوى واحد من الخيوط في كل مرة ويضطر إلى التبديل بينها باستمرار.

لأول مرة ، تم تطبيق تقنية Hyper-Threading في معالج Intel Xeon MP (Foster MP) ، والذي كان يعمل عليه. تذكر أن Xeon MP ، الذي تم تقديمه رسميًا في IDF Spring 2002 ، يستخدم Pentium 4 Willamette core ، ويحتوي على 256 كيلوبايت L2 مخبأ و 512 كيلوبايت / 1 ميجابايت L3 مخبأ ، ويدعم تكوينات 4 معالجات. يتوفر دعم Hyper-Threading أيضًا في معالج Intel Xeon لمحطات العمل (Prestonia core ، 512 كيلوبايت L2 مخبأ) ، والتي دخلت السوق في وقت أبكر قليلاً من Xeon MP. إن قرائنا على دراية بالفعل بتكوينات المعالج المزدوج في Intel Xeon ، لذلك سننظر في إمكانيات Hyper-Threading باستخدام وحدات المعالجة المركزية هذه كمثال - من الناحية النظرية والعملية. مهما كان الأمر ، فإن Xeon "البسيط" هو عادي وسهل الهضم أكثر من Xeon MP في أنظمة ذات 4 معالجات ...

يعتمد مبدأ تشغيل Hyper-Threading على حقيقة أنه في أي وقت معين ، يتم استخدام جزء فقط من موارد المعالج عند تنفيذ كود البرنامج. يمكن أيضًا تحميل الموارد غير المستخدمة مع العمل - على سبيل المثال ، يمكن استخدام تطبيق آخر (أو مؤشر ترابط آخر من نفس التطبيق) للتنفيذ المتوازي. في معالج Intel Xeon المادي ، يتم تكوين معالجين منطقيين (LP - معالج منطقي) ، يشتركان في موارد الحوسبة لوحدة المعالجة المركزية. نظام التشغيل والتطبيقات "ترى" وحدتي CPU بالضبط ويمكنها توزيع العمل بينهما ، كما هو الحال في نظام معالجين كاملين.

أحد أهداف تنفيذ Hyper-Threading هو السماح لخيط واحد نشط فقط بالتشغيل بنفس السرعة على وحدة المعالجة المركزية العادية. للقيام بذلك ، يحتوي المعالج على وضعين رئيسيين للتشغيل: مهمة واحدة (ST) ومهام متعددة (MT). في وضع ST ، يكون هناك معالج منطقي واحد فقط نشط ويستخدم الموارد المتاحة غير مقسمة (أوضاع ST0 و ST1) ؛ تم إيقاف LP الآخر بواسطة أمر HALT. عندما يظهر مؤشر ترابط البرنامج الثاني ، يتم تنشيط المعالج المنطقي الخامل (عبر مقاطعة) ويتم وضع وحدة المعالجة المركزية الفعلية في وضع MT. تقع مسؤولية إيقاف LPs غير المستخدمة باستخدام الأمر HALT على عاتق نظام التشغيل ، وهو المسؤول في النهاية عن نفس التنفيذ السريع لخيط واحد كما هو الحال في الحالة بدون Hyper-Threading.

لكل من LPs ، يتم تخزين ما يسمى بحالة العمارة (AS) ، والتي تتضمن حالة السجلات من مختلف الأنواع - الغرض العام ، والتحكم ، و APIC ، والخدمة. كل LP لها APIC (وحدة تحكم المقاطعة) الخاصة بها ومجموعة من السجلات ، للعمل الصحيح الذي يتم من خلاله تقديم مفهوم جدول الاسم المستعار المسجل (RAT) ، والذي يتتبع المراسلات بين ثمانية سجلات للأغراض العامة IA-32 و 128 سجلات وحدة المعالجة المركزية الفعلية (RAT واحد لكل LP).

عند تشغيل خيطين ، يتم دعم مجموعتين متطابقتين من مؤشرات التعليمات التالية. معظم التعليمات مأخوذة من Trace Cache (TC) ، حيث يتم تخزينها في شكل مفكك ، ويقوم LPs النشطان بالوصول إلى TC بدوره ، كل ساعة. في الوقت نفسه ، عندما يكون LP واحدًا نشطًا ، فإنه يكتسب وصولاً حصريًا إلى TC دون تشذير على الساعات. وبالمثل ، يحدث الوصول إلى Microcode ROM. يتم تكرار كتل ITLB (المخزن المؤقت للنظر جانبًا لترجمة التعليمات) ، والتي يتم تنشيطها في حالة عدم وجود الإرشادات اللازمة في ذاكرة التخزين المؤقت للتعليمات ، وتقديم التعليمات لكل مؤشر ترابط خاص به. تتم مشاركة مجموعة فك تشفير تعليمات فك تشفير تعليمات IA-32 ، وفي حالة الحاجة إلى فك تشفير التعليمات لكلا التدفقات ، فإنها تخدمها واحدة تلو الأخرى (مرة أخرى ، كل ساعة). يتم تقسيم كتل Uop Queue و Allocator إلى قسمين ، مع تخصيص نصف العناصر لكل LP. يقوم المنظمون المكونون من 5 قطع بمعالجة قوائم انتظار من الأوامر التي تم فك تشفيرها (Uops) على الرغم من الانتماء إلى LP0 / LP1 والأوامر المباشرة التي سيتم تنفيذها بواسطة وحدات التنفيذ الضرورية - اعتمادًا على الجاهزية لتنفيذ الأول وتوافر الثانية. يتم مشاركة ذاكرة التخزين المؤقت من جميع المستويات (L1 / L2 لـ Xeon ، وكذلك L3 لـ Xeon MP) تمامًا بين اثنين من LPs ، ومع ذلك ، لضمان تكامل البيانات ، يتم توفير الإدخالات في DTLB (المخزن المؤقت لترجمة البيانات) مع الواصفات في شكل معرفات المعالج المنطقي.

وبالتالي ، يمكن تنفيذ تعليمات كل من وحدات المعالجة المركزية المنطقية في وقت واحد على موارد معالج مادي واحد ، والتي تنقسم إلى أربع فئات:

  • مكرر (مكرر) ؛
  • مشترك بالكامل (مشترك بالكامل) ؛
  • مع واصفات العناصر (دخول الموسومة) ؛
  • مقسمة ديناميكيًا (مقسمة) اعتمادًا على طريقة تشغيل ST0 / ST1 أو MT.

ومع ذلك ، يمكن أيضًا تسريع معظم التطبيقات التي يتم تسريعها على الأنظمة متعددة المعالجات على وحدة المعالجة المركزية مع تمكين Hyper-Threading دون أي تعديلات. ولكن هناك أيضًا مشكلات: على سبيل المثال ، إذا كانت إحدى العمليات في حلقة انتظار ، فيمكن أن تستهلك جميع موارد وحدة المعالجة المركزية الفعلية ، مما يمنع LP الثاني من العمل. وبالتالي ، قد ينخفض ​​الأداء عند استخدام خيوط المعالجة المتعددة أحيانًا (تصل إلى 20٪). لمنع ذلك ، توصي Intel باستخدام تعليمات PAUSE بدلاً من حلقات الانتظار الفارغة (المقدمة في IA-32 بدءًا من Pentium 4). يجري العمل الجاد أيضًا على التحسين التلقائي وشبه التلقائي للشفرة أثناء التجميع - على سبيل المثال ، حقق مُجمِّعو سلسلة Intel OpenMP C ++ / Fortran Compilers () تقدمًا كبيرًا في هذا الصدد.

كان الهدف الآخر للتنفيذ الأول لـ Hyper-Threading ، وفقًا لشركة Intel ، هو تقليل النمو في عدد الترانزستورات ومنطقة القالب واستهلاك الطاقة مع زيادة الأداء بشكل ملحوظ. تم بالفعل الوفاء بالجزء الأول من هذا الالتزام: أدت إضافة دعم خيوط المعالجة المتعددة إلى Xeon / Xeon MP إلى زيادة مساحة القالب واستهلاك الطاقة بنسبة أقل من 5٪. ما حدث مع الجزء الثاني (الأداء) ، لم نتحقق بعد.

الجزء العملي

لأسباب واضحة ، لم نختبر أنظمة خادم ذات 4 معالجات على Xeon MP مع تمكين Hyper-Threading. أولاً ، إنها عملية كثيفة العمالة. وثانيًا ، إذا قررنا مثل هذا العمل الفذ ، فلا يزال الآن ، بعد أقل من شهر من الإعلان الرسمي ، من غير الواقعي تمامًا الحصول على هذه المعدات باهظة الثمن. لذلك ، تقرر حصر أنفسنا في نفس النظام مع جهازي Intel Xeon 2.2 GHz ، حيث تم إجراء الاختبارات الأولى لهذه المعالجات (انظر الرابط في بداية المقال). كان النظام يعتمد على اللوحة الأمسوبرمايكرو P4DC6 + ( شرائح إنتل i860) ، يحتوي على 512 ميجابايت من RDRAM ، بطاقة فيديو على شريحة GeForce3 (64 ميجابايت DDR ، برامج تشغيل Detonator 21.85) ، HDD الغربية الرقمية WD300BB و 6 X DVD-ROM ؛ تم استخدام Windows 2000 Professional SP2 كنظام تشغيل.

أولا ، بعض الانطباعات العامة. عند تثبيت Xeon واحد مع نواة Prestonia عند بدء التشغيل نظام BIOSيعرض رسالة حول وجود وحدتي CPU ؛ إذا تم تثبيت معالجين ، يرى المستخدم رسالة حول أربع وحدات معالجة مركزية. يتعرف نظام التشغيل عادةً على "كلا المعالجين" ، ولكن فقط في حالة استيفاء شرطين.

أولاً ، في إعداد CMOS ، الأخير إصدارات BIOSقدمت لوحات Supermicro P4DCxx عنصر Enable Hyper-Threading ، والذي بدونه سيتعرف نظام التشغيل على المعالج (المعالجات) المادية فقط. ثانيًا ، يتم استخدام ACPI لإخبار نظام التشغيل بوجود معالجات منطقية إضافية. لذلك ، لتمكين Hyper-Threading ، يجب تمكين خيار ACPI في إعداد CMOS ، ويجب أيضًا تثبيت HAL (طبقة تجريد الأجهزة) مع دعم ACPI لنظام التشغيل نفسه. لحسن الحظ ، في Windows 2000 ، يعد تغيير HAL من الكمبيوتر القياسي (أو MPS Uni- / Multiprocessor PC) إلى ACPI Uni- / Multiprocessor PC أمرًا سهلاً - عن طريق تغيير "برنامج تشغيل الكمبيوتر" في مدير الجهاز. في الوقت نفسه ، بالنسبة لنظام التشغيل Windows XP ، فإن الطريقة القانونية الوحيدة للترحيل إلى ACPI HAL هي إعادة تثبيت النظام فوق التثبيت الحالي.

ولكن الآن تم إجراء جميع الاستعدادات ، ويؤمن Windows 2000 Pro بالفعل أنه يعمل على نظام ذي معالجين (على الرغم من أنه في الواقع لا يوجد سوى معالج واحد مثبت). الآن ، كالمعتاد ، حان الوقت لاتخاذ قرار بشأن أهداف الاختبار. لذلك نريد:

  • تقييم تأثير Hyper-Threading على أداء تطبيقات الفئات المختلفة.
  • قارن هذا التأثير بتأثير تثبيت معالج ثانٍ.
  • تحقق من كيفية إعطاء الموارد "بشكل عادل" للمعالج المنطقي النشط عندما يكون LP الثاني خاملاً.

لتقييم الأداء ، أخذنا مجموعة من التطبيقات المألوفة للقراء بالفعل ، والتي تم استخدامها في اختبار أنظمة محطات العمل. لنبدأ ، ربما ، من النهاية ونتحقق من "المساواة" بين وحدات المعالجة المركزية المنطقية. كل شيء بسيط للغاية: أولاً نجري اختبارات على معالج واحد مع تعطيل Hyper-Threading ، ثم نكرر العملية مع تمكين Hyper-Threading وباستخدام واحد فقط من وحدتي CPU المنطقيتين (باستخدام Task Manager). نظرًا لأننا في هذه الحالة مهتمون فقط بالقيم النسبية ، يتم تقليل نتائج جميع الاختبارات إلى شكل "الأكبر هو الأفضل" وتوحيدها (يتم أخذ مؤشرات نظام المعالج الفردي بدون Hyper-Threading كوحدة).

حسنًا ، كما ترى ، تم الوفاء بوعود Intel هنا: مع مؤشر ترابط نشط واحد فقط ، فإن أداء كل من LPs يساوي تمامًا أداء وحدة المعالجة المركزية المادية بدون Hyper-Threading. تم تعليق الخمول LP (كلا LP0 و LP1) بالفعل ، والموارد المشتركة ، بقدر ما يمكن الحكم عليها من النتائج التي تم الحصول عليها ، يتم نقلها بالكامل إلى استخدام LP النشط.

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

استدعاء. تم دمج نتائج أربعة اختبارات في حزم النمذجة ثلاثية الأبعاد 3D Studio MAX 4.26 و Lightwave 7b و A | W Maya 4.0.1 في رسم تخطيطي واحد نظرًا للتشابه بينهما.

في جميع الحالات الأربع (بالنسبة إلى Lightwave - مشهدان مختلفان) ، يتم الاحتفاظ بحمل وحدة المعالجة المركزية (CPU) في وجود معالج واحد مزود بتقنية Hyper-Threading معطلة بشكل دائم تقريبًا بنسبة 100٪. ومع ذلك ، عند تمكين Hyper-Threading ، يتم تسريع حساب المشاهد (نتيجة لذلك ، لدينا نكتة حول استخدام وحدة المعالجة المركزية أكثر من 100٪). في ثلاثة اختبارات ، يمكننا أن نرى زيادة في الأداء من Hyper-Threading بنسبة 14-18٪ - من ناحية ، ليس كثيرًا مقارنة بوحدة المعالجة المركزية الثانية ، ولكن من ناحية أخرى ، جيد جدًا ، مع الأخذ في الاعتبار التأثير "المجاني" لـ هذا التأثير. في أحد الاختبارين باستخدام Lightwave ، يكون كسب الأداء تقريبًا صفراً (على ما يبدو ، تؤثر خصوصية هذا التطبيق المليئة بالشذوذ). لكن لا توجد نتيجة سلبية في أي مكان ، والزيادة الملحوظة في الحالات الثلاث الأخرى مشجعة. وهذا على الرغم من حقيقة أن عمليات العرض المتوازية تقوم بعمل مماثل ، وبالتأكيد لا يمكنها استخدام موارد وحدة المعالجة المركزية المادية في نفس الوقت بأفضل طريقة.

ترميز Photoshop و MP3. يعد برنامج الترميز GOGO-no-coda 2.39c أحد الكودك القلائل الذي يدعم SMP ، ويظهر زيادة في الأداء بنسبة 34٪ من المعالج المزدوج. في الوقت نفسه ، يكون تأثير Hyper-Threading في هذه الحالة صفرًا (لا نعتبر اختلافًا بنسبة 3٪ كبيرًا). ولكن في الاختبار باستخدام Photoshop 6.0.1 (نص يتكون من مجموعة كبيرة من الأوامر والمرشحات) ، يمكنك رؤية تباطؤ عند تمكين Hyper-Threading ، على الرغم من أن وحدة المعالجة المركزية الفعلية الثانية تضيف أداء بنسبة 12٪ في هذه الحالة. هنا ، في الواقع ، هي الحالة الأولى عندما يتسبب Hyper-Threading في انخفاض في الأداء ...

برنامج OpenGL الاحترافي. من المعروف منذ فترة طويلة أن SPEC ViewPerf والعديد من تطبيقات OpenGL الأخرى غالبًا ما تتباطأ في أنظمة SMP.

OpenGL والمعالج الثنائي: لماذا ليسوا أصدقاء

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

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

في الواقع ، التفسير ، في رأينا ، أبسط بكثير. كما تعلم ، يمكن تشغيل أحد التطبيقات بشكل أسرع على معالجين مقارنة بمعالج واحد إذا:

  • هناك أكثر من اثنين أو أكثر من سلاسل البرامج (الخيوط) المنفذة في وقت واحد ؛
  • لا تتداخل هذه الخيوط مع تنفيذ بعضها البعض - على سبيل المثال ، لا تتنافس على مورد مشترك مثل محرك أقراص خارجي أو واجهة شبكة.

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

أيضًا ، كمثال ، سنقدم رسومًا بيانية لاستخدام وحدتي CPU في العديد من التطبيقات التي تعرض مشاهد OpenGL. تم إجراء جميع القياسات على منصة بالتكوين التالي:

  • واحد أو اثنين من Intel Xeon 2.2 جيجاهرتز (معطل Hyper-Threading) ؛
  • 512 ميجابايت من ذاكرة الوصول العشوائي ؛
  • اللوحة الأم Supermicro P4DC6 + ؛
  • بطاقة فيديو ASUS V8200 Deluxe (NVidia GeForce3 ، 64 ميجابايت DDR SDRAM ، برامج تشغيل Detonator 21.85) ؛
  • نظام التشغيل Windows 2000 Professional SP2 ؛
  • وضع الفيديو 1280x1024x32 bpp ، 85 هرتز ، Vsync معطل.

يمثل اللونان الأزرق والأحمر رسومًا بيانية لتحميل وحدة المعالجة المركزية 0 ووحدة المعالجة المركزية 1 ، على التوالي. الخط في المنتصف هو الرسم البياني النهائي لاستخدام وحدة المعالجة المركزية. تتوافق الرسوم البيانية الثلاثة مع مشهدين من 3D Studio MAX 4.26 وجزء من اختبار SPEC ViewPerf (AWadvs-04).


استخدام وحدة المعالجة المركزية: Animation 3D Studio MAX 4.26 - Anibal (مع المتلاعبين). max


استخدام وحدة المعالجة المركزية: Animation 3D Studio MAX 4.26 - Rabbit.max


استخدام وحدة المعالجة المركزية: SPEC ViewPerf 6.1.2 - AWadvs-04

يتكرر نفس النمط في مجموعة من التطبيقات الأخرى التي تستخدم OpenGL. هناك معالجان لا يكلفان عناء العمل على الإطلاق ، ويبلغ إجمالي استخدام وحدة المعالجة المركزية 50-60٪. في الوقت نفسه ، بالنسبة لنظام المعالج الفردي ، في جميع هذه الحالات ، يتم الحفاظ على استخدام وحدة المعالجة المركزية بثقة عند مستوى 100٪.

لذلك ليس من المستغرب أن الكثير من تطبيقات OpenGL لا تسرع كثيرًا في الأنظمة المزدوجة. حسنًا ، حقيقة أنها تتباطأ في بعض الأحيان لها ، في رأينا ، تفسيرًا منطقيًا تمامًا.

يمكننا القول أنه باستخدام وحدتي CPU منطقيتين ، يكون انخفاض الأداء أكثر أهمية ، وهو أمر مفهوم تمامًا: يتداخل معالجان منطقيان مع بعضهما البعض بنفس الطريقة التي يتداخل بها معالجان ماديان. لكن أداؤهم الإجمالي ، بالطبع ، يتضح أنه أقل في هذه الحالة ، لذلك عند تمكين Hyper-Threading ، يتناقص أكثر من مجرد تشغيل وحدتي CPU فعليتين. النتيجة متوقعة والاستنتاج بسيط: خيوط المعالجة المتعددة ، مثل SMP "الحقيقي" ، أحيانًا ما يكون بطلان OpenGL.

تطبيقات CAD. تم تأكيد الاستنتاج السابق من خلال نتائج اختبارين CAD - SPECapc لـ SolidEdge V10 و SPECapc لـ SolidWorks. أداء الرسومات لهذه الاختبارات لـ Hyper-Threading مشابه (على الرغم من أن النتيجة أعلى قليلاً في حالة نظام SMP لـ SolidEdge V10). لكن نتائج اختبارات CPU_Score التي تحمل المعالج تجعلك تعتقد: زيادة بنسبة 5-10٪ عن SMP و 14-19٪ تباطؤ من Hyper-Threading.

ولكن في نهاية اليوم ، تقر Intel بصدق بإمكانية تدهور الأداء باستخدام Hyper-Threading في بعض الحالات - على سبيل المثال ، عند استخدام حلقات انتظار فارغة. يمكننا فقط أن نفترض أن هذا هو السبب (الفحص التفصيلي لرمز SolidEdge و SolidWorks خارج نطاق هذه المقالة). بعد كل شيء ، يعرف الجميع تحفظ مطوري تطبيقات CAD الذين يفضلون الموثوقية المثبتة وليسوا في عجلة من أمرهم لإعادة كتابة الكود مع مراعاة الاتجاهات الجديدة في البرمجة.

تلخيص ، أو "انتباه ، السؤال الصحيح"

يعمل Hyper-Threading ، ولا شك في ذلك. بالطبع ، التكنولوجيا ليست عالمية: هناك تطبيقات "يصبح خيوط المعالجة المتعددة سيئًا" بالنسبة لها ، وفي حالة انتشار هذه التقنية ، سيكون من المرغوب تعديلها. ولكن ألم يحدث نفس الشيء لـ MMX و SSE ويستمر في حدوث SSE2؟ ..

ومع ذلك ، فإن هذا يثير مسألة قابلية تطبيق هذه التكنولوجيا على واقعنا. سنتجاهل على الفور خيار نظام معالج واحد على Xeon مع Hyper-Threading (أو نعتبره مؤقتًا فقط ، تحسبا لشراء معالج ثان): حتى زيادة الأداء بنسبة 30٪ لا تبرر السعر في أي طريقة - فمن الأفضل شراء بنتيوم 4. عدد وحدات المعالجة المركزية المتبقية من اثنين أو أكثر.

الآن دعنا نتخيل أننا نشتري نظام Xeon ثنائي المعالجات (على سبيل المثال ، مع Windows 2000 / XP Professional). تم تثبيت وحدتي CPU ، وتم تمكين Hyper-Threading ، ووجد BIOS ما يصل إلى أربعة معالجات منطقية ، فلنبدأ الآن ... توقف. ولكن كم عدد المعالجات التي سيرى نظام التشغيل لدينا؟ هذا صحيح ، اثنان. اثنان فقط ، لأنه ببساطة غير مصمم لعدد أكبر. سيكون هذان معالجان ماديان ، أي سيعمل كل شيء تمامًا كما هو الحال مع Hyper-Threading المعطل - ليس أبطأ (ستتوقف وحدتا CPU منطقيتان "إضافيتان" ببساطة) ، ولكن ليس أسرع (تم التحقق منهما عن طريق اختبارات إضافية ، لم يتم الاستشهاد بالنتائج لـ وضوحها). هممم ، ليس الكثير من المرح ...

ماذا تبقى؟ حسنًا ، لا تقم بتثبيت Advanced Server أو .NET Server على محطة العمل الخاصة بنا ، حقًا؟ لا ، سيقوم النظام بالتثبيت والتعرف على جميع المعالجات المنطقية الأربعة وسيعمل. هذا مجرد نظام تشغيل الخادم ينظر إلى محطة العمل ، بعبارة ملطفة ، غريب بعض الشيء (ناهيك عن الجوانب المالية). الحالة المعقولة الوحيدة هي عندما يعمل نظام Xeon ثنائي المعالج الخاص بنا كخادم (على الأقل لا يتردد بعض المنشئين في إطلاق الخوادم على معالجات محطة العمل Xeon). ولكن بالنسبة لمحطات العمل المزدوجة مع أنظمة التشغيل المقابلة ، تظل إمكانية تطبيق Hyper-Threading موضع تساؤل. تدافع Intel الآن بنشاط عن ترخيص نظام التشغيل بناءً على عدد وحدات المعالجة المركزية غير المنطقية ، ولكن المادية. لا تزال المناقشات جارية ، وبشكل عام ، يعتمد الكثير على ما إذا كنا نرى نظام تشغيل محطة عمل يدعم أربعة معالجات.

حسنًا ، مع الخوادم ، كل شيء يخرج بكل بساطة. على سبيل المثال ، سيرفر Windows 2000 Advanced Server المثبت على نظام Xeon ثنائي المقبس مع تمكين Hyper-Threading أربعة معالجات منطقية وتشغيلها بسلاسة. لتقييم ما يجلبه Hyper-Threading لأنظمة الخوادم ، نقدم نتائج مختبرات برامج المعالجات الدقيقة Intel للأنظمة ثنائية المعالجات على Xeon MP والعديد من تطبيقات خادم Microsoft.

يعتبر تعزيز الأداء بنسبة 20-30٪ لخادم ثنائي المعالجات "مجانًا" أكثر من مجرد إغراء (خاصة مقارنة بشراء نظام "حقيقي" رباعي المعالجات).

لذلك اتضح أنه في الوقت الحالي ، لا يمكن التطبيق العملي لـ Hyper-Threading إلا في الخوادم. تعتمد مشكلة محطات العمل على الحل مع ترخيص نظام التشغيل. على الرغم من أن تطبيقًا آخر لـ Hyper-Threading حقيقي تمامًا - إذا حصلت معالجات سطح المكتب على دعم لهذه التقنية. على سبيل المثال (دعنا نتخيل) ما الخطأ في نظام Pentium 4 مع دعم Hyper-Threading ، حيث يتم تثبيت Windows 2000 / XP Professional مع دعم SMP؟ - من الخوادم إلى أنظمة سطح المكتب والهاتف المحمول.