فروق المعمارية بين معالجات Core2Q و Core i5 و Core i7 .. ما الجديد ؟

المصدر: http://www.arabhardware.net/forum/showthread.php?t=133578

———-.

فروق المعمارية بين معالجات Core2Q و Core i5 و Core i7 .. ما الجديد؟

اختلفت معالجات شركة Intel في الفترة الأخيرة ، وتنوعت بثلاثة سلاسل كاملة متاحة للبيع في الوقت الحالي .
وعلي الرغم من ذلك ، فمن الناحية التقنية فان المعالجات المذكور اسماؤها في العنوان يشتركون في شئ أساسي واحد ، كونهم جميعا معالجات رباعية النواة !
كيف ذلك ؟ وما الذي يميزهم عن بعض اذا ؟ وكيف يصب ذلك في بوتقة زيادة الأداء المشهورة ؟
تعالوا نتعرف علي كل منهم معا :
أولا : معمارية معالجات 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 فقط .
يحتوي المعالج علي وظيفة لتوفير الطاقة ، وتقوم هذه الوظيفة بتخفيض تردد الأنوية كلها ، اذا كان الحمل علي المعالج خفيفا .

Continue reading