من فاز بسرعة الساعة أو عدد النوى في المعالج. ما هو عدد نوى المعالج في الهاتف، وما مسؤوليته، وما الوظيفة التي يؤديها؟ ما الذي يؤثر على عدد النوى في الهاتف الذكي؟ ما هو أكبر عدد من النوى في الهاتف الذكي؟ ماذا عن

  • درس تعليمي

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

الغرض من المقالة هو إظهار أنه مع تنوع التكوينات الممكنة للأنظمة متعددة المعالجات ومتعددة النواة ومتعددة الخيوط، بالنسبة للبرامج التي تعمل عليها، يتم إنشاء فرص للتجريد (تجاهل الاختلافات) ومراعاة التفاصيل (القدرة على معرفة التكوين برمجيا).

التحذير من علامات ®، ™ في المقال

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

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

بالطبع، المصطلح الأقدم والأكثر استخدامًا والمثير للجدل هو "المعالج".

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

تحتوي الأنظمة المحمولة (الهواتف والأجهزة اللوحية وأجهزة الكمبيوتر المحمولة) ومعظم أجهزة الكمبيوتر المكتبية على معالج واحد. تتميز محطات العمل والخوادم أحيانًا بمعالجين أو أكثر على لوحة أم واحدة.

يتطلب دعم وحدات المعالجة المركزية المتعددة في نظام واحد العديد من التغييرات في التصميم. كحد أدنى، من الضروري التأكد من اتصالهم الفعلي (توفير عدة مآخذ على اللوحة الأم)، وحل مشكلات تعريف المعالج (انظر لاحقًا في هذه المقالة، بالإضافة إلى ملاحظتي)، وتنسيق الوصول إلى الذاكرة وتسليم المقاطعة (المقاطعة يجب أن تكون وحدة التحكم قادرة على توجيه المقاطعات إلى العديد من المعالجات) وبالطبع الدعم من نظام التشغيل. لسوء الحظ، لم أتمكن من العثور على ذكر وثائقي لإنشاء أول نظام متعدد المعالجات على معالجات إنتل، لكن ويكيبيديا تدعي أن شركة Sequent Computer Systems زودتها بالفعل في عام 1987، باستخدام معالجات Intel 80386، وأصبح دعم الشرائح المتعددة في نظام واحد واسع الانتشار. بدءًا من Intel® Pentium.

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


إستعد للإنطلاق! لوحة سطح المكتب Intel® D5400XS

جوهر

تاريخيًا، ظهرت النوى المتعددة في Intel IA-32 متأخرة عن Intel® HyperThreading، ولكنها تأتي بعد ذلك في التسلسل الهرمي المنطقي.

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

تم تقديم أول معالجات IA-32 متعددة النواة من Intel في عام 2005. منذ ذلك الحين، زاد متوسط ​​عدد النوى في الخادم وسطح المكتب والآن الأنظمة الأساسية للجوال بشكل مطرد.

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


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

فرط الترابط

حتى عام 2002 تقريبًا، كانت الطريقة الوحيدة للحصول على نظام IA-32 قادرًا على تشغيل برنامجين أو أكثر بالتوازي هي استخدام أنظمة متعددة المعالجات. قدم Intel® Pentium® 4، بالإضافة إلى خط Xeon الذي يحمل الاسم الرمزي Foster (Netburst)، تقنية جديدة - مؤشرات الترابط الفائقة أو مؤشرات الترابط الفائقة - Intel® HyperThreading (المشار إليها فيما بعد بـ HT).

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

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

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

تتمتع السيناريوهات النموذجية لتطبيقات سطح المكتب والخادم المصممة لبنيات الأجهزة ذات الأغراض العامة بإمكانية التوازي الذي يتم تنفيذه باستخدام HT. ومع ذلك، يتم استخدام هذه الإمكانية بسرعة. ربما لهذا السبب، في جميع معالجات IA-32 تقريبا، لا يتجاوز عدد Hyperthreads للأجهزة اثنين. في السيناريوهات النموذجية، قد يكون الربح من استخدام ثلاثة أو أكثر من مؤشرات الترابط التشعبية صغيرًا، لكن الخسارة في حجم القالب واستهلاك الطاقة والتكلفة تكون كبيرة.

