موقف من الحياة اليومية#

داخل محل كمبيوتر علشان تشتري لابتوب.
على جهاز مكتوب: «16 Cores، و24 Threads، ولحد 5.2 GHz، وCache حجمه 30 MB».
وعلى جهاز تاني جنبه: «6 Cores، و6 Threads، ولحد 4.6 GHz، وCache حجمه 9 MB».

البياع بيقولك: «الأول أقوى بكتير».
طب يعني إيه Core؟
وإيه الفرق بينه وبين الـ Thread؟
وهل الجيجاهرتز الأعلى معناه دايمًا جهاز أسرع؟

خلاصة سريعة#

  • الـ CPU Core · نواة المعالجوحدة معالجة كاملة داخل شريحة المعالج تنفّذ التعليمات بنفسها. ويحتوي المعالج الحديث على أكثر من نواة تعمل في الوقت نفسه.عرض في القاموس (نواة) معالج كامل جوه الشريحة، والمعالج الحديث فيه أكتر من Core بيشتغلوا في نفس الوقت.
  • الـ Thread · الخيطسلسلة من التعليمات ينفذها المعالج، ويمكن للبرنامج الواحد أن يقسم عمله على أكثر من خيط. وعدد الخيوط في مواصفات المعالج هو عدد الخيوط التي يستطيع تشغيلها في الوقت نفسه.عرض في القاموس (خيط) شغل الـ Core بينفذه، وفيه Cores بتقدر تشتغل على 2 Threads مع بعض، بس ده مش Core زيادة.
  • الـ Clock Speed · تردد المعالج (سرعة الساعة)عدد الدورات التي ينفذها المعالج في الثانية، ويقاس بالجيجاهرتز، فمعالج بتردد 3.2 GHz ينفذ 3.2 مليار دورة في الثانية. وللمعالج تردد أساسي، وتردد أقصى يصل إليه عند الحاجة.عرض في القاموس عدد الدورات في الثانية، والـ CPU Cache · ذاكرة المعالج المؤقتة (الكاش)ذاكرة صغيرة وسريعة جدًا داخل المعالج، تحتفظ بنسخة من البيانات والتعليمات المستخدمة حديثًا حتى لا ينتظر المعالج الذاكرة الرئيسية. ولها مستويات، وكل مستوى أكبر وأبطأ من الذي قبله.عرض في القاموس ذاكرة صغيرة وسريعة جوه المعالج.
    والرقمين دول مالهمش معنى لوحدهم: المعالج الأحدث ممكن يبقى أسرع والـ Clock Speed بتاعه أقل.

ببساطة#

فكّر في مطبخ مطعم:

  • الـ Core = طباخ.
    مطبخ فيه 8 طباخين بيخلّص طلبات أكتر من مطبخ فيه طباخ واحد.
  • الـ Thread = طلب شغال عليه الطباخ.
    والطباخ الشاطر بيمسك طلبين مع بعض: لما الأول يبقى في الفرن ومستني، بيشتغل في التاني بدل ما يقف.
    بس هو لسه طباخ واحد بإيدين اتنين.
  • الـ Clock Speed = سرعة إيد الطباخ.
    بس الطباخ الخبير ممكن يعمل في كل حركة أكتر من طباخ جديد إيده أسرع.
  • الـ Cache = الحاجات اللي جنب الطباخ: الطبق اللي في إيده هو L1، والرف اللي جنبه هو L2، والتلاجة المشتركة بين كل الطباخين هي L3.
    أما الـ RAM فهي المخزن اللي في آخر المطعم: فيه كل حاجة، بس المشوار ليه طويل.
الـ Core بيدوّر على المعلومة في الأقرب الأول. أول مرة بيروح لحد الـ RAM، ونسخة منها بتفضل في الـ Cache، فالمرة التانية بيلاقيها قريبة.

بالتفصيل#

الـ Core: معالج جوه المعالج#

في مقال المعالج عرفنا إن المعالج بينفذ التعليمات واحدة ورا التانية بدورة Fetch ← Decode ← Execute.

الـ CPU Core · نواة المعالجوحدة معالجة كاملة داخل شريحة المعالج تنفّذ التعليمات بنفسها. ويحتوي المعالج الحديث على أكثر من نواة تعمل في الوقت نفسه.عرض في القاموس هو الوحدة اللي بتعمل الدورة دي كاملة.
وزمان كان المعالج فيه Core واحد بس.
النهارده الشريحة الواحدة فيها Cores كتير، وكل Core بينفذ تعليمات لوحده في نفس الوقت.

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

