حديثنا اليوم عن عمالقة الحاسوب ، وتحديدا عمالقة المعالجات CPUs، عن AMD و Intel و ARM.

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

ومن هنا تنبثق معمارية الحاسوب.

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

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

2 (3 +4) = ؟؟

الحل الأول : نقوم بضرب رقم 2 في كلا من 3 و 4

2X3= 6

2X4 = 8 ثم نجمع ناتج العمليتين

14 = 6 + 8

الناتج = 14

الحل الثاني : نقوم بجمع 3 و 4 أولا

4+3 = 7

ثم نضرب الناتج (7) في رقم 2

7X2= 14

الناتج = 14

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

لكن قبل أن نطبق هذا المثال علي المعالجات، ينبغي أن نعرف الطريقة الدقيقة لمعالجة البيانات في المعالج، ونضرب لذلك مثالا ثانيا:

المثال الثاني : 8+1 = ؟؟

يتم استخراج مفردات المسألة من الذاكرة المؤقتة RAM أو وحدة التخزين Disk، أي يتم استخراج أرقام المسألة ويتم استخراج علامات الجمع + أو الضرب x أو غيرهم.

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

في وحدة الجمع يتم تسجيل رقم 8 في ذاكرة حسابية تسمي المُخزن أو المسجل Register (وهي ذاكرة صغيرة لتخزين البيانات التي ستجري عليها المعالجة حالا )، ويحدث نفس الأمر مع الرقم 1 في ذاكرة حسابية أخري.

يتم جمع الرقمين في وحدة الجمع ، ويتم وضع الناتج النهائي في مسجل أخير. ويتم نقل الناتج من المسجل الأخير الي الذاكرة المؤقتة RAM أو وحدة التخزين Disk،

هذه هي الخطوات الأساسية لأي عملية معالجة يقوم بها المعالج. البيانات تذهب من الذاكرة المؤقتة RAM الي ذاكرة التسجيل لتسجل هناك ويتم اجراء العملية الحسابية عليها.

ونعود لتطبيق المثال الأول علي المعالجات ، فالمعالج أ يتبع تصميم معين معين يتيح له حل المسألة السابقة باستخدام الحل الأول :

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 .

احتاج المعالج أ إلي 6 مسجلات، وعمليتين ضرب، وعملية جمع لإتمام المسألة السابقة بالحل الأول .

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

ونستطيع رؤية مخطط المعمارية للمعالج أ هنا :

أما المعالج ب فيحمل تصميما معينا يتيح له حل المسألة السابقة باستخدام الحل الثاني :

2 (3 +4) = ؟؟

نقوم بجمع 3 و 4 أولا

4+3 = 7

ثم نضرب الناتج (7) في رقم 2

7X2= 14

الناتج = 14

يأخذ المعالج رقم 3 ورقم 4 من الذاكرة العشوائية ، ويضعهما في مسجلين (مسجل رقم 1 ورقم 2 )، ويقوم بإجراء عملية جمع عليهما، ويضع ناتج العملية في مسجل رقم 3 .

يتم تخزين رقم 2 في مسجل رقم 4 ، ويتم ضرب قيمة هذا المسجل في قيمة المسجل رقم 3 ، ويتم وضع الناتج الجديد في المسجل رقم 5 .

احتاج المعالج ب إلي خمسة مسجلات والي عملية ضرب واحدة وعملية جمع واحدة.

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

ونستطيع رؤية مخطط المعمارية للمعالج ب :

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

وهذا هو ما نطلق عليه معمارية المعالج التي ترتبط ارتباطا مباشرا بطريقة معالجته للبيانات، وتسمي تلك المعمارية باسم التعليمات Instructions.

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

فمثلا في المعالج ب، فان طريقة توصيل الدوائر فيه كالآتي :

3 مسجلات ——–> معالج ضرب ——–> مسجلين ——–> معالج جمع ——–> مسجل أخير

يمكنني أن أطلق علي طريقة التوصيل هذه، تعليمات المعالج ب.

هل لاحظت أن طريقة التوصيل أو التعليمات، هي ترجمة أمينة للحل رقم 2، والخاص بالمسألة السابقة، هذه الترجمة تمت باستخدام الدوائر الكهربية، أي باستخدام العتاد؟

وفي مثال المعالج أ، فان طريقة توصيل الدوائر فيه كالآتي:

مسجلين ——–> معالج جمع ——–> مسجل + مسجل (من الخارج) ——–> معالج ضرب ——–> مسجل أخير

ويمكنني أن أطلق علي طريقة التوصيل هذه، تعليمات المعالج أ.

هل لاحظت أن طريقة التوصيل أو التعليمات، هي ترجمة أمينة للحل رقم 1، والخاص بالمسألة السابقة، هذه الترجمة تمت باستخدام الدوائر الكهربية، أي باستخدام العتاد ؟

الآن عندما أخبرك أن شركة Intel، أطلقت علي طريقة توصيل دوائرها الكهربية لتكون ترجمة أمينة لطرق معالجة البيانات في معالجاتها المركزية، اسم تعليمات X86 .. فهل تفهمني؟

Intel X86