يتم ملاحظة موقف مختلف في المهام النموذجية التي يتم إجراؤها على مسرعات الفيديو. ولذلك تتميز هذه البنى باستخدام تقنية SMT مع عدد أكبر من الخيوط. نظرًا لأن المعالجات المساعدة Intel® Xeon Phi (التي تم طرحها في عام 2010) قريبة تمامًا من الناحية الأيديولوجية والأنسابية من بطاقات الفيديو، فقد يكون لديها أربعة Hyperthreading على كل نواة - تكوين فريد لـ IA-32.

المعالج المنطقي

من بين "مستويات" التوازي الثلاثة الموصوفة (المعالجات، النوى، الخيوط الفائقة)، قد يكون بعضها أو حتى جميعها مفقودًا في نظام معين. يتأثر هذا بإعدادات BIOS (يتم تعطيل النواة المتعددة وتعدد العمليات بشكل مستقل)، وميزات البنية الدقيقة (على سبيل المثال، كان HT غائبًا عن Intel® Core™ Duo، ولكن تمت إعادته مع إصدار Nehalem) وأحداث النظام (متعددة النواة). يمكن لخوادم المعالج إيقاف تشغيل المعالجات الفاشلة إذا تم اكتشاف الأخطاء والاستمرار في "الطيران" على المعالجات المتبقية). كيف يمكن رؤية حديقة التزامن متعددة المستويات هذه لنظام التشغيل، وفي نهاية المطاف، لتطبيقات التطبيقات؟

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

في أغلب الأحيان، يخفي نظام التشغيل من التطبيقات النهائية ميزات الهيكل الفعلي للنظام الذي يعمل عليه. على سبيل المثال، الطبولوجيا الثلاثة التالية: (2، 1، 1)، (1، 2، 1) و (1، 1، 2) - سيمثل نظام التشغيل معالجين منطقيين، على الرغم من أن الأول منهما يحتوي على معالجين، الثاني - اثنين من النوى، والثالث - اثنين فقط من المواضيع.


يعرض مدير مهام Windows 8 معالجات منطقية؛ ولكن كم هو في المعالجات والنوى والخيوط الفائقة؟


يُظهر الجزء العلوي من Linux 4 معالجات منطقية.

يعد هذا مناسبًا تمامًا لمنشئي التطبيقات - فلا يتعين عليهم التعامل مع ميزات الأجهزة التي غالبًا ما تكون غير مهمة بالنسبة لهم.

تعريف البرمجيات للطوبولوجيا

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

تتوفر معلومات حول طوبولوجيا النظام ككل، بالإضافة إلى موضع كل معالج منطقي في IA-32، باستخدام تعليمات CPUID. منذ ظهور الأنظمة متعددة المعالجات الأولى، تم توسيع مخطط تعريف المعالج المنطقي عدة مرات. حتى الآن، أجزائه موجودة في الأوراق 1 و4 و11 من CPUID. يمكن تحديد الورقة التي يجب النظر إليها من خلال المخطط الانسيابي التالي المأخوذ من المقالة:

لن أحملك هنا بكل تفاصيل الأجزاء الفردية من هذه الخوارزمية. إذا كان هناك اهتمام، فيمكن تخصيص الجزء التالي من هذه المقالة لهذا الغرض. سأحيل القارئ المهتم إلى الذي يدرس هذه المسألة بأكبر قدر ممكن من التفصيل. سأصف هنا أولاً باختصار ماهية APIC ومدى ارتباطها بالطوبولوجيا. بعد ذلك، سننظر في العمل باستخدام ورقة 0xB (أحد عشر بالنظام العشري)، والتي تعد حاليًا الكلمة الأخيرة في "apico-building".

معرف أبيك
Local APIC (وحدة تحكم المقاطعة القابلة للبرمجة المتقدمة) هو جهاز (الآن جزء من المعالج) مسؤول عن التعامل مع المقاطعات القادمة إلى معالج منطقي محدد. كل معالج منطقي له APIC خاص به. ويجب أن يكون لكل واحد منهم في النظام قيمة معرف APIC فريدة. يتم استخدام هذا الرقم من قبل وحدات تحكم المقاطعة للعنونة عند تسليم الرسائل، ومن قبل أي شخص آخر (على سبيل المثال، نظام التشغيل) لتحديد المعالجات المنطقية. لقد تطورت مواصفات وحدة التحكم بالمقاطعة هذه من Intel 8259 PIC عبر Dual PIC وAPIC وxAPIC إلى x2APIC.

