مقال | شرح مبسط عن معمارية المعالجات “CPU”
الجميع عندما يختار بين المعالجات ينظر لها بنظرة سطحية ، ويعتقد ان فكرتها بسيطة وهي مجرد ارقام وأن صناعتها كونية وان لها معايير ثابتة لا تتغير وان جميع معمارية المعالجات ثابثة .
ولكن الحقيقة مختلفة تماماً عن ذلك وان هذه الصناعة صحيح انها معقدة تعقيد لا يتخيله احد ولكن في المقابل هذا التعقيد قادم من اختلاف طرق تصميم المعالج نفسه.
ويكون الاختلاف في كما ذكرنا في تصميم المعالج نفسه ، حيث تقوم بعمليات بطرق مختلفة جداً ولكن النتيجة تكون دائما واحد. أي بمعنى أن معالجة البيانات يمكن أن تتم بطرق مختلفة. قد تتساوي أو تتفاوت في التعقيد والبساطة، لكنها تؤدي الغرض في النهاية. ومن هنا تأتي معمارية التي قد تم بناء المعالج بها .
معمارية المعالجات
وهي البنية الداخلية للمعالج و تحدد كيفية تعامله و تنفيذه للعمليات المطلوبة منه وهي دائما تعمل على تحسين ما يسمى IPC Instruction Per Clock أي عدد التعليمات التي يستطيع المعالج تنفيذها خلال نبضة واحدة “.
مثال لفهم المسألة وارجو التركيز قليلاً
اذا طلبت من بعض العُمال ( ولنتعبر أنهم الترانزيستورز ) حمل بعض الصناديق من غرفه لوضعها في غرفه اخرى ( ولنتعبر أنهم الإشارات الكهربية التي يتم ترجمتها إلي أوامر ينفذها المعالج ). ماذا سيتطلب منهم لفعل هذا العمل ونقل الصناديق ؟، بكل تأكيد ستُستهَلك طاقة من جسدهم للقيام بهذه المهمة.
هذه الطاقة سترفع من درجة حرارتهم، وكلما ارتفعت درجة حرارتهم كلما شعروا بالإرهاق، وتؤثر عليهم بشكل سلبي في تأديت العمل بشكل اسرع. اذا يجب علي توظيف قوتهم بشكل صحيح يجب ان اقدم لهم مراوح بداخل الغرفه لتخفض من درجة حرارتك وحرارة الغرفة.
يجب ان أمدهم بالوجبات التي تمدهم بالطاقة دائما. يجب ان أجد افضل الحلول لإستغلال طاقتهم في نقل الصناديق بأفضل طريقة ممكنة دون أي اضرار او خسائر، لنجسد هذا المثال بشكل حي علي المعالج.
إذا اخذنا معالج خاص بالحاسوب الشخصي او اللابتوب ستجد انه يتم دعمه بالطاقة دائما من مصدر طاقة ثابت من منزلك. ايضا ستجد في هذا الحاسوب مصدر للتهوية مثل المراوح او الفتحات لتقوم بخفض درجة حرارة المعالج ليظل يعمل بكل طاقته وبأعلي كفائة.
اذا ماذا يمكننا ان نفعل لنضع هذا المعالج بداخل جهاز الكتروني بحجم اليد ؟ وهو هاتفك علي سبيل المثال. هنا وجدت المعماريات وهدفها الرئيسي تقيديم افضل اداء مع أقل استهلاك للطاقة والحرارة.
لذلك نرى معالجات Intel دائما ما تكون أسرع من AMD عند نفس التردد و نفس المواصفات الأخرى. وفي المقابل نرى ان المعالجات التي تاتي بمعمارية ARM دئما ماتكون موفرة في الطاقة كما هو الحال في معالجات الهواتف .
نستطيع ان نستنتج ان معمارية حاسوب ما، أو معالج ما، هي الطريقة التي تترتب فيها دوائره الكهربية. بحيث تعالج البيانات بطريقة معينة. فشركة رقم “1” تتبع طريقتها الخاصة في معالجة البيانات والتي ابتكرها مهندسوها. وشركة “2” تتبع طريقة أخري تختلف عن شركة “1”، ابتكرها مهندسوها أيضا.
ولتخيل ذلك يمكننا تصور حل مسألة حسابية بطريقتين مختلفين، وكلا الطريقتين صحيحتين، ليخرج ناتج نهائي واحد.
2 (3 +4) = ؟؟
الحل الأول : نقوم بضرب رقم 2 في كلا من 3 و 4
2X3= 6
2X4 = 8 ثم نجمع ناتج العمليتين
14 = 6 + 8
الناتج = 14
الحل الثاني : نقوم بجمع 3 و 4 أولا
4+3 = 7
ثم نضرب الناتج (7) في رقم 2
7X2= 14
الناتج = 14
كما لاحظنا اختلفت الطريقة ، ولكن في كلا الحالتين كانت النتيجة ثابت وهي 14 ، كذا المعالجات، تعالج البيانات بطريقة مختلفة لكن الناتج النهائي واحد.
وقبل ان نقوم بشرح طريقة حساب المعالجات يجب علينا أن نعرف الطريقة الدقيقة لمعالجة البيانات في المعالج، ونضرب لذلك مثالا ثانيا:
المثال الثاني : 8+1 = ؟؟
يتم استخراج مفردات المسألة من الذاكرة المؤقتة RAM ، أي يتم استخراج أرقام المسألة ويتم استخراج علامات الجمع + أو الضرب x أو غيرهم.
تقرأ علامات الجمع أو الضرب أولا، ومن ثم تحول العملية كلها الي تجمع من الدوائر الكهربية داخل المعالج المركزي، يسمي وحدة الجمع Add Unit أو الضرب Multiply Unit .
في وحدة الجمع يتم تسجيل رقم 8 في ذاكرة حسابية تسمي المُخزن أو المسجل Register (وهي ذاكرة صغيرة لتخزين البيانات التي ستجري عليها المعالجة حالا )، ويحدث نفس الأمر مع الرقم 1 في ذاكرة حسابية أخري.
يتم جمع الرقمين في وحدة الجمع ، ويتم وضع الناتج النهائي في مسجل أخير. ويتم نقل الناتج من المسجل الأخير الي الذاكرة المؤقتة RAM أو وحدة التخزين Disk،
هذه هي الخطوات الأساسية لأي عملية معالجة يقوم بها المعالج. البيانات تذهب من الذاكرة المؤقتة RAM الي ذاكرة التسجيل لتسجل هناك ويتم اجراء العملية الحسابية عليها.
ونعود لتطبيق المثال الأول علي المعالجات ، فالمعالج “1” يتبع تصميم معين معين يتيح له حل المسألة السابقة باستخدام الحل الأول :
نقوم برجع الى المثال السابق في الاعلى في الحل الاول 2 (3 +4) = ؟؟
نقوم بضرب رقم 2 في كلا من 3 و 4
2X3= 6
2X4 = 8 ثم نجمع ناتج العمليتين
14 = 6 + 8
الناتج = 14
يأخذ المعالج رقم 2 من الذاكرة المؤقتة RAM ،ويقوم بتخزينه في مسجل رقم 1 ، ويكرر نفس الأمر مع رقم 3 ورقم 4 ، بتخزينهما في المسجلين رقم 2 و 3 .
يتم ضرب رقم 2 في رقم 3، وتسجيل النتيجة في مسجل رقم 4.
يتم ضرب رقم 2 في 4 ، وتسجيل النتيجة في مسجل رقم 5 .
وأخيرا يتم جمع قيمة المسجل رقم 4 ورقم 5، أي يتم جمع ناتج العمليتين السابقتين 6 + 8 ، وتسجيل النتيجة في مسجل رقم 6 .
ونستنتج من ذلك ان المعالج “1” احتاج الى 6 مسجلات، وعمليتين ضرب، وعملية جمع لإتمام المسألة السابقة بالحل الأول .
ومعني أنه احتاج إلي كل ذلك، اي ان المهندسين سوف يصممون ستة مسجلات، يتصل ثلاثة منهم بوحدة ضرب، كوسيلة لإدخال البيانات، (إدخال أرقام المسألة).
ويخرج من وحدة الضرب هذه مسجلين آخرين (كوسيلة لتسجيل نتائج الضرب)، يتصل المسجلين مباشرة بوحدة الجمع، والتي يخرج منها مسجل أخير وحيد.
وبالتالي نستطيع تخيل مخطط معمارية المعالج ” 1 ” كالتالي:
اما بحل الثاني 2 (3 +4) = ؟؟
أما المعالج “2” فيحمل تصميما معينا يتيح له حل المسألة السابقة باستخدام الحل الثاني :
نقوم بجمع 3 و 4 أولا
4+3 = 7
ثم نضرب الناتج (7) في رقم 2
7X2= 14
الناتج = 14
يأخذ المعالج رقم 3 ورقم 4 من الذاكرة العشوائية RAM ، ويضعهما في مسجلين (مسجل رقم 1 ورقم 2 )، ويقوم بإجراء عملية جمع عليهما، ويضع ناتج العملية في مسجل رقم 3 .
يتم تخزين رقم 2 في مسجل رقم 4 ، ويتم ضرب قيمة هذا المسجل في قيمة المسجل رقم 3 ، ويتم وضع الناتج الجديد في المسجل رقم 5 .
ونستنتج هنا انه احتاج المعالج “2”إلي خمسة مسجلات والي عملية ضرب واحدة وعملية جمع واحدة.
ومعني أنه احتاج إلي كل ذلك، أن المهندسين سوف يصممون خمسة مسجلات، يتصل اثنين منهم بمعالج الجمع (كوسيلة لإدخال البيانات)،
يخرج من تلك الوحدة مسجل جديد لتخزين ناتج العملية، ويتصل هذا المسجل. بمسجل آخر، ويدخل الاثنان إلي معالج الضرب، والذي يخرج منه مسجل أخير، يخزن فيه قيمة العملية.
وبالتالي نستطيع تخيل مخطط معمارية المعالج ” 2 ” كالتالي:
بغض النظر عن أن معمارية المعالج ” 2 “تبدو أبسط من معمارية المعالج ” 1 “، كلا المعالجين أعطيا الناتج النهائي بدقة، لكن بتصميم مختلف تماما.
وهذا هو ما نطلق عليه معمارية المعالج التي ترتبط ارتباطا مباشرا بطريقة معالجته للبيانات، وتسمي تلك المعمارية باسم التعليمات Instructions.
ما المقصود بالتعليمات ؟
طريقة اتصال دوائر هذا المعالج ببعضها بحيث تقوم بوظيفة معالجة البيانات، وأطلقت تسمية التعليمات عليها.
بسبب أن هذه هي الطريقة الوحيدة لمخاطبة الدوائر الكهربية للمعالج، فهي دوائر كهربية لا تملك سوي أن تتصل أو أن تنفصل عن بعضها. فكأنني بتوصيلها مع بعضها بطريقة معينة، أعطيها تعليمات محددة بأداء وظيفة معينة.
فمثلا في المعالج “2”، فان طريقة توصيل الدوائر فيه كالآتي :
3 مسجلات ——–> معالج ضرب ——–> مسجلين ——–> معالج جمع ——–> مسجل أخير
يمكنني أن أطلق علي طريقة التوصيل هذه، تعليمات المعالج “2”.
هل لاحظت أن طريقة التوصيل أو التعليمات، هي ترجمة أمينة للحل رقم 2، والخاص بالمسألة السابقة، هذه الترجمة تمت باستخدام الدوائر الكهربية، أي باستخدام العتاد.
وفي مثال المعالج”1″، فان طريقة توصيل الدوائر فيه كالآتي:
مسجلين ——–> معالج جمع ——–> مسجل + مسجل (من الخارج) ——–> معالج ضرب ——–> مسجل أخير
ويمكنني أن أطلق علي طريقة التوصيل هذه، تعليمات المعالج “1”.
هل لاحظت أن طريقة التوصيل أو التعليمات، هي ترجمة أمينة للحل رقم 1، والخاص بالمسألة السابقة، هذه الترجمة تمت باستخدام الدوائر الكهربية، أي باستخدام العتاد .
الآن عندما أخبرك أن شركة ما على سبيل المثال Intel، أطلقت علي طريقة توصيل دوائرها الكهربية لتكون ترجمة أمينة لطرق معالجة البيانات في معالجاتها المركزية. اسم تعليمات X86 .. هل تستطيع ان تفهم ذلك؟