حديثنا اليوم عن عمالقة الحاسوب ، وتحديدا عمالقة المعالجات 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

لا تحتاج المسألة إلي فهم عميق في الواقع :

  • معالج أ قام بمعالجة المسألة الحسابية بطريقة معينة.
  • ومعالج ب قام بمعالجة نفس المسألة بطريقة أخري.

معالجات x86 تقوم بمعالجة تلك المسألة ومسائل أخري كثيرة، وبيانات عديدة مختلفة، بطرق معينة. ومعالجات ARM تقوم بمعالجة نفس البيانات بطرق أخري.

انتهي .. لحظة ! .. ما هي معالجات ARM هذه أصلا؟

حسنا، معالجات ARM هي المنافس لمعالجات X86، لكن في سوق مختلف تماما، فكلنا نعرف أن معالجات X86 منتشرة بصورة رهيبة في الحواسيب الشخصية المكتبية Desktops والمحمولة Laptops وخوادم البيانات Data Servers، بالاضافة الي الحواسيب العلمية الخارقة  Super Computers، ومحطات تصميم الرسوميات ثلاثية الأبعاد 3D WorkStations .. أي في معظم الحواسيب تقريبا وهي معالجات تصنعها شركتي Intel و AMD.

اذن في أي شئ تتواجد معالجات ARM ؟

ARM

تتواجد تلك المعالجات في الأجهزة الالكترونية الأخري، مثل الهواتف النقّالة Mobile Phones، والحواسيب اللوحية Tablets والآلات الحاسبة، ومشغّلات الموسيقي والعروض المرئية، كما تتواجد في أجهزة الألعاب الصغيرة، والمساعدات الرقمية PDA، وحتي الأقراص الصلبة وموجّهات الشبكات Routers، وهي تحظي بانتشار رهيب في هذه الأسواق.

 الكل يعرف معالجات ARM الآن بفضل انتشار معالجات Apple و Qualcomm في الهواتف النقالة، وكل تلك المعالجات هي معالجات ARM بالأساس.

ان كلا من X86 و ARM، هما عملاقان يحكمان دولتين مختلفتين، و التصادم بينهما مقدّر أن يحصل أن عاجلا أو آجلا. لكن الصراع بين العملاقين بدأ منذ زمن سحيق، وهو صراع تقني أكثر منه تجاري، انه صراع التعليمات.

ويتسائل البعض .. كيف يكمن للتعليمات أو (للمعمارية) أن تسبب صراعا؟

ولنفهم هذه النقطة جيدا يجب أن نعود الي مثالنا الأول المسكين مرة أخري .. نعود له لنتذكر كيف أن التعليمات العتادية، ما هي الا ترجمة أمينة للمسألة، 2 (3 +4) = ؟؟ تم تمثيلها باستخدام المسجلات ووحدات الضرب والجمع .

هذه الترجمة الأمينة، تسمّي Decoding، وهي تعني أنني ترجمت مفردات المسألة الحسابية الي عتاد مباشرة، والمفردات هنا تعني الأرقام والعلامات الحسابية مثل + و x، فالأرقام ترجمت الي قيم في مسجلات (ذواكر عتادية) و العلامات الحسابية ترجمت الي وحدة الضرب أو وحدة الجمع .

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

وهنا يكمن مربط الفرس! لماذا تم وضع الأرقام في مسجلات معالج الجمع؟ ولم يتم وضعها في مسجلات معالج القسمة مثلا؟ السبب ببساطة هو وجود علامة الجمع في المسألة!

ان علامة الجمع (+) ما هي الا عنوان Address لمسجلات معالج الجمع! وعلامة الضرب ما هي الا عنوان Address لمسجلات معالج الضرب!

اذن فالرقم 2 يتواجد جنبا الي جنب بجوار عنوان مسجلات وحدة الضرب داخل الذاكرة المؤقتة RAM.

والرقمين 3 و 4 يتواجدان جنبا الي جنب بجوار عنوان مسجلات وحدة الجمع داخل الذاكرة المؤقتة RAM.

عندما يقرأ المعالج الذاكرة المؤقتة، فانه يقرأ تعليمات الجمع أو الضرب أولا (واتفقنا أنهم عناوين مسجلات الضرب والجمع)، ومن ثم يقوم بتحويل الرقم 2 الي مسجل وحدة الضرب، لأنه يحمل عنوان هذا المسجل، ويقوم بتحويل رقمي 3 و 4 الي مسجلات وحدة الجمع، لأنهما يحملان عناوين هذه المسجلات.

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

هل لاحظت أن الترجمة تعتمد بشكل اساسي علي وجود عنوان مسجلات وحدتي الضرب أو الجمع؟ ماذا اذا لم يكن هذا العنوان موجودا؟ ماذا اذا تغيرت قيمته ؟

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

ومن هنا يبدأ الصراع!!

في المعالج أ، يكون عنوان معالج الضرب هو المسجل 1 ، و 2 ، 3 .

بينما في المعالج ب، بكون عنوان معالج الضرب هو المسجل 3 و 4 .

 

اذا تمّ كتابة البرنامج علي أساس معمارية المعالج أ ، فان المعادلة لن تصلح علي معمارية المعالج ب، والعكس صحيح!! وذلك بسبب اختلاف عناوين معالجات الضرب في المعماريتين!

اذن وجب علي المبرمج أن يضع في حسبانه الاختلاف في المعماريات بين المعالجات، حتي يعمل برنامجه علي كل المعالجات!

لهذا يعمل نظام تشغيل النوافذ Windows حصريا علي معالجات X86، لأن شركة Microsoft، لم تضع في حسبانها أي معالجات أخري أثناء تصميم النظام، وبهذا فلن يعمل النظام علي معالجات ARM. وهذه هي أول المواجهات في الصراع بين العملاقين، وهي الحصول علي البرامج الداعمة لكل منهما!

ثاني المواجهات يتعلّق باختلاف وجهات النظر في التصميم بشكل متطرف!

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

ماذا عن مسألة أخري أكثر تعقيدا؟ .. مثلا : 12X(5+4)X8+(13X4)-9

سوف نحتاج الي مسجلات جديدة وسوف نحتاج الي مجموعة وصلات جديدة بين المسجلات والمعالجات، تلك الوصلات سوف تكون أعقد وأكثر من المرة السابقة !

اذن ماذا عن مسألة أكثر تعقيدا، ومسألة أخري أكثر وأكثر وأكثر تعقيدا؟

ان هذا مستحيل !! كلما زاد تعقيد المسألة، كلما زاد تعقيد تصميم العتاد، وبازدياد تعقيد البيانات أكثر وأكثر، يصبح من غير المجدي الاستمرار في تصميم العتاد بهذا التعقيد، لأن التعقيد لن ينتهي أبدا هكذا!! ما الحل اذن ؟ الحل هو اضافة ما يسمي باسم طاقم التعليمات المصغر Microcode Set.

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

تتصل هذه الذاكرة بوحدة معالجة صغيرة، وفي هذا المثال 15X5 ، تستقبل وحدة المعالجة هذه بيانات المسألة، وتقرأ علامة الضرب أولا.

علامة الضرب هنا هي عبارة عن عنوان الذاكرة التي تحوي عنوان مسجلات معالج الضرب!

تقوم وحدة المعالجة الصغيرة بقراءة الذاكرة، وتستخرج عنوان مسجلات معالج الضرب، وتقوم بارسال رقم 15 ورقم 5 الي مسجلات معالج الضرب.

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

تقرر وحدة التحكم ما اذا كانت المسألة قد انتهت أم لا .. فاذا انتهت .. يرسل الناتج الي الذاكرة المؤقتة، واذا لم تنتهي، واحتوت المسألة علي جزء جمع اضافي (+10مثلا )، تقوم وحدة التحكم بارسال ناتج الضرب (75) ورقم 10 الي معالج الجمع .. وهكذا .. دواليك .. :

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

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

تعمل معالجات X86، بهذا الأسلوب، ويسمي هذا الأسلوب باسم Complex Instruction Set Computer، أو حاسوب طاقم التعليمات المعقد CISC ، وذلك لأنه يستعمل مجموعة معقدة من التعليمات، والتي يتم تسجيلها في وحدة التحكم.

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

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

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

ففي مثالنا السابق ،  2 (3 +4) = ؟؟  وبافتراض أن العملية تحل باستخدام الحل الثاني :

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

4+3 = 7

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

7X2= 14

الناتج = 14

يتم استخراج رقم 3 ورقم 4، ويتم ترجمة علامة الجمع، بتحويل الرقمين الي مسجلات معالج الجمع (المسجل 1 و 2)، بعد الانتهاء من الجمع، يتم تخزين الناتج في المسجل رقم 3 .

المسجل رقم 3 متصل بما يسمي بحوض المسجلات الكبير وهو تجمع كبير لعدة مسجلات مرتبة في صفوف، في هذا الحوض يتم وضع الناتج في مسجل جديد، وليكن المسجل رقم 18.

الآن نحتاج الي ضرب رقم 2 في الناتج، لذا يتم استخراج رقم 2، ويتم ترجمة علامة الضرب، ومن ثم تحويله الي مسجل معالج الضرب، المسجل رقم 4 مثلا.

الآن يجب ان تحتوي بيانات الضرب الخاصة برقم 2 علي عنوان اضافي خاص بالمسجل رقم 18، وذلك لكي يقوم معالج الضرب بأخذ قيمة هذا المسجل ويضربها في رقم 2.

يتم وضع ناتج العملية في مسجل جديد، وليكن مسجل رقم 5 .. ويتصل هذا المسجل بحوض البيانات الكبير ، بحيث ينقل الناتج الي المسجل رقم 19 مثلا.

بهذا تنتهي بيانات العملية، لكنها تحتوي علي شق أخير من البيانات، وهو علامة يساوي (=) مثلا، وهي تحتوي علي عنوان المسجل رقم 19، وتترجم بـنسخ محتويات هذا المسجل الي الذاكرة المؤقتة.

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

سميت هذه الطريقة باسم Reduced Instruction Set Computer، أو حاسوب طاقم التعليمات المخفض RISC، ذلك لأن كل عملياته هي عمليات بسيطة، من مسجّل الي مسجّل، وبذلك تحقق هذه المعمارية البساطة في التصميم، لكن التعقيد يصبح علي كتف البرنامج نفسه، والذي يجب أن يكون مصمما لهذه المعماربة بالضبط (كما قلنا باحتوائه علي عناوين السمجلات في كل خطوة من خطوات البيانات).

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

ARM

المقارنة بين CISC و RISC"

CISC :

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

RISC :

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

 

لا تركز معالجات ARM علي سوق الحوسبة، لذلك لا تأتي بترددات مرتفعة أو بذاكرة مساعدة Cache كبيرة، لأنها تقصر نفسها حاليا علي معالجة البيانات السيطة الي حد ما، وعلي هذا فلم يتم بناء معالج منها لينافس معالجات Intel و AMD، لكن ماذا يحدث اذا قررت ARM بناء معالج كبير للتطبيقات الثقيلة كتحرير الفيديو أو الرسوم ثلاثية الأبعاد .. سوف تحتاج الي دعم برمجي كبير بالطبع، لكنها ستنافس منافسة شرسة.

وهي منافسة نري آثارها حاليا .. إن Apple الآن تقوم ببناء أكبر معالجات ARM الاستهلاكية في التاريخ، وأقواها أداء، وهي تمتلك من الأموال والقدرات التصنيعية ما يؤهلها لهذا عن جدارة. إن Apple تنتوي في وضوح استبدال معالجات X86 بمعالجات ARM التي تبنيها ببذخ شديد.

إن معالج Apple الأخير المسمي بـ A12X لهو فخر صناعة معماريات ARM، فهو معالج صغير الحجم، بسيط التركيب، لا يحوي وسائل مساعدة للبرمجة، و غير مقيد بارث التوافقية الرجعية مع ما سبق، ويأتي باستهلاك طاقة ضئيل ودون استخدام وسائل تبريد من الأساس، ورغم كل ذلك فهو يتحدي أداء معالجات Core i7 في عدد من التطبيقات! إنه معالج للأسواق المحمولة، ورغم ذلك فهو يتحدي معالجات مكتبية باستهلاك طاقة كبير وبوسائل تبريد فعالة! فما بالك اذا ما قررت Apple بناء معالج كبير باستهلاك طاقة أعلي وتبريد حقيقي؟!

إن التوقعات لهذا مخيفة، مخيفة علي Intel وAMD بالطبع و علي X86 بشكل عام، إن القدرات الكامنة في معمارية ARM لم يتم استكشافها للنهاية بعد، و Apple تنتوي فعل هذا بقوة. في حين كادت X86 أن تصل الي أقصاها بالفعل. إن Apple هي أكبر خطر يهدد وجود Intel و AMD معا في الوقت الحالي.

لكن Apple ليست وحدها، فشركة ARM نفسها تسعي في ذات المسعي، وتضع صوب أعينها منافسة معالجات Core i5 و i7 الدنيا بالفعل في سوق الحواسيب المحمولة، وباستهلاك طاقة ضئيل للغاية أيضا.

وهو الأمر الذي انتبهت له Microsoft، فقررت نقل نظام تشغيل Windows من العمل علي بيئة X86 بشكل حصري، الي العمل علي بيئة ARM أيضا، كي يتسني لها تشغيل النظام علي معالجات ARM، وهي خطوة تشي بمدي ادراك Microsoft لأهمية معالجات ARM المستقبلية. حتي شركة Adobe قررت نقل برمجيات PhotoShop وأخواتها الي بيئة ARM، احتذاءا بـ Microsoft و Apple.

أما الشركات العملاقة فقد بدأت بالفعل في طور التحول من معالجات X86 الي معالجات ARM، إن Facebook و Amazon و Google يصنعون الآن معالجاتهم الخاصة المبنية علي معمارية ARM كي يستخدمونها في خوادمهم للشبكة الدولية Internet Servers و في مراكز بياناتهم Data Centers و خدمات الذكاء الاصطناعي AI الخاصة بهم، بدلا من معالجات X86.

أما عن شركة HP فقد بنت حاسبا خارقا Super Computer باسم Astra مستخدمة في ذلك الآلاف من معالجات ARM، وهو حدث فريد من نوعه في الأعوام الأخيرة، لقد بدأت معالجات ARM في العودة لسوق الحواسيب الخارقة من جديد. وتنتوي شركة Fujitsu اتباع حذو HP في حاسوب خارق جديد في الأعوام القادمة.

باختصار، لقد بدأت المنافسة الشرسة بالفعل بين ARM و X86، لهذا يجب أن نهتم، فلربما نشهد طور الصعود الكبير لـ ARM علي حساب X86 عاجلا قبل آجلا.

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