حاليًا، وصل عرض الرقم المخزن في معرف APIC إلى 32 بت كاملة، على الرغم من أنه كان يقتصر في الماضي على 16 بت، وحتى في وقت سابق - 8 بتات فقط. اليوم، بقايا الأيام القديمة منتشرة في جميع أنحاء CPUID، ولكن CPUID.0xB.EDX تقوم بإرجاع كافة 32 بت من معرف APIC. على كل معالج منطقي ينفذ تعليمات CPUID بشكل مستقل، سيتم إرجاع قيمة مختلفة.

معرفة الروابط العائلية
لا تخبرك قيمة معرف APIC نفسها بأي شيء عن الهيكل. لمعرفة أي معالجين منطقيين موجودان داخل معالج فيزيائي واحد (أي هما معالجان متشعبان "أخوان")، وأي معالجين موجودان داخل نفس المعالج، وأي منهما معالجان مختلفان تمامًا، تحتاج إلى مقارنة قيم معرف APIC الخاصة بهما. اعتمادًا على درجة العلاقة، سوف تتطابق بعض أجزاءها. هذه المعلومات موجودة في قوائم CPUID.0xB الفرعية، والتي يتم ترميزها في ECX. يصف كل واحد منهم موضع حقل البت لأحد مستويات الهيكل في EAX (بتعبير أدق، عدد البتات التي يجب إزاحتها إلى اليمين في معرف APIC لإزالة مستويات الهيكل الأدنى)، بالإضافة إلى نوع هذا المستوى - Hyperthread أو Core أو Processor - في ECX.

المعالجات المنطقية الموجودة داخل نفس النواة سيكون لها نفس جميع بتات معرف APIC، باستثناء تلك التي تنتمي إلى حقل SMT. بالنسبة للمعالجات المنطقية الموجودة في نفس المعالج، جميع البتات باستثناء الحقول Core وSMT. وبما أن عدد الأوراق الفرعية لـ CPUID.0xB يمكن أن يتزايد، فإن هذا المخطط سيسمح لنا بدعم وصف الطبولوجيا بعدد أكبر من المستويات، إذا دعت الحاجة إلى ذلك في المستقبل. علاوة على ذلك، سيكون من الممكن إدخال مستويات متوسطة بين المستويات الموجودة.

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

ألاحظ أن CPUID.0xB ليس المصدر الوحيد للمعلومات حول المعالجات المنطقية المتوفرة لنظام التشغيل. يتم ترميز قائمة بجميع المعالجات المتاحة لها، إلى جانب قيم معرف APIC الخاصة بها، في جدول MADT ACPI.

أنظمة التشغيل والطوبولوجيا

توفر أنظمة التشغيل معلومات حول طوبولوجيا المعالجات المنطقية للتطبيقات التي تستخدم واجهاتها الخاصة.

في Linux، توجد معلومات الهيكل في الملف الزائف /proc/cpuinfo بالإضافة إلى مخرجات الأمر dmidecode. في المثال أدناه، قمت بتصفية محتويات cpuinfo على بعض الأنظمة رباعية النواة بدون HT، مع ترك الإدخالات المتعلقة بالهيكل فقط:

النص المخفي

ggg@shadowbox:~$ cat /proc/cpuinfo |grep "processor\|physical\ id\|siblings\|core\|cores\|apicid" المعالج: 0 معرف فعلي: 0 أشقاء: 4 معرف أساسي: 0 مركز لوحدة المعالجة المركزية: 2 apicid: 0 apicid الأولي: 0 المعالج: 1 المعرف الفعلي: 0 الأشقاء: 4 المعرف الأساسي: 0 نوى وحدة المعالجة المركزية: 2 apicid: 1 apicid الأولي: 1 المعالج: 2 المعرف الفعلي: 0 الأشقاء: 4 المعرف الأساسي: 1 نواة وحدة المعالجة المركزية: 2 apicid: 2 apicid الأولي: 2 المعالج: 3 المعرف الفعلي: 0 الأشقاء: 4 المعرف الأساسي: 1 مركز وحدة المعالجة المركزية: 2 apicid: 3 apicid الأولي: 3

