المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : فروق المعمارية بين معالجات x86 و arm : العمالقة



أحمد فرحات
02-22-2011, 06:19 PM
ان الناظر الي تقنيات الحاسوب نظرة سطحية خارجية ، سوف يعتقد أن صناعة الحاسوب هي صناعة كونية ، لها معايير ثابتة وبنية محددة لا يختلف عليها اثنان ، فهي ليست مثل صناعة السيارات مثلا ، أو صناعة الملابس ، حيث تتنوع الأذواق والمنتجات
لكن صناعة الحاسوب أسوأ من السيارات أو الملابس ، وذلك لتعقيدها الشديد ، هذا التعقيد الذي ينتج عنه اختلاف طرق التصميم حتي بالنسبة الي منتج واحد ، لتلتقي كل الطرق علي اختلاف دروبها لتحقق هدفا واحدا ، وهو معالجة البيانات .

معني ذلك أن معالجة البيانات يمكن أن تتم بطرق مختلفة ، قد تتساوي أو تتفاوت في التعقيد والبساطة ، لكنها تؤدي الغرض في النهاية ،ومن هنا تنبثق معمارية الحاسوب ،ان معمارية حاسوب ما ، أو معالج ما ، هي الطريقة التي تترتب فيها دوائره الكهربية ، بحيث تعالج البيانات بطريقة معينة ، وينتج عن هذا اختلاف قدرات المعالجات باختلاف الشركات المصممة لهم ، فشركة A تتبع طريقتها الخاصة في معالجة البيانات والتي ابتكرها مهندسوها ، وشركة B تتبع طريقة أخري تختلف عن شركة A ، ابتكرها مهندسوها أيضا .،ولتخيل ذلك يمكننا تصور حل مسألة حسابية بطريقتين مختلفين ، وكلا الطريقتين صحيحتين ، ليخرج ناتج نهائي واحد .
المثال الأول : 15 (7+5 ) = ؟؟
الحل الأول :نقوم بضرب رقم 15 في كلا من 7 و 5 ، ثم نجمع ناتج العمليتين .7X15 + 5X15 = 105+75 الناتج = 180
الحل الثاني :نقوم بجمع 7 و5 أولا ، ثم نضرب الناتج (12) في رقم 15 الناتج = 180
اختلفت الطريقتين ، لكن كلاهما أتي بنفس الناتج وان اختلفت الخطوات ،قبل أن نطبق هذا المثال علي المعالجات ، ينبغي أن نعرف الطريقة الدقيقة لمعالجة البيانات في المعالج ، ونضرب لذلك مثالا ثانيا.

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

ونعود لتطبيق المثال الأول علي المعالجات ، فالمعالج أ يتبع تصميم معين معين يتيح له حل المسألة السابقة باستخدام الحل الأول:نقوم بضرب رقم 15 في كلا من 7 و 5 ، ثم نجمع ناتج العمليتين ،الناتج = 180،يأخذ المعالج رقم 15 من الذاكرة العشوائية RAM ،ويقوم بتخزينه في مسجل رقم 1 ، ويكرر نفس الأمر مع رقم 5 ورقم 7 ، بتخزينهما في المسجلين رقم 2 و 3 .
يتم ضرب رقم 15 في رقم 5 ، وتسجيل النتيجة في مسجل رقم 4،يتم ضرب رقم 15 في 7 ، وتسجيل النتيجة في مسجل رقم 5 ،وأخيرا يتم جمع قيمة المسجل رقم 4 ورقم 5، أي يتم جمع ناتج العمليتين السابقتين 105 +75 ، وتسجيل النتيجة في مسجل رقم 6 .
احتاج المعالج أ إلي 6 مسجلات ، وعمليتين ضرب ، وعملية جمع لإتمام المسألة السابقة بالحل الأول ،ومعني أنه احتاج إلي كل ذلك ، أن المهندسين سوف يصممون ستة مسجلات ، يتصل ثلاثة منهم بمعالج ضرب ، كوسيلة لإدخال البيانات ، (إدخال أرقام المسألة ) ، ويخرج من معالج الضرب هذا مسجلين آخرين (كوسيلة لتسجيل نتائج الضرب ) ، يتصل المسجلين مباشرة بمعالج الجمع ، والذي يخرج منه مسجل أخير وحيد .

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


http://www.arabhardware.net/images/hard1.jpg

أما المعالج ب فيحمل تصميما معينا يتيح له حل المسألة السابقة باستخدام الحل الثانى،قوم بجمع 7 و5 أولا ، ثم نضرب الناتج (12) في رقم 15 ،الناتج = 180 15X12
يأخذ المعالج رقم 7 ورقم 5 من الذاكرة العشوائية ، ويضعهما في مسجلين (مسجل رقم 1 ورقم 2 ) ، ويقوم بإجراء عملية جمع عليهما ، ويضع ناتج العملية في مسجل رقم 3 ،يتم تخزين رقم 15 في مسجل رقم 4 ، ويتم ضرب قيمة هذا المسجل في قيمة المسجل رقم 3 ، ويتم وضع الناتج الجديد في المسجل رقم 5 ،احتاج المعالج ب إلي خمسة مسجلات والي عملية ضرب واحدة وعملية جمع واحدة .
ومعني أنه احتاج إلي كل ذلك ، أن المهندسين سوف يصممون خمسة مسجلات ، يتصل اثنين منهم بمعالج للجمع (كوسيلة لإدخال البيانات)، يخرج من هذا المعالج مسجل جديد لتخزين ناتج العملية ، ويتصل هذا المسجل ، يمسجل آخر ، ويدخل الاثنان إلي معالج الضرب ، والذي يخرج منه مسجل أخير ، يخزن فيه قيمة العملية .

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





http://www.arabhardware.net/images/hard2.jpg
بغض النظر عن أن معمارية المعالج ب تبدو أبسط من معمارية المعالج أ ، كلا المعالجين أعطيا الناتج النهائي بدقة ، لكن بتصميم مختلف تماما ،وهذا هو ما نطلق عليه معمارية المعالج التي ترتبط ارتباطا مباشرا بطريقة معالجته للبيانات ، وتسمي تلك المعمارية باسم التعليمات Instructions.،والتعليمات هنا يقصد بها طريقة اتصال دوائر هذا المعالج ببعضها بحيث تقوم بوظيفة معالجة البيانات ، وأطلقت تسمية التعليمات عليها ، بسبب أن هذه هي الطريقة الوحيدة لمخاطبة الدوائر الكهربية للمعالج ، فهي دوائر كهربية لا تملك سوي أن تتصل أو أن تنفصل عن بعضها ، فكأنني بتوصيلها مع بعضها بطريقة معينة ، أعطيها تعليمات محددة بأداء وظيفة معينة .
فمثلا في المعالج ب ، فان طريقة توصيل الدوائر فيه كالآتي :3 مسجلات --------> معالج ضرب --------> مسجلين --------> معالج جمع --------> مسجل أخير
يمكنني أن أطلق علي طريقة التوصيل هذه ، تعليمات المعالج ب ،هل لاحظت أن طريقة التوصيل أو التعليمات ، هي ترجمة أمينة للحل رقم 2 ، والخاص بالمسألة السابقة ، هذه الترجمة تمت باستخدام الدوائر الكهربية ، أي باستخدام العتاد ؟
وفي مثال المعالج أ ، فان طريقة توصيل الدوائر فيه كالآتي :مسجلين --------> معالج جمع --------> مسجل + مسجل (من الخارج) --------> معالج ضرب --------> مسجل أخير
ويمكنني أن أطلق علي طريقة التوصيل هذه ، تعليمات المعالج أ ،هل لاحظت أن طريقة التوصيل أو التعليمات ، هي ترجمة أمينة للحل رقم 1 ، والخاص بالمسألة السابقة ، هذه الترجمة تمت باستخدام الدوائر الكهربية ، أي باستخدام العتاد ؟
الآن عندما أخبرك أن شركة Intel ، أطلقت علي طريقة توصيل دوائرها الكهربية لتكون ترجمة أمينة لطرق معالجة البيانات في معالجاتها المركزية، اسم تعليمات X86 .. فهل تفهمني ؟

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

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

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

وهنا يكمن السؤال ! لماذا تم وضع الأرقام في مسجلات معالج الجمع ؟ ولم يتم وضعها في مسجلات معالج القسمة مثلا ؟ السبب ببساطة هو وجود علامة الجمع في المسألة ،ان علامة الجمع (+) ما هي الا عنوان لمسجلات معالج الجمع ،علامة الضرب ما هي الا عنوان لمسجلات معالج الضرب،اذن فالرقم 15 يتواجد جنبا الي جنب بجوار عنوان مسجلات معالج الضرب داخل الذاكرة العشوائية .
والرقمين 7 و 5 يتواجدان جنبا الي جنب بجوار عنوان مسجلات معالج الجمع داخل الذاكرة العشوائية .

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

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

في المعالج أ ، يكون عنوان معالج الضرب هو المسجل 1 ، و 2 ، 3 ،بينما في المعالج ب ، بكون عنوان معالج الضرب هو المسجل 4 و 5 ،اذا تمّ كتابة البرنامج علي أساس معمارية المعالج أ ، فان المعادلة لن تصلح علي معمارية المعالج ب ، والعكس صحيح !! ، وذلك بسبب اختلاف عناوين معالجات الضرب في المعماريتين ،اذن وجب علي المبرمج أن يضع في حسبانه الاختلاف في المعماريات بين المعالجات ، حتي يعمل برنامجه علي كل المعالجات ،لهذا يعمل نظام تشغيل النوافذ 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 ، الي كبر حجمها ، لكن ليس بنفس درجة حجمها اذا لم تكن وحدة التحكم موجودة ، كما أدي الي بعض البطأ في تنفيذ العمليات شديدة التعقيد ، بسب أن تلك العمليات تمر علي وحدة التحكم أكثر من مرة ، كما رأينا في المثال السابق ، مما يخلق المزيد والمزيد من التأخير ،المزيد والمزيد من هذا التأخير ، يستلزم عمل شئ ما لتعويضه ، والشئ الذي استقر عليه المهندسون هو خط أنابيب البيانات Pipeline ، وهو مفهوم سوف نشرحه في مقال آخر ،ولنا أن نتفهم أن المصممين كانوا بين حيرتين ، حيرة تصميم معالج معقد جدا ، أو تصميم معالج أقل تعقيدا ولكنه أبطأ قليلا .. واختارت فئة مصنعي X86 الحيرة الأخيرة .

لكن فئة مصنعي معالجات ARM ، لم تختر الحل الأخير ، ولم تختر الحل الأول ، وانما قامت باختيار حل مختلف تماما ،لم تحب هذه الفئة استخدام تعليمات معقدة أو استخدام طاقم تعليمات مصغر ، واصرت علي اتباع الطريق التقليدي ،ففي مثالنا السابق ، 15(7+5) ، وبافتراض أن العملية تحل باستخدام الحل الثاني :


http://www.arabhardware.net/images/hard3.jpg

نقوم بجمع 7 و5 أولا ، ثم نضرب الناتج (12) في رقم 15 ،الناتج = 180 15X12
يتم استخراج رقم 7 ورقم 5، ويتم ترجمة علامة الجمع ، بتحويل الرقمين الي مسجلات معالج الجمع (المسجل 1 و 2) ، بعد الانتهاء من الجمع ، يتم تخزين الناتج في المسجل رقم 3 ،المسجل رقم 3 متصل بما يسمي بحوض المسجلات الكبير وهو تجمع كبير لعدة مسجلات مرتبة في صفوف ، في هذا الحوض يتم وضع الناتج في مسجل جديد ، وليكن المسجل رقم 18 ،الآن نحتاج الي ضرب رقم 15 في الناتج ، لذا يتم استخراج رقم 15 ، ويتم ترجمة علامة الضرب، ومن ثم تحويله الي مسجل معالج الضرب ، المسجل رقم 4 مثلا .

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


http://www.arabhardware.net/images/hard4.jpg

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

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

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

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