اتحاد طلبة هندسة الحاسوب والشبكات - المدونه الرسميه C.N.E : معالجات Core 2 Quad

المشاركات الشائعة

معالجات Core 2 Quad



وهي ببساطة شديدة عبارة عن معالجين من طراز Core 2 Duo ، ملتحمين في بعض ، وكلنا نعرف أن معالج Core 2 Duo الواحد يحتوي علي نواتين ، وعند دمج اثنين منه ، نحصل علي معالج بأربع أنوية ، وهذا ببساطة يصنع معالجا من فئة Core 2 Quad .


والحقيقة أن مسألة دمج المعالجات للحصول علي عدد أكبر من الأنوية ، هي مجرد وسلية للهروب من مأزق زيادة التردد ، فالمعالج يتكون من مجموعة دوائر كهربية تعمل علي نحو متكرر (متردد) عددا من المرات في الثانية ، أي يتكون باختصار من (دوائر+تردد) ، فاذا لم تستطع زيادة التردد ، فقم بزيادة عدد الدوائر ! 


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



ومن هنا جائت الفكرة بعمل المعالجات ثنائية النواة ورباعية النواة .
ولكن زيادة الدوائر لا تعني بالضرورة الحصول علي أداء أعلي علي نحو مباشر ، حيث تتداخل معها عملية البرمجة .


والشئ الذي قد يغيب عن أذهان البعض ، هو أن كتابة البرامج هي مرحلة تالية لصناعة العتاد Hardware ، فتخيلوا معي أول حاسب في الوجود ، هذا الحاسب تم تركيبه وتصميمه قبل تولد اي فكرة لكتابة برنامج ، وقبل حتي وجود مهنة المبرمج ، وبعد صناعة الحاسب ، بدأ المهندسون في كتابة البرامج لاستغلال هذا الحاسب في ما يريدون .


ولهذا نستطيع أن نتفهم أنه في زمن وجود معالج وحيد (بنواة وحيدة) كان السائد في صناعة البرمجة هو كتابة البرامج لتعمل من أجل معالج واحد ، وهو الموجود .


وكتابة البرامج هي عملية تنقسم الي شقين مهمين : كتابة البرنامج بلغة عالية المستوي High Level ، ثم كتابته بلغة منخفضة المستوي Low Level .


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


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


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


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


وبالطبع لا داعي أن أقول ان مثل هذه العملية سوف تتطلب جهدا اضافيا من المبرمج ، والذي يقع عليه العبأ كله ، ولكنه في النهاية يظل سعيدا ، لأن برنامجه سوف يعمل بطريقة أسرع ، وسوف يمكنه ذلك من القيام المزيد والمزيد من الوظائف .
وهنا تبرز مشكلة خطيرة ، مشكلة سوف تبرر كيف أن زيادة عدد دوائر المعالج (زيادة عدد الأنوية) لا تعني بالضرورة زيادة الأداء الي الضعف أو الي أربعة أضعاف ، هذه المشكلة هي التقسيم نفسه !
قلنا أن خطوات البرنامج يتم تقسيمها ، لكن ماذا عن الخطوات التي لا يمكن تقسيمها ؟ 
والخطوات التي لا يمكن أو يستحيل تقسيمها ، هي خطوات يجب أن تتم بشكل متسلسل ، فالخطوة 2 تتم بعد الخطوة 1 ، والخطوة 2 تعتمد علي الخطوة 1 ، لذلك لا يمكن فصلها عنها .
وهذه هي الخصائص التي تميز الخطوات الغير ممكن فصلها : التسلسل والاعتمادية .
ونضرب لذلك مثالا تافها : 
 5+5 = ناتج الناتج + 10 = ؟؟؟؟


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


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


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


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



ومن هذا المنطلق يأتي معالج Q9770 ، بتردد 3.2GHz ، أي أنه قادر علي تنفيذ أكثر من 3 مليار خطوة في الثانية الواحدة ، ويحتوي المعالج علي أربعة أنوية تعمل بنفس التردد ، و يمكننا بكل هدوء القول بأن المعالج يعمل بسرعة 12.8GHz ، علي أساس 3.2X4 ، ولكن هذا لا يصلح بسبب تلك الخطوات المتسلسلة التي تكلمنا عنها ، والتي ستعمل على نواة واحدة فقط منهم بتردد 3.2GHz فقط .




يحتوي المعالج علي وظيفة لتوفير الطاقة ، وتقوم هذه الوظيفة بتخفيض تردد الأنوية كلها ، 


اذا كان الحمل علي المعالج خفيفا

بهاء المومني
< >

ليست هناك تعليقات:

إرسال تعليق