في FreeBSD، يتم الإبلاغ عن الهيكل عبر آلية sysctl في متغير kern.sched.topology_spec بتنسيق XML:

النص المخفي

user@host:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 مجموعة الموضوعمجموعة سمت 2, 3 مجموعة الموضوعمجموعة سمت 4, 5 مجموعة الموضوعمجموعة سمت 6, 7 مجموعة الموضوعمجموعة سمت

في نظام التشغيل MS Windows 8، يمكن رؤية معلومات الهيكل في إدارة المهام.

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

معالج 2 أو 4 نواة؟

يخطئ معظم الناس في الاعتقاد بأن تردد كل نواة يزيد. وبما أن تردد النوى هو 2.5 جيجا هرتز، وهناك 4 نوى، فهذا يعني 2.5 * 4 = 10 جيجا هرتز. لكن الأمر ليس كذلك: التردد هو نفسه دائمًا - 2.5 جيجا هرتز. لماذا لا يضيف التردد؟ لأن كل معالج يعمل بالتوازي على هذا التردد.

الجزء هو جزء من الوقت الذي يقوم المعالج بتخصيص الموارد فيه لجميع سلاسل العمليات التي تدخل المعالج. إنها مثل 4 طرق سريعة تبلغ سرعتها القصوى 60 كم/ساعة (2.5 جيجا هرتز): لدينا شاحنات يجب أن تقوم بتسليم البضائع إلينا (هذه هي الأجزاء الخاصة بنا من البرنامج أو أجزاء من البرنامج)، ولكي نتمكن من زيادة سرعة التسليم (زيادة أداء النظام)، نحتاج إلى استخدام جميع الطرق السريعة الأربعة أو زيادة السرعة القصوى (3.0 جيجا هرتز). لكن بالنسبة لمعظم البرامج فإنه من المستحيل العمل في عدة سلاسل، لأنها تعمل في خيط واحد وتكون قادرة على استخدام طريق سريع واحد فقط (مما يعني أنه سيتم تخصيص برنامجنا بنسبة 25% فقط من إجمالي قوة المعالج) لأنه في البرنامج المنطق يجب تنفيذه بشكل تسلسلي (مترابط)، وإذا كسرت التسلسل، فسوف ينكسر المنطق، وهذا سيؤدي إلى الفشل. تحاول البرامج الجديدة استخدام البرمجة المتعددة - القدرة على العمل في عدة مواضيع (طرقنا السريعة)، وليس في واحدة، مثل معظم البرامج الآن. تم أيضًا تحسين الألعاب، في معظمها، من أجل تعدد مؤشرات الترابط، لكن الخيط الرئيسي يعمل عادةً على واحدة. على الرغم من أنهم يحاولون الآن تقسيمها إلى عدة أجزاء لجعلها أسهل وأسرع. لذلك، بالنسبة للألعاب أو التطبيقات التي تعمل عادة في موضوع واحد أو اثنين، فمن الأفضل أن تأخذ معالجًا ثنائي النواة.

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

الآن عن قوائم الانتظار:

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

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

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

لاختبار الموضوع، قم بتشغيل winrar لضغط ملف كبير، وابحث في المدير (يتم ضغطه في موضوع واحد) عن مقدار موارد وحدة المعالجة المركزية التي سيستخدمها (25% على 4 مراكز و50% على مركزين). ويترتب على ذلك أن لعبتنا، إذا كانت تعمل في خيط واحد على معالج رباعي النواة، فسيتم تخصيص 25٪ من قوة المعالج، و 50٪ إذا كانت على معالج ثنائي النواة. في الألعاب، لدينا تعدد مؤشرات الترابط، ولكن الخيط الرئيسي في اللعبة سيظل تتم معالجته بواسطة ربع المعالج (في معالج رباعي النواة).

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

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