الـ Threads: Core واحد شغال على حاجتين#

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

وفيه تقنية بتخلّي الـ Core الواحد يشتغل على 2 Threads:

  • عند Intel اسمها Hyper-Threading.
  • عند AMD اسمها SMT (Simultaneous Multithreading) / Hyper-Threading · تعدد الخيوط المتزامنتقنية تجعل النواة الواحدة تظهر لنظام التشغيل كنواتين منطقيتين، فتعمل على خيطين، وتستغل الوقت الذي كانت ستنتظر فيه. واسمها عند Intel تقنية Hyper-Threading، وعند AMD تقنية SMT.عرض في القاموس (Simultaneous Multithreading، يعني تشغيل أكتر من Thread في نفس الوقت).

بتشتغل إزاي؟
الـ Core كتير بيقف مستني، مثلًا مستني بيانات جاية من الذاكرة.
فبدل ما يقف، بيشتغل في الـ Thread التاني لحد ما الأول يكمّل.
ونظام التشغيل بيشوف كل Core من دول كأنه 2 Logical Processors (معالجات منطقية).

P-cores وE-cores#

من الجيل الـ 12 من معالجات Intel Core، الشريحة الواحدة فيها نوعين من الـ Cores:

  • P-cores (Performance cores، يعني Cores الأداء): كبيرة للشغل التقيل، والـ Core منها بيشتغل على 2 Threads.
  • E-cores (Efficient cores، يعني الـ Cores الموفّرة): صغيرة وبتستهلك كهربا أقل، للشغل اللي في الخلفية زي برنامج الحماية، والـ Core منها بيشتغل على Thread واحد.

وعلشان كده، عدد الـ Threads مش دايمًا ضعف عدد الـ Cores.
خد مثال حقيقي من صفحة مواصفات Intel Core i9-12900K:

  • 16 Cores: منهم 8 P-cores و8 E-cores.
  • 24 Threads: الـ P-cores بيدّوا 8 × 2 = 16 Threads، والـ E-cores بيدّوا 8 × 1 = 8 Threads، والمجموع 24.

وعلى العكس، معالج Intel Core i5-9600K فيه 6 Cores و6 Threads، لأنه مافيهوش Hyper-Threading.

معالج Core i9-12900K: الـ P-cores بـ 2 Threads، والـ E-cores بـ Thread واحد، فالمجموع 16 Cores و24 Threads.

الـ Clock Speed: الجيجاهرتز#

جوه المعالج «ساعة» بتدق بانتظام، وكل دقة اسمها Cycle (دورة).
والـ Clock Speed · تردد المعالج (سرعة الساعة)عدد الدورات التي ينفذها المعالج في الثانية، ويقاس بالجيجاهرتز، فمعالج بتردد 3.2 GHz ينفذ 3.2 مليار دورة في الثانية. وللمعالج تردد أساسي، وتردد أقصى يصل إليه عند الحاجة.عرض في القاموس هو عدد الـ Cycles في الثانية، وبيتقاس بالـ Hertz (Hz) · الهرتزوحدة قياس التردد في النظام الدولي للوحدات، وتساوي مرة واحدة في الثانية. وتُقاس بها سرعة ساعة المعالج، فالجيجاهرتز (GHz) يساوي مليار دورة في الثانية.عرض في القاموس (جيجاهرتز).
يعني المعالج اللي الـ Clock Speed بتاعه 3.2 GHz بيعمل 3.2 مليار Cycle في الثانية.

وفي المواصفات هتلاقي غالبًا رقمين:

  • Base Frequency (السرعة الأساسية): السرعة العادية اللي المعالج شغال بيها.
  • Max Turbo Frequency (أقصى سرعة، في معالجات Intel): أعلى سرعة المعالج يقدر يوصلها لما الشغل يتقل.

ورقم «لحد 5.2 GHz» اللي في الموقف هو الـ Max Turbo Frequency، مش السرعة طول الوقت.

الـ Cache: ذاكرة صغيرة جنب الـ Core#

الـ RAM أبطأ بكتير من المعالج.
فلو الـ Core راح للـ RAM في كل تعليمة، هيقضي أغلب وقته مستني.

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

1 - L1: الأصغر والأسرع، وأقرب حاجة للـ Core، ولكل Core الـ L1 بتاعه.

2 - L2: أكبر من L1 وأبطأ منه شوية، وغالبًا لكل Core الـ L2 بتاعه.

3 - L3: الأكبر والأبطأ فيهم، ومشترك بين كل الـ Cores.

الـ Core بيدوّر في L1 الأول، ولو مالقاش اللي عايزه بيروح L2، وبعدها L3، وآخر حاجة الـ RAM.
ولما بيجيب حاجة من الـ RAM، نسخة منها بتفضل في الـ Cache للمرة الجاية.

ليه ده بينفع؟
لأن البرامج عندها عادتين:

  • بترجع تستخدم نفس الحاجة تاني قريب: زي التعليمات اللي جوه Loop (تكرار) بتتنفذ مرة ورا مرة.
    واسمها Temporal Locality.
  • بتستخدم الحاجة اللي جنب اللي استخدمتها: زي إنها تقرا قايمة عنصر ورا التاني.
    واسمها Spatial Locality.

ودي مش قوانين ثابتة، لكنها بتحصل في أغلب البرامج، فالـ Cache بيوفر مشاوير كتير للـ RAM.

جرّب بنفسك: معالجك فيه كام Core؟#

على Windows:

1 - اضغط Ctrl + Shift + Esc علشان تفتح الـ Task Manager (مدير المهام).

2 - اختار Performance من الشمال، وبعدها CPU.

3 - النتيجة المتوقعة: تحت الرسم هتلاقي Cores (عدد الـ Cores)، وLogical processors (عدد الـ Threads).

على Linux:

1 - افتح الطرفية، واكتب:

نافذة الطرفية
lscpu

2 - النتيجة المتوقعة: معلومات كتير عن المعالج، وأهم السطور مثلًا (الأرقام هنا مثال):

الناتج المتوقع
CPU(s):                 8
Thread(s) per core:     2
Core(s) per socket:     4
Socket(s):              1
L1d cache:              192 KiB
L1i cache:              128 KiB
L2 cache:               5 MiB
L3 cache:               8 MiB

يعني المعالج ده فيه 4 Cores، وكل Core بيشتغل على 2 Threads، فالمجموع 8 Threads (والسطر CPU(s) هو عدد الـ Threads).
وأحجام الـ Cache هنا مجموع الـ Cache في كل الـ Cores، مش لـ Core واحد.

ومن أي جهاز: أداة معلومات الجهاز في موقعنا بتعرض عدد الـ Logical processors، يعني عدد الـ Threads.

للمتعمقين

الـ L1 متقسم نصين

الـ L1 في كل Core غالبًا متقسم لجزئين: جزء للتعليمات (L1i) وجزء للبيانات (L1d).
مثلًا معالجات Intel Xeon Scalable من الجيل التالت للخامس فيها في كل Core 32 KB للتعليمات و48 KB للبيانات، و2 MB للـ L2 خاص بكل Core في الجيلين الرابع والخامس.

مين بيوزع الشغل على الـ P-cores والـ E-cores؟

نظام التشغيل هو اللي بيقرر أنهي Thread يشتغل على أنهي Core.
وفي معالجات Intel اللي فيها النوعين، فيه جزء جوه المعالج اسمه Thread Director بيراقب كل Thread وحالة كل Core، ويبعت لنظام التشغيل اقتراح علشان الشغل التقيل يروح للـ P-cores، والخفيف للـ E-cores.

أرقام الـ i9-12900K كاملة

  • الـ Base Frequency للـ P-cores 3.20 GHz، وللـ E-cores 2.40 GHz، والـ Max Turbo Frequency 5.20 GHz.
  • في صفحة المواصفات سطرين للـ Cache: Intel Smart Cache حجمه 30 MB، وTotal L2 Cache حجمه 14 MB.

الأرقام دي لحد فين بتنفع؟

عدد الـ Cores الكبير بيفيد البرامج اللي بتقسم شغلها على Threads كتير، زي المونتاج والبرامج الهندسية.
لكن برنامج بيشتغل على Thread واحد بيستفيد أكتر من سرعة الـ Core الواحد، مش من عدد الـ Cores.

أخطاء شائعة#

  • «24 Threads يعني 24 Cores»: لأ.
    الـ Threads ممكن تبقى أكتر من الـ Cores، لأن الـ Core الواحد ممكن يشتغل على 2 Threads، بس هو لسه Core واحد.
  • «الـ GHz الأعلى يبقى أسرع وخلاص»: لأ.
    المعالج الأحدث بيعمل شغل أكتر في كل Cycle، فقارن بين معالجات نفس الشركة ونفس الجيل بس.
  • «الـ Cache هو الـ RAM»: لأ.
    الـ Cache ذاكرة صغيرة جوه المعالج نفسه فيها نسخة من بعض البيانات، والـ RAM أكبر بكتير وبرا المعالج.

المصطلحات#

  • المعالج (CPU (Central Processing Unit) · المعالج (وحدة المعالجة المركزية)الجزء الذي ينفّذ تعليمات البرامج في الحاسوب، تعليمةً بعد تعليمة. ويتكون أساسًا من وحدة الحساب والمنطق والمسجّلات ووحدة التحكم.عرض في القاموس): الجزء الذي ينفّذ تعليمات البرامج في الحاسوب.
  • نواة المعالج (CPU Core · نواة المعالجوحدة معالجة كاملة داخل شريحة المعالج تنفّذ التعليمات بنفسها. ويحتوي المعالج الحديث على أكثر من نواة تعمل في الوقت نفسه.عرض في القاموس): وحدة معالجة كاملة داخل شريحة المعالج.
  • الخيط (Thread · الخيطسلسلة من التعليمات ينفذها المعالج، ويمكن للبرنامج الواحد أن يقسم عمله على أكثر من خيط. وعدد الخيوط في مواصفات المعالج هو عدد الخيوط التي يستطيع تشغيلها في الوقت نفسه.عرض في القاموس): سلسلة من التعليمات ينفذها المعالج.
  • تعدد الخيوط المتزامن (SMT (Simultaneous Multithreading) / Hyper-Threading · تعدد الخيوط المتزامنتقنية تجعل النواة الواحدة تظهر لنظام التشغيل كنواتين منطقيتين، فتعمل على خيطين، وتستغل الوقت الذي كانت ستنتظر فيه. واسمها عند Intel تقنية Hyper-Threading، وعند AMD تقنية SMT.عرض في القاموس): تقنية تجعل النواة الواحدة تعمل على خيطين.
  • تردد المعالج (Clock Speed · تردد المعالج (سرعة الساعة)عدد الدورات التي ينفذها المعالج في الثانية، ويقاس بالجيجاهرتز، فمعالج بتردد 3.2 GHz ينفذ 3.2 مليار دورة في الثانية. وللمعالج تردد أساسي، وتردد أقصى يصل إليه عند الحاجة.عرض في القاموس): عدد الدورات التي ينفذها المعالج في الثانية.
  • الهرتز (Hertz (Hz) · الهرتزوحدة قياس التردد في النظام الدولي للوحدات، وتساوي مرة واحدة في الثانية. وتُقاس بها سرعة ساعة المعالج، فالجيجاهرتز (GHz) يساوي مليار دورة في الثانية.عرض في القاموس): وحدة قياس التردد، وتساوي مرة واحدة في الثانية.
  • ذاكرة المعالج المؤقتة (CPU Cache · ذاكرة المعالج المؤقتة (الكاش)ذاكرة صغيرة وسريعة جدًا داخل المعالج، تحتفظ بنسخة من البيانات والتعليمات المستخدمة حديثًا حتى لا ينتظر المعالج الذاكرة الرئيسية. ولها مستويات، وكل مستوى أكبر وأبطأ من الذي قبله.عرض في القاموس): ذاكرة صغيرة وسريعة داخل المعالج فيها نسخة من البيانات المستخدمة حديثًا.

اختبر نفسك#

معالج فيه 8 Cores، وكل Core بيشتغل على 2 Threads. نظام التشغيل هيشوف كام Logical processor؟

إظهار الإجابة

الإجابة الصحيحة: 16، لأن كل Core بيظهر كـ 2 Logical processors

مع Hyper-Threading أو SMT، كل Core بيظهر لنظام التشغيل كـ 2 Logical processors، فالعدد 8 × 2 = 16.
بس لسه في الحقيقة 8 Cores بس.

معالج قديم الـ Clock Speed بتاعه 4.5 GHz، ومعالج جديد من نفس الشركة الـ Clock Speed بتاعه 4 GHz. أنهي أسرع؟

إظهار الإجابة

الإجابة الصحيحة: مش شرط، لأن المعالج الأحدث ممكن يعمل شغل أكتر في كل Cycle

الـ Clock Speed بيقول عدد الـ Cycles بس، مش الشغل اللي بيتعمل في كل Cycle.
والمعالج الأحدث ممكن يبقى أسرع والـ Clock Speed بتاعه أقل، علشان كده قارن بين معالجات نفس الجيل.

الـ Core محتاج معلومة. بيدوّر عليها فين الأول؟

إظهار الإجابة

الإجابة الصحيحة: في L1، لأنه الأقرب والأسرع

الـ Core بيدوّر في L1 الأول، ولو مالقاش بيروح L2، وبعدها L3، وآخر حاجة الـ RAM.
وكل ما المستوى يبعد عن الـ Core، بيبقى أكبر وأبطأ.