بسم الله ما شاء الله
لا يسعنى الا ان أقول زادك الله من علمه
و جعله فى ميزان حسناتك
آثرت الرد اولا ثم العوده لقراءه الموضوع بمزاج و على روقان :D
فروق المعمارية بين معالجات X86 و ARM : العمالقة !
ملحوظة 1 : يحتوي هذا المقال علي معلومات تقنية مركزة ، لكنها مبسطة كذلك ، يرجي الحفاظ علي صفاء الذهن أثناء قرائته ، ويفضل قراءته بعقل منتبه.
حديثنا اليوم عن عمالقة الحاسوب ، وتحديدا عمالقة المعالجات .
ان الناظر الي تقنيات الحاسوب نظرة سطحية خارجية ، سوف يعتقد أن صناعة الحاسوب هي صناعة كونية ، لها معايير ثابتة وبنية محددة لا يختلف عليها اثنان ، فهي ليست مثل صناعة السيارات مثلا ، أو صناعة الملابس ، حيث تتنوع الأذواق والمنتجات .
لكن صناعة الحاسوب أسوأ من السيارات أو الملابس ، وذلك لتعقيدها الشديد ، هذا التعقيد الذي ينتج عنه اختلاف طرق التصميم حتي بالنسبة الي منتج واحد ، لتلتقي كل الطرق علي اختلاف دروبها لتحقق هدفا واحدا ، وهو معالجة البيانات .
ان معني ذلك أن معالجة البيانات يمكن أن تتم بطرق مختلفة ، قد تتساوي أو تتفاوت في التعقيد والبساطة ، لكنها تؤدي الغرض في النهاية .
ومن هنا تنبثق معمارية الحاسوب .
ان معمارية حاسوب ما ، أو معالج ما ، هي الطريقة التي تترتب فيها دوائره الكهربية ، بحيث تعالج البيانات بطريقة معينة ، وينتج عن هذا اختلاف قدرات المعالجات باختلاف الشركات المصممة لهم ، فشركة A تتبع طريقتها الخاصة في معالجة البيانات والتي ابتكرها مهندسوها ، وشركة B تتبع طريقة أخري تختلف عن شركة A ، ابتكرها مهندسوها أيضا .
ولتخيل ذلك يمكننا تصور حل مسألة حسابية بطريقتين مختلفين ، وكلا الطريقتين صحيحتين ، ليخرج ناتج نهائي واحد .
المثال الأول : 15 (7+5 ) = ؟؟
الحل الأول :
الحل الثاني :نقوم بضرب رقم 15 في كلا من 7 و 5 ، ثم نجمع ناتج العمليتين .
7X15 + 5X15 = 105+75
الناتج = 180
اختلفت الطريقتين ، لكن كلاهما أتي بنفس الناتج وان اختلفت الخطوات .نقوم بجمع 7 و5 أولا ، ثم نضرب الناتج (12) في رقم 15 .
15X12
الناتج = 180
وقبل أن نطبق هذا المثال علي المعالجات ، ينبغي أن نعرف الطريقة الدقيقة لمعالجة البيانات في المعالج ، ونضرب لذلك مثالا ثانيا :
المثال الثاني :
8+1 = ؟؟
1-يتم استخراج مفردات المسألة من الذاكرة العشوائية أو القرص الصلب ، أي يتم استخراج رقم 8 ورقم 1 ، ويتم استخراج علامة الجمع (+) .
2-تقرأ علامة الجمع أولا ، ومن ثم تحول العملية كلها الي معالج الجمع في المعالج المركزي .(تسمي هذه الخطوة بالترجمة ، وسوف نشرحها بعد قليل).
3-في معالج لجمع يتم تسجيل رقم 8 في مسجل (المسجل هو ذاكرة صغيرة لتخزين البيانات التي ستجري عليها المعالجة حالا ) ، ورقم 1 في مسجل آخر .
4-يتم جمع الرقمين في معالج الجمع ، ويتم وضع الناتج النهائي في مسجل أخير (هذه أيضا احدي وظائف المسجل ، فهو يخزن نتائج بيانات المعالجة تمهيدا لإرسالها إلي الذاكرة ) .
5-يتم نقل الناتج من المسجل الأخير الي الذاكرة العشوائية أو القرص الصلب .
هذه هي الخطوات الأساسية لأي عملية معالجة يقوم بها المعالج .
____________________________________________
ونعود لتطبيق المثال الأول علي المعالجات ، فالمعالج أ يتبع تصميم معين معين يتيح له حل المسألة السابقة باستخدام الحل الأول :
يأخذ المعالج رقم 15 من الذاكرة العشوائية RAM ،ويقوم بتخزينه في مسجل رقم 1 ، ويكرر نفس الأمر مع رقم 5 ورقم 7 ، بتخزينهما في المسجلين رقم 2 و 3 .نقوم بضرب رقم 15 في كلا من 7 و 5 ، ثم نجمع ناتج العمليتين .
7X15 + 5X15 = 105+75
الناتج = 180
يتم ضرب رقم 15 في رقم 5 ، وتسجيل النتيجة في مسجل رقم 4.
يتم ضرب رقم 15 في 7 ، وتسجيل النتيجة في مسجل رقم 5 .
وأخيرا يتم جمع قيمة المسجل رقم 4 ورقم 5، أي يتم جمع ناتج العمليتين السابقتين 105 +75 ، وتسجيل النتيجة في مسجل رقم 6 .
احتاج المعالج أ إلي 6 مسجلات ، وعمليتين ضرب ، وعملية جمع لإتمام المسألة السابقة بالحل الأول .
ومعني أنه احتاج إلي كل ذلك ، أن المهندسين سوف يصممون ستة مسجلات ، يتصل ثلاثة منهم بمعالج ضرب ، كوسيلة لإدخال البيانات ، (إدخال أرقام المسألة ) ، ويخرج من معالج الضرب هذا مسجلين آخرين (كوسيلة لتسجيل نتائج الضرب ) ، يتصل المسجلين مباشرة بمعالج الجمع ، والذي يخرج منه مسجل أخير وحيد .
ونستطيع رؤية مخطط المعمارية للمعالج أ هنا :
______________________
أما المعالج ب فيحمل تصميما معينا يتيح له حل المسألة السابقة باستخدام الحل الثاني :
يأخذ المعالج رقم 7 ورقم 5 من الذاكرة العشوائية ، ويضعهما في مسجلين (مسجل رقم 1 ورقم 2 ) ، ويقوم بإجراء عملية جمع عليهما ، ويضع ناتج العملية في مسجل رقم 3 .نقوم بجمع 7 و5 أولا ، ثم نضرب الناتج (12) في رقم 15 .
15X12
الناتج = 180
يتم تخزين رقم 15 في مسجل رقم 4 ، ويتم ضرب قيمة هذا المسجل في قيمة المسجل رقم 3 ، ويتم وضع الناتج الجديد في المسجل رقم 5 .
احتاج المعالج ب إلي خمسة مسجلات والي عملية ضرب واحدة وعملية جمع واحدة .
ومعني أنه احتاج إلي كل ذلك ، أن المهندسين سوف يصممون خمسة مسجلات ، يتصل اثنين منهم بمعالج للجمع (كوسيلة لإدخال البيانات)، يخرج من هذا المعالج مسجل جديد لتخزين ناتج العملية ، ويتصل هذا المسجل ، يمسجل آخر ، ويدخل الاثنان إلي معالج الضرب ، والذي يخرج منه مسجل أخير ، يخزن فيه قيمة العملية .
ونستطيع رؤية مخطط المعمارية للمعالج ب :
____________________
بغض النظر عن أن معمارية المعالج ب تبدو أبسط من معمارية المعالج أ ، كلا المعالجين أعطيا الناتج النهائي بدقة ، لكن بتصميم مختلف تماما .
وهذا هو ما نطلق عليه معمارية المعالج التي ترتبط ارتباطا مباشرا بطريقة معالجته للبيانات ، وتسمي تلك المعمارية باسم التعليمات Instructions.
والتعليمات هنا يقصد بها طريقة اتصال دوائر هذا المعالج ببعضها بحيث تقوم بوظيفة معالجة البيانات ، وأطلقت تسمية التعليمات عليها ، بسبب أن هذه هي الطريقة الوحيدة لمخاطبة الدوائر الكهربية للمعالج ، فهي دوائر كهربية لا تملك سوي أن تتصل أو أن تنفصل عن بعضها ، فكأنني بتوصيلها مع بعضها بطريقة معينة ، أعطيها تعليمات محددة بأداء وظيفة معينة .
فمثلا في المعالج ب ، فان طريقة توصيل الدوائر فيه كالآتي :
3 مسجلات --------> معالج ضرب --------> مسجلين --------> معالج جمع --------> مسجل أخير
يمكنني أن أطلق علي طريقة التوصيل هذه ، تعليمات المعالج ب .
هل لاحظت أن طريقة التوصيل أو التعليمات ، هي ترجمة أمينة للحل رقم 2 ، والخاص بالمسألة السابقة ، هذه الترجمة تمت باستخدام الدوائر الكهربية ، أي باستخدام العتاد ؟
وفي مثال المعالج أ ، فان طريقة توصيل الدوائر فيه كالآتي :
مسجلين --------> معالج جمع --------> مسجل + مسجل (من الخارج) --------> معالج ضرب --------> مسجل أخير
ويمكنني أن أطلق علي طريقة التوصيل هذه ، تعليمات المعالج أ .
هل لاحظت أن طريقة التوصيل أو التعليمات ، هي ترجمة أمينة للحل رقم 1 ، والخاص بالمسألة السابقة ، هذه الترجمة تمت باستخدام الدوائر الكهربية ، أي باستخدام العتاد ؟
الآن عندما أخبرك أن شركة Intel ، أطلقت علي طريقة توصيل دوائرها الكهربية لتكون ترجمة أمينة لطرق معالجة البيانات في معالجاتها المركزية، اسم تعليمات X86 .. فهل تفهمني ؟
لا تحتاج المسألة إلي فهم عميق في الواقع :
-معالج أ قام بمعالجة المسألة الحسابية بطريقة معينة .
ومعالج ب قام بمعالجة نفس المسألة بطريقة أخري .
-معالجات x86 تقوم بمعالجة تلك المسألة ومسائل أخري كثيرة ، وبيانات عديدة مختلفة ، بطرق معينة.
ومعالجات ARM تقوم بمعالجة نفس البيانات بطرق أخري .
انتهي ..
لحظة ! .. ما هي معالجات ARM هذه أصلا ؟
حسنا ، معالجات ARM هي المنافس لمعالجات X86 ، لكن في سوق مختلف تماما ، فكلنا نعرف أن معالجات X86 منتشرة بصورة رهيبة في الحواسيب الشخصية والمحمولة والخوادم ، بالاضافة الي الحواسيب العلمية الخارقة ، ومحطات تصميم الرسوميات ثلاثية الأبعاد ... أي في معظم الحواسيب تقريبا .
اذن في أي شئ تتواجد معالجات ARM ؟
تتواجد تلك المعالجات في الأجهزة الالكترونية الأخري ، مثل الهواتف النقّالة ، والآلات الحاسبة ، ومشغّلات الموسيقي والعروض المرئية ، كما تتواجد في أجهزة الألعاب الصغيرة ، والمساعدات الرقمية 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) ، وبافتراض أن العملية تحل باستخدام الحل الثاني :
يتم استخراج رقم 7 ورقم 5، ويتم ترجمة علامة الجمع ، بتحويل الرقمين الي مسجلات معالج الجمع (المسجل 1 و 2) ، بعد الانتهاء من الجمع ، يتم تخزين الناتج في المسجل رقم 3 .نقوم بجمع 7 و5 أولا ، ثم نضرب الناتج (12) في رقم 15 .
15X12
الناتج = 180
المسجل رقم 3 متصل بما يسمي بحوض المسجلات الكبير وهو تجمع كبير لعدة مسجلات مرتبة في صفوف ، في هذا الحوض يتم وضع الناتج في مسجل جديد ، وليكن المسجل رقم 18 .
الآن نحتاج الي ضرب رقم 15 في الناتج ، لذا يتم استخراج رقم 15 ، ويتم ترجمة علامة الضرب ، ومن ثم تحويله الي مسجل معالج الضرب ، المسجل رقم 4 مثلا .
الآن يجب ان تحتوي بيانات الضرب الخاصة برقم 15 علي عنوان اضافي خاص بالمسجل رقم 18 ، وذلك لكي يقوم معالج الضرب بأخذ قيمة هذا المسجل ويضربها في رقم 15 .
يتم وضع ناتج العملية في مسجل جديد ، وليكن مسجل رقم 5 ..ويتصل هذا المسجل بحوض البيانات الكبير ، بحيث ينقل الناتج الي المسجل رقم 19 مثلا .
بهذا تنتهي بيانات العملية ، لكنها تحتوي علي شق أخير من البيانات ، وهو علامة يساوي (=) مثلا، وهي تحتوي علي عنوان المسجل رقم 19 ، وتترجم بـنسخ محتويات هذا المسجل الي الذاكرة العشوائية .
نلاحظ هنا أن هذه الطريقة تركز أكثر علي بيانات عناوين المسجلات ، أي علي البيانات المخزنة في الذاكرة العشوائية ، اي علي البرنامج نفسه ، الذي يجب أن يكون عارفا لعناوين كل المسجلات ، فهو الذي يقوم بتوجيه البيانات اليها .
وعلي وجه الخصوص يجب أن يعرف عناوين حوض المسجلات الكبير ، والتي تعتبر البديل الفعّال لوحدة التحكم ، فهي تتصرف كأنها محطة تصل اليها البيانات من المعالجات المختلفة ، كما تخرج منها البيانات الي المعالجات المختلفة بتحكم من البرنامج نفسه .
سميت هذه الطريقة باسم Reduced Instruction Set Computer ، أو حاسوب طاقم التعليمات المخفض RISC ، ذلك لأن كل عملياته هي عمليات بسيطة ، من مسجّل الي مسجّل ، وبذلك تحقق هذه المعمارية البساطة في التصميم ، لكن التعقيد يصبح علي كتف البرنامج نفسه ، والذي يجب أن يكون مصمما لهذه المعماربة بالضبط (كما قلنا باحتوائه علي عناوين السمجلات في كل خطوة من خطوات البيانات) .
بسبب هذه المعمارية ، تأتي معالجات ARM بأحجام صغيرة ، وباستهلاك طاقة قليل جدا ، نتيجة بساطة التصميم ، مما يجعلها حلا مناسبا للأجهزة الصغيرة ، لكن يعيبها احتياجها لحجم ذاكرة أكبر ، وهو الأمر الذي لا يعد سيئا بالمرة نتيجة رخص وسهولة تصنيع الذواكر في الوقت الحال .
لا تركز معالجات ARM علي سوق الحوسبة ، لذلك لا تأتي بترددات مرتفعة أو بذاكرة مخبأة كبيرة ، لأنها تقصر نفسها حاليا علي معالجة البيانات السيطة الي حد ما ، وعلي هذا فلم يتم بناء معالج منها لينافس معالجات Intel و AMD ، والمنافسة الوحيدة بينها وبين معمارية X86 ، هو معالج ATOM من شركة Intel .
لكن ماذا يحدث اذا قررت ARM بناء معالج كبير للتطبيقات الثقيلة كتحرير الفيديو أو الرسوم ثلاثية الأبعاد .. سوف تحتاج الي دعم برمجي كبير بالطبع ، لكنها ستنافس منافسة شرسة ، وعندها سنري ..
سنري صراع العمالقة الحقيقي ..
المقارنة بين CISC و RISC
CISC :
-تخفف من التعقيد باستخدام طاقم تعليمات مصغر مدمج في وحدة تحكم .
-يؤدي هذا الي حدوث بطء في عملية المعالجة .
-حجم المعالج كبير.
RISC :
-تخفف من التعقيد بالاكثار من المسجلات ، والاعتماد علي البرنامج .
-الاعتماد علي البرنامج قد يكون له عواقب وخيمة اذا لم يتم تطويع البرنامج بالشكل المناسب .
-حجم المعالج صغير .
تم بحمد الله وفضله ..
________________________________________
ملحوظة 2 : تم تبسيط المفاهيم والمصطلحات في هذا المقال بقدر معقول ، وتم تجاهل عدد من التفصيلات والمعلومات التي لا تساهم في وضوح الفكرة الرئيسية ، وعلي هذا يمكن الاعتماد علي هذه المقالة كمصدر شبه دقيق لمعماريات المعالجات .
وقف الخلق ينظرون جميعا كيف أبنى قواعد المجد وحدى
وبناة الأهرام فى سالف الدهر كفونى الكلام عند التحدى
أنا تاج العلاء فى مفرق الشرق و دراته فرائد عقدى
أى شئ فى الغرب قد بهر الناس جمالاِّ ولم يكن منه عندى
بسم الله ما شاء الله
لا يسعنى الا ان أقول زادك الله من علمه
و جعله فى ميزان حسناتك
آثرت الرد اولا ثم العوده لقراءه الموضوع بمزاج و على روقان :D
[CENTER]
[/CENTER]
بارك الله فيك .. دائما متميز ..
ربنا يزيدك من العلم .
[CENTER][URL="https://www.arabhardware.net/forum/showthread.php?t=181830"]سمحاً إذا باع .. سمحاً إذا اشترى[/URL]
[URL="https://www.arabhardware.net/forum/showthread.php?t=181988"],,, هل نحن من نصنع الغباء ؟[/URL]
[URL="https://www.arabhardware.net/forum/showthread.php?t=176623"]الفاكهـــة ... ... ... و فـــوائدهــــا... ... ...[/URL] [URL="https://www.arabhardware.net/forum/showthread.php?t=116628"]الكوكب الجائع [/URL]
[B][FONT=Times New Roman][SIZE=3]{ قُلْ هَلْ نُنَبِّئُكُمْ بِالْأَخْسَرِينَ أَعْمَالاً * الَّذِينَ ضَلَّ سَعْيُهُمْ فِي الْحَيَاةِ الدُّنْيَا وَهُمْ يَحْسَبُونَ أَنَّهُمْ يُحْسِنُونَ صُنْعاً } الكهف
[/SIZE][/FONT][/B]
[/CENTER]
خساره ملحقتش أكون أول رد بس مش مشكله مرحتش لحد غريب
ماشاء الله دائما فى أبداع
مش لاقى حاجه أقولها بارك الله فى علمك وجزاك خيرا عن نفعك الاخرين به
[CENTER][CENTER][SIGPIC][/SIGPIC]
[B][FONT=Impact][SIZE=3][COLOR=Navy]أعتذر منكم إخوانى الأعزاء لأننى لا أعتقد أننى سأقوم بأى مراجعات أخرى وحتى من الممكن ألا أتابع المنتدى العزيز مره أخرى وقد أتابعه من حين لأخر ... الله وحده أعلم
عموما يكفينى أننى تشرفت بمعرفه الكثير من الأشخاص المحترمه من هذا المنتدى العظيم وأرجو أن يدوم الود سواء كنت قريبا أو بعيدا عن المنتدى
وبالطبع هناك قله تمنيت أننى لم أكن تعرفت إليهم قط أطلب من الله أن يهديهم ويوفقهم
وأرجو أن أكون قد إستطعت رد ولو شئ بسيط من الجميل لمنتدانا وما تعلمته منه على مر السنين السابقه
شكرا لكل أعضاء عرب هاردويير ولكل من قدم لى مساعده عن قصد أو غير قصد[/COLOR][/SIZE][/FONT][/B][/CENTER]
[/CENTER]
جزاك الله خير .......
طريقتك في العرض جميله جدا
كدة كتير قوي علي دماغي:confused::confused:
بس فعلا انت استاذ يا دكتور. هحاول اقرا تاني بالراحة يمكن افهم كويس.:D
تم التقيم يا دكتور حميدو ...وانت رائع كالعادة فى شرحك ..:ah7::ah7:
بس يا ريت فى المواضيع المطولة الشرح تكبر الخط درجة عشان الناس العواجيز اللى زيى :ah38::ah38:
:D
[CENTER] [SIZE=1][SIZE=4][B][COLOR=Red][COLOR=black][COLOR=Red]>>>[/COLOR]كم أخٍشى ان يأتى[/COLOR] ........[COLOR=black]........[/COLOR]وقتاَ لا ينفعُ فية الندمُ[COLOR=Black]<<<[/COLOR]
خبـــىء دفاتِركَ القديـــــــــمة كُلـها[/COLOR]َ .... وأكتُب لمِصـــــرَ اليوم شِعراً مِثلهاَ
لا صمــــــتَ بعد اليوم يفرضُ خوفَةُ .... [COLOR=Red]فأكتُب سلاامَ النيل مِصـــر واهلهاَ[/COLOR] [/B][/SIZE]
[IMG]https://i54.tinypic.com/2w20gw4.jpg[/IMG]
[IMG]https://i42.tinypic.com/i70pj9.jpg[/IMG]
[/SIZE][SIZE=3][B][URL="https://www.arabhardware.net/forum/showthread.php?t=220048"]!!!>>> موسوعة جديدة تتضمن مراجعات كروت الGTX5XX الغير قياسية من براند GAINWARD <<<!!![/URL][/B][/SIZE]
[SIZE=4][COLOR=Red][B][URL="https://www.arabhardware.net/forum/showthread.php?t=213781"]!!!>>> Service Pack 1 final ..للويندوز 7 ...<<<!!![/URL][/B][/COLOR][/SIZE]
[SIZE=3][COLOR=Red][B][URL="https://www.arabhardware.net/forum/showthread.php?t=210989"]كل ما تريد معرفتـه عن الطي و برنامجـه ... تجده هنـــــا بإذن الله .[/URL][/B][/COLOR][/SIZE]
[SIZE=3][COLOR=Red][B][URL="https://www.arabhardware.net/forum/showthread.php?t=209555"]!!!>>> UN BOXING + بعض الاختبارات لجيل الفيرمى 5XX من براند GAINWARD <<<!!![/URL][/B][/COLOR][/SIZE][B][SIZE=4]
[/SIZE][/B] [SIZE=2][COLOR=Red][SIZE=3][COLOR=Black][B][URL="https://www.arabhardware.net/forum/showthread.php?t=206275"]![COLOR=Red]![/COLOR]![COLOR=Blue]>>[/COLOR]>[COLOR=Red] UN BOXING + اختبارات لجيل الفيرمى بأكملة من براند GAINWARD [/COLOR]<[COLOR=Blue]<<[/COLOR]![COLOR=Red]![/COLOR]![/URL][/B][/COLOR][/SIZE]
[/COLOR][/SIZE] [SIZE=2][B][URL="https://www.arabhardware.net/forum/showthread.php?t=165375"][COLOR=Blue][موضوع موحّد] Fermi/GTX 580 ومتابعة آخر أخبار الجيل الجديد من Nvidia[/COLOR][/URL][/B][/SIZE][COLOR=Black][URL="https://www.arabhardware.net/forum/showthread.php?t=165791"]
[/URL][/COLOR] [/CENTER]
زادك الله من علمه
و جعله فى ميزان حسناتك
بارك الله فيك
شرح سهل وبسيط يؤكد تمكن صاحب الموضوع وقدرته على ايصال المعلومه
جزاك الله خيرا
الف شكر يا دكتور على هذه المقالة الرائعة
لكن بفرض انه تم تصنيع معالج ARM وتم دعمه من قبل المبرمجين(مع ان هذا يتطلب مجهود شاق جدا وبالتالى سيعرقل عملية تطوير البرامج واكبر دليل على ذلك عدم الاستفادة الكاملة من معالجات cell التى تستخدم بالكونسولز حتى الان )ستكون النتيجة حينها مبهرة ولكن بعد فترة(وفى الغالب تكون قليلة)عندما يصدر معالج ARM جديد بزيادة عدد الانوية (وعدد المسجلات)لن يقدم اى زيادة فى الاداء لان البرامج ليس عندها دراية بالمسجلات الجديدة وذلك عكس ما تقدمه cisc حيث توجد وحدة لتوزيع المدخلات على المسجلات مهما كان عددها
فهل تتفق معى فى هذه الفرضية؟
ومرة اخرى احيك على هذة المقالة
أبــدع فـي مــواضيـعــك , وأحســن فـي ردودك , وقــدم كــل مــا لــديــك , ولا يغــرك فهمــك
ولا يهينــك جهــلك , ولا تنتظــر شكــر أحـــد , بــل اشكــر الله على هذه النعمــة
ولله الحمــد والشكــر
https://folding.extremeoverclocking....c-m.d&t=155660
بسم الله ما شاء الله
فعلا موضوع ممتاز...جزاك الله عنة خير.
و لكن عندى استفسار بخصوص Microcode set هل هى تعليمات MMX و SEE و EM64T
ام ماذا؟؟
حفظك الله لنا أخي محمد ... وزادك فضلا وعلما ... بارك الله فيك .
ما شاء الله أخي مقال يبدو انه ممتع فعلا ويحوي قدرا كبيرا من المعلومات لي عودة لقراءته .
ماشاء الله أخوي محمد شرح رائع الله يعطيك العافية
[CENTER]Jiraiya-OUT[/CENTER]
ليس معني وجود وحدة التحكم التي تقوم بالتوزيع ، أن الأمور أصيحت سهلة ، فمع زيادة عدد الأنوية ، يزداد عدد وحدات التنفيذ (معالجات ضرب ، جمع .. ) أي يزداد عدد مسجلاتها ، وبدون وجود البرنامج الذي يدرك ذلك ويستفيد منه (بمعرفة العناوين الجديدة مثلا) ، لا يصبح من الممكن الاستفادة من تعدد الأنوية في CISC ، ولذلك تحتاج هذه المعمارية تطويعات في برامجها لتمكنها من الاستفادة من تعدد الأنوية .
علي الجانب الآخر فان البرمجة لمعالجات ARM أصعب بطبيعتها ،ومع زيادة عدد الأنوية تزداد الصعوبة ، لكن ذلك لا يعني أنها مستحيلة ، يعني فقط أنها أصعب من تطويعات البرامج للعمل علي أنوية متعددة في CISC .
هناك عدد من أنظمة التشغيل القياسية تدعم معالجات ARM ، مثل بعض اصدارات Linux ، والنظام القادم Chrome ، بالاضافة الي أنظمة تشغيل أخري خاصة بالهواتف النقالة .
الـ Microcode حاليا هو طاقم تعليمات المعالج كله ،وبدونه يتوقف المعالج عن العمل ، فكّر فيها علي أساس أن ال Microcode ، هذا هو عبارة عن معالج صغير ، وكأي معالج فانه يجب أن يحتوي علي تعليمات عتادية (طريقة توصيل أجزاؤه ببعض) ، تعليمات هذا المعالج لها غرض أو وظيفة واحدة ، وهي توزيع البيانات علي أجزاء المعالج المركزي المختلفة .
فكأنني نقلت التعليمات من أجزاء المعالج المختلفة الي معالج الـ Microcode ، وهذا بالفعل ما قمنا به ، حيث تم تقليل تعليمات أجزاء المعالج (أي تقليل تعقيد اتصال الأجزاء ببعضها ) ، ونقل هذا التعقيد الي وحدة Microcode . واصبحت هذه الوحدة تحتوي علي معظم تعليمات X86 .
وبخصوص تعليمات MMX ... ماهي الا عبارة عن اضافة وحدة معالجة خاصة بحسابات النقطة العائمة Floating Point ، تأتي هذه الوحدة بعدد 8 مسجلات ، كل مسجل بمساحة 80 بت .
تعليمات SSE هي عبارة عن توسيع المسجّلات الخاصة بوحدة النقطة العائمة بحيث تأتي بمساحة 128 بت ، وفيما بعد تم اضافة 8 مسجلات جديدة عليها ، لبصبح العدد الكلي 16 .
تعليمات EM64T ، هي مسمي أنيق لتعليمات X86-64 ، وهي نفس تعليمات X86 القديمة ، لكن تم توسيع مساحة المسجلات فيها الي 64 بت بدلا من 32 بت .
_____________________________
شكرا لكم اخواني علي المتابعة ..
وقف الخلق ينظرون جميعا كيف أبنى قواعد المجد وحدى
وبناة الأهرام فى سالف الدهر كفونى الكلام عند التحدى
أنا تاج العلاء فى مفرق الشرق و دراته فرائد عقدى
أى شئ فى الغرب قد بهر الناس جمالاِّ ولم يكن منه عندى
المفضلات