بالنسبة لأنظمة التشغيل الحديثة، مثل Windows 7 أو Windows 8.1 الجديد، لم يعد هناك ما يكفي من نوى المعالج أو اثنين في وحدة النظام. ولذلك، يسعى المصنعون جاهدين لإضافة أكبر عدد ممكن من النوى إلى أجهزة الكمبيوتر الحديثة. ولكن أيضًا احفظ السعر. إنهم ينتجون بشكل أساسي أجهزة كمبيوتر محمولة ثنائية وأربعة النواة ومعالجات رباعية النواة لأجهزة الكمبيوتر.

في بعض الأحيان، في عملية إتقان جهاز كمبيوتر شخصي أو كمبيوتر محمول، يكون لدى المستخدم سؤال R12؛ كم عدد النوى الموجودة في جهاز الكمبيوتر الخاص به؟ كثير من الناس يريدون معرفة عدد النوىالمعالج في جهاز الكمبيوتر الخاص به.

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

لذلك، دعونا نبدأ!

طريقة 1.

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

يؤدي هذا إلى ظهور نافذة حيث تحتاج إلى تحديد "خصائص"

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

نذهب إلى مدير الأجهزة ونجد السطر "المعالجات". لتوسيعه، انقر على المثلث الصغير المقابل لعنصر "المعالجات".

ونرى عدد النوى في المعالج. اكتشفت أن لدي أربعة نوى. يمكنك الحصول على اثنين وثلاثة وأربعة وستة.

الطريقة 2.(حتى أبسط)

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

في اللوحة العلوية للمدير، حدد علامة التبويب "الأداء" وانظر إلى التسلسل الزمني لتحميل الذاكرة المركزية. تعرض كل نافذة منفصلة حمل النواة. أي أن لدي 4 نوافذ وبالتالي أربعة مراكز.

الآن أنت تعرف كم هو سهل معرفة عدد النوىعلى حاسوبك!

  • درس تعليمي

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

الغرض من المقالة هو إظهار أنه مع تنوع التكوينات الممكنة للأنظمة متعددة المعالجات ومتعددة النواة ومتعددة الخيوط، بالنسبة للبرامج التي تعمل عليها، يتم إنشاء فرص للتجريد (تجاهل الاختلافات) ومراعاة التفاصيل (القدرة على معرفة التكوين برمجيا).

التحذير من علامات ®، ™ في المقال

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

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

بالطبع، المصطلح الأقدم والأكثر استخدامًا والمثير للجدل هو "المعالج".

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

تحتوي الأنظمة المحمولة (الهواتف والأجهزة اللوحية وأجهزة الكمبيوتر المحمولة) ومعظم أجهزة الكمبيوتر المكتبية على معالج واحد. تتميز محطات العمل والخوادم أحيانًا بمعالجين أو أكثر على لوحة أم واحدة.

يتطلب دعم وحدات المعالجة المركزية المتعددة في نظام واحد العديد من التغييرات في التصميم. كحد أدنى، من الضروري التأكد من اتصالهم الفعلي (توفير عدة مآخذ على اللوحة الأم)، وحل مشكلات تعريف المعالج (انظر لاحقًا في هذه المقالة، بالإضافة إلى ملاحظتي السابقة)، وتنسيق الوصول إلى الذاكرة وتسليم المقاطعة ( يجب أن تكون وحدة تحكم المقاطعة قادرة على توجيه المقاطعات للعديد من المعالجات) وبالطبع الدعم من نظام التشغيل. لسوء الحظ، لم أتمكن من العثور على ذكر وثائقي لإنشاء أول نظام متعدد المعالجات على معالجات إنتل، لكن ويكيبيديا تدعي أن شركة Sequent Computer Systems زودتها بالفعل في عام 1987، باستخدام معالجات Intel 80386، وأصبح دعم الشرائح المتعددة في نظام واحد واسع الانتشار. بدءًا من Intel® Pentium.

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


إستعد للإنطلاق! لوحة سطح المكتب Intel® D5400XS

جوهر

تاريخيًا، ظهرت النوى المتعددة في Intel IA-32 متأخرة عن Intel® HyperThreading، ولكنها تأتي بعد ذلك في التسلسل الهرمي المنطقي.

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

تم تقديم أول معالجات IA-32 متعددة النواة من Intel في عام 2005. منذ ذلك الحين، زاد متوسط ​​عدد النوى في الخادم وسطح المكتب والآن الأنظمة الأساسية للجوال بشكل مطرد.

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


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

فرط الترابط

حتى عام 2002 تقريبًا، كانت الطريقة الوحيدة للحصول على نظام IA-32 قادرًا على تشغيل برنامجين أو أكثر بالتوازي هي استخدام أنظمة متعددة المعالجات. قدم Intel® Pentium® 4، بالإضافة إلى خط Xeon الذي يحمل الاسم الرمزي Foster (Netburst)، تقنية جديدة - مؤشرات الترابط الفائقة أو مؤشرات الترابط الفائقة - Intel® HyperThreading (المشار إليها فيما بعد بـ HT).

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

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

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

تتمتع السيناريوهات النموذجية لتطبيقات سطح المكتب والخادم المصممة لبنيات الأجهزة ذات الأغراض العامة بإمكانية التوازي الذي يتم تنفيذه باستخدام HT. ومع ذلك، يتم استخدام هذه الإمكانية بسرعة. ربما لهذا السبب، في جميع معالجات IA-32 تقريبا، لا يتجاوز عدد Hyperthreads للأجهزة اثنين. في السيناريوهات النموذجية، قد يكون الربح من استخدام ثلاثة أو أكثر من مؤشرات الترابط التشعبية صغيرًا، لكن الخسارة في حجم القالب واستهلاك الطاقة والتكلفة تكون كبيرة.

يتم ملاحظة موقف مختلف في المهام النموذجية التي يتم إجراؤها على مسرعات الفيديو. ولذلك تتميز هذه البنى باستخدام تقنية SMT مع عدد أكبر من الخيوط. نظرًا لأن المعالجات المساعدة Intel® Xeon Phi (التي تم طرحها في عام 2010) قريبة تمامًا من الناحية الأيديولوجية والأنسابية من بطاقات الفيديو، فقد يكون لديها أربعة Hyperthreading على كل نواة - تكوين فريد لـ IA-32.

المعالج المنطقي

من بين "مستويات" التوازي الثلاثة الموصوفة (المعالجات، النوى، الخيوط الفائقة)، قد يكون بعضها أو حتى جميعها مفقودًا في نظام معين. يتأثر هذا بإعدادات BIOS (يتم تعطيل النواة المتعددة وتعدد العمليات بشكل مستقل)، وميزات البنية الدقيقة (على سبيل المثال، كان HT غائبًا عن Intel® Core™ Duo، ولكن تمت إعادته مع إصدار Nehalem) وأحداث النظام (متعددة النواة). يمكن لخوادم المعالج إيقاف تشغيل المعالجات الفاشلة إذا تم اكتشاف الأخطاء والاستمرار في "الطيران" على المعالجات المتبقية). كيف يمكن رؤية حديقة التزامن متعددة المستويات هذه لنظام التشغيل، وفي نهاية المطاف، لتطبيقات التطبيقات؟

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

في أغلب الأحيان، يخفي نظام التشغيل من التطبيقات النهائية ميزات الهيكل الفعلي للنظام الذي يعمل عليه. على سبيل المثال، الطبولوجيا الثلاثة التالية: (2، 1، 1)، (1، 2، 1) و (1، 1، 2) - سيمثل نظام التشغيل معالجين منطقيين، على الرغم من أن الأول منهما يحتوي على معالجين، الثاني - اثنين من النوى، والثالث - اثنين فقط من المواضيع.


يعرض مدير مهام Windows 8 معالجات منطقية؛ ولكن كم هو في المعالجات والنوى والخيوط الفائقة؟


يُظهر الجزء العلوي من Linux 4 معالجات منطقية.

يعد هذا مناسبًا تمامًا لمنشئي التطبيقات - فلا يتعين عليهم التعامل مع ميزات الأجهزة التي غالبًا ما تكون غير مهمة بالنسبة لهم.

تعريف البرمجيات للطوبولوجيا

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

تتوفر معلومات حول طوبولوجيا النظام ككل، بالإضافة إلى موضع كل معالج منطقي في IA-32، باستخدام تعليمات CPUID. منذ ظهور الأنظمة متعددة المعالجات الأولى، تم توسيع مخطط تعريف المعالج المنطقي عدة مرات. حتى الآن، أجزائه موجودة في الأوراق 1 و4 و11 من CPUID. يمكن تحديد الورقة التي يجب النظر إليها من خلال المخطط الانسيابي التالي المأخوذ من المقالة:

لن أحملك هنا بكل تفاصيل الأجزاء الفردية من هذه الخوارزمية. إذا كان هناك اهتمام، فيمكن تخصيص الجزء التالي من هذه المقالة لهذا الغرض. سأحيل القارئ المهتم إلى الذي يدرس هذه المسألة بأكبر قدر ممكن من التفصيل. سأصف هنا أولاً باختصار ماهية APIC ومدى ارتباطها بالطوبولوجيا. بعد ذلك، سننظر في العمل باستخدام ورقة 0xB (أحد عشر بالنظام العشري)، والتي تعد حاليًا الكلمة الأخيرة في "apico-building".

معرف أبيك
Local APIC (وحدة تحكم المقاطعة القابلة للبرمجة المتقدمة) هو جهاز (الآن جزء من المعالج) مسؤول عن التعامل مع المقاطعات القادمة إلى معالج منطقي محدد. كل معالج منطقي له APIC خاص به. ويجب أن يكون لكل واحد منهم في النظام قيمة معرف APIC فريدة. يتم استخدام هذا الرقم من قبل وحدات تحكم المقاطعة للعنونة عند تسليم الرسائل، ومن قبل أي شخص آخر (على سبيل المثال، نظام التشغيل) لتحديد المعالجات المنطقية. لقد تطورت مواصفات وحدة التحكم بالمقاطعة هذه من Intel 8259 PIC عبر Dual PIC وAPIC وxAPIC إلى x2APIC.

حاليًا، وصل عرض الرقم المخزن في معرف APIC إلى 32 بت كاملة، على الرغم من أنه كان يقتصر في الماضي على 16 بت، وحتى في وقت سابق - 8 بتات فقط. اليوم، بقايا الأيام القديمة منتشرة في جميع أنحاء CPUID، ولكن CPUID.0xB.EDX تقوم بإرجاع كافة 32 بت من معرف APIC. على كل معالج منطقي ينفذ تعليمات CPUID بشكل مستقل، سيتم إرجاع قيمة مختلفة.

معرفة الروابط العائلية
لا تخبرك قيمة معرف APIC نفسها بأي شيء عن الهيكل. لمعرفة أي معالجين منطقيين موجودان داخل معالج فيزيائي واحد (أي هما معالجان متشعبان "أخوان")، وأي معالجين موجودان داخل نفس المعالج، وأي منهما معالجان مختلفان تمامًا، تحتاج إلى مقارنة قيم معرف APIC الخاصة بهما. اعتمادًا على درجة العلاقة، سوف تتطابق بعض أجزاءها. هذه المعلومات موجودة في قوائم CPUID.0xB الفرعية، والتي يتم ترميزها في ECX. يصف كل واحد منهم موضع حقل البت لأحد مستويات الهيكل في EAX (بتعبير أدق، عدد البتات التي يجب إزاحتها إلى اليمين في معرف APIC لإزالة مستويات الهيكل الأدنى)، بالإضافة إلى نوع هذا المستوى - Hyperthread أو Core أو Processor - في ECX.

المعالجات المنطقية الموجودة داخل نفس النواة سيكون لها نفس جميع بتات معرف APIC، باستثناء تلك التي تنتمي إلى حقل SMT. بالنسبة للمعالجات المنطقية الموجودة في نفس المعالج، جميع البتات باستثناء الحقول Core وSMT. وبما أن عدد الأوراق الفرعية لـ CPUID.0xB يمكن أن يتزايد، فإن هذا المخطط سيسمح لنا بدعم وصف الطبولوجيا بعدد أكبر من المستويات، إذا دعت الحاجة إلى ذلك في المستقبل. علاوة على ذلك، سيكون من الممكن إدخال مستويات متوسطة بين المستويات الموجودة.

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

ألاحظ أن CPUID.0xB ليس المصدر الوحيد للمعلومات حول المعالجات المنطقية المتوفرة لنظام التشغيل. يتم ترميز قائمة بجميع المعالجات المتاحة لها، إلى جانب قيم معرف APIC الخاصة بها، في جدول MADT ACPI.

أنظمة التشغيل والطوبولوجيا

توفر أنظمة التشغيل معلومات حول طوبولوجيا المعالجات المنطقية للتطبيقات التي تستخدم واجهاتها الخاصة.

في Linux، توجد معلومات الهيكل في الملف الزائف /proc/cpuinfo بالإضافة إلى مخرجات الأمر dmidecode. في المثال أدناه، قمت بتصفية محتويات cpuinfo على بعض الأنظمة رباعية النواة بدون HT، مع ترك الإدخالات المتعلقة بالهيكل فقط:

النص المخفي

ggg@shadowbox:~$ cat /proc/cpuinfo |grep "processor\|physical\ id\|siblings\|core\|cores\|apicid" المعالج: 0 معرف فعلي: 0 أشقاء: 4 معرف أساسي: 0 مركز لوحدة المعالجة المركزية: 2 apicid: 0 apicid الأولي: 0 المعالج: 1 المعرف الفعلي: 0 الأشقاء: 4 المعرف الأساسي: 0 نوى وحدة المعالجة المركزية: 2 apicid: 1 apicid الأولي: 1 المعالج: 2 المعرف الفعلي: 0 الأشقاء: 4 المعرف الأساسي: 1 نواة وحدة المعالجة المركزية: 2 apicid: 2 apicid الأولي: 2 المعالج: 3 المعرف الفعلي: 0 الأشقاء: 4 المعرف الأساسي: 1 مركز وحدة المعالجة المركزية: 2 apicid: 3 apicid الأولي: 3

في FreeBSD، يتم الإبلاغ عن الهيكل عبر آلية sysctl في متغير kern.sched.topology_spec بتنسيق XML:

النص المخفي

user@host:~$ sysctl kern.sched.topology_spec kern.sched.topology_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 مجموعة الموضوعمجموعة سمت 2, 3 مجموعة الموضوعمجموعة سمت 4, 5 مجموعة الموضوعمجموعة سمت 6, 7 مجموعة الموضوعمجموعة سمت

في نظام التشغيل MS Windows 8، يمكن رؤية معلومات الهيكل في إدارة المهام.

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

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

كيفية تشغيل جميع نوى المعالج؟

لذلك، سيكون هناك عدة طرق. لهذا السبب أنا أعرض أولاً.

انتقل إلى ابدأ - تشغيل أو فوز + مفاتيح R

حدد الحد الأقصى لعدد المعالجات.

  • انتقل إلى مدير المهام - ctrl+shift+esc.
  • أو ctrl+alt+del ومدير المهام.
  • أو انقر بزر الماوس الأيمن على لوحة التحكم وحدد مدير المهام.

انتقل إلى علامة التبويب العمليات. ابحث عن اللعبة وانقر بزر الماوس الأيمن على العملية. بالمناسبة، يجب أن تكون اللعبة قيد التشغيل. يمكنك طيها إما Win+D أو alt+tab.

حدد تطابق المجموعة.

حدد الكل وانقر فوق موافق.

لمعرفة ما إذا كانت جميع النوى تعمل أم لا، انتقل إلى علامة التبويب "الأداء" في مدير المهام.

سيكون هناك رسم تخطيطي في جميع علامات التبويب.

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

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

  • Win7 - انتقل إلى لوحة التحكم، انتقل إلى خيارات الطاقة - تغيير إعدادات الخطة - تغيير إعدادات الطاقة الإضافية - إدارة طاقة المعالج - الحد الأدنى لحالة المعالج.
  • Win8، 10 - أو: الإعدادات - النظام - الطاقة والسكون - إعدادات الطاقة المتقدمة - تكوين خطة الطاقة - تغيير إعدادات الطاقة المتقدمة - إدارة طاقة المعالج - الحد الأدنى لحالة المعالج

وللاستخدام الكامل يجب أن يكون 100%.

كيفية التحقق من عدد النوى قيد التشغيل؟

نطلقه ونرى عدد النوى النشطة.

لا تخلط بين هذه المعلمة وعدد المعالجات الافتراضية التي يتم عرضها على اليمين.

ما الذي يؤثر على عدد نوى المعالج؟

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

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



جاستروجورو 2017