لغة التجميع X86، الجزء 3.2 [محدث 2019]
جي! توقف! ما هو التجزئة؟
تجزئة الذاكرة
–
80186 هو نسخة أسرع من 8086. كما أنه يحتوي على ناقل عنوان 20 بت وناقل بيانات 16 بت، ولكن لديه مجموعة تعليمات محسنة. لم يتم استخدام 80186 على نطاق واسع في أنظمة الكمبيوتر.
–
الخلف الحقيقي ل 8086 هو 80286 الذي تم تقديمه في عام 1982. وهو يحتوي على ناقل عناوين مكون من 24 بت، مما يعني 16 ميغابايت من مساحة عنوان الذاكرة. لا يزال ناقل البيانات بعرض 16 بت، لكن 80286 لديه بعض إمكانيات حماية الذاكرة. فقد أدخل الوضع المحمي في بنية IA. تختلف التجزئة في هذا الوضع الجديد عن التجزئة في الوضع الحقيقي. سنقدم تفاصيل عن هذا التجزئة الجديدة لاحقاً. إن 80286 متوافق مع الإصدارات السابقة من حيث إمكانية تشغيل البرامج المستندة إلى 8086.
ما هو الوضع المحمي؟ وكم عدد الأوضاع التي يمكن للمعالج أن يعمل عليها؟
وما هو التوافق مع الإصدارات السابقة؟
كل معالج تم إدخاله إلى عائلة Intel منذ معالج 8086 متوافق مع المعالجات السابقة. يتيح هذا النهج تشغيل البرامج القديمة (دون إعادة تجميعها) على أجهزة الكمبيوتر الأحدث دون تعديل. ظهرت في النهاية برامج أحدث تتطلب ميزات المعالجات الأكثر تقدمًا.
مقدمة في تفكيك x86
مقدمة في تفكيك x86
–
قدمت Intel أول معالج 32 بت – 80386- في عام 1985. يحتوي على ناقل بيانات 32 بت وناقل عناوين 32 بت. وهو يتبع معمارية 32 بت المعروفة باسم IA-32. نمت مساحة عنوان الذاكرة بشكل كبير (من مساحة عنوان 16 ميجابايت إلى 4 جيجابايت). أدخل هذا المعالج الترحيل في بنية IA. كما سمح أيضًا بتعريف قطاعات بحجم 4 جيجابايت. سمح هذا بشكل فعال بنموذج “مسطح” (أي إيقاف التجزئة بشكل فعال). تقدم الأقسام اللاحقة تفاصيل حول هذا الجانب. مثل 80286، يمكنه تشغيل جميع البرامج المكتوبة لمعالجات 8086 و 8088.
ما هو الترحيل؟
الترحيل هو وظيفة خاصة يمكن أن تقوم بها المعالجات الدقيقة لجعل كمية الذاكرة المتوفرة في النظام تبدو أكبر وأكثر ديناميكية مما هي عليه في الواقع. في نظام الترحيل، قد يتم وضع مساحة معينة من المساحة على القرص الصلب (أو على أي وحدة تخزين ثانوية) تسمى ملف المبادلة أو قسم المبادلة. الذاكرة الافتراضية للنظام هي كل ما يمكن للبرنامج الوصول إليه مثل الذاكرة، وتتضمن ذاكرة الوصول العشوائي الفعلية ومساحة المبادلة.
إيه! نموذج مسطح، ماذا يعني ذلك بحق السماء؟ ما هي النماذج الأخرى التي يمكن أن تعمل عليها الذاكرة؟
–
تم تقديم معالج Intel 80486 في عام 1989. وهو نسخة محسنة من المعالج 80386. مع الحفاظ على نفس ناقلات العناوين والبيانات، إلا أنه جمع بين وظائف المعالج المشترك لأداء العمليات الحسابية ذات النقطة العائمة. أضاف المعالج 80486 المزيد من القدرة على التنفيذ المتوازي لفك تشفير التعليمات ووحدات التنفيذ لتحقيق معدل تنفيذ قياسي يبلغ تعليمة واحدة لكل ساعة. يحتوي المعالج على ذاكرة تخزين مؤقت L2 بسعة 8 كيلوبايت على الرقاقة. علاوة على ذلك، تمت إضافة دعم لذاكرة التخزين المؤقت L2 والمعالجة المتعددة. وقد تضمنت الإصدارات اللاحقة من معالجات 80486 ميزات مثل وضع توفير الطاقة لأجهزة الكمبيوتر المحمولة.
ما هو حساب النقطة العائمة؟
هي الدالة التي تتعامل مع جميع العمليات الحسابية التي لها علاقة بأرقام النقاط العائمة أو الكسور. وهي عبارة عن وحدة منطقية مخصصة مصممة خصيصًا للعمل على أرقام الفاصلة العائمة ولا شيء غير ذلك، ومن هنا جاءت التسمية. يمكن تعريفه على أنه معالج مساعد متخصص يمكنه معالجة الأرقام بشكل أسرع من دارات المعالجات الدقيقة الأساسية نفسها.
تعليمات لكل ماذا؟
–
الأحدث في العائلة هي سلسلة بنتيوم. لم يتم تسميته 80586 لأن Intel اكتشفت متأخرًا أن الأرقام لا يمكن أن تكون علامة تجارية! تم طرح أول بنتيوم في عام 1993.
–
يشبه البينتيوم البينتيوم 80486، ولكنه يستخدم ناقل بيانات عريض 64 بت. داخلياً، يحتوي على مسارات بيانات بعرض 128 و256 بت لتسريع عمليات نقل البيانات الداخلية. ومع ذلك، تدعم مجموعة تعليمات Pentium معالجات 32 بت مثل معالج 80486. وقد أضاف خط أنابيب تنفيذ ثانٍ لتحقيق أداء فائق من خلال القدرة على تنفيذ تعليمتين في كل ساعة. كما أنه ضاعف ذاكرة التخزين المؤقت LI على الرقاقة، مع 8 كيلوبايت للبيانات و8 كيلوبايت أخرى للتعليمات. كما تمت إضافة التنبؤ بالتفرعات. يحتوي معالج Pentium Pro على بنية ثلاثية فائقة التكافؤ. أي أنه يمكنه تنفيذ ثلاثة تعليمات في كل دورة ساعة. تم توسيع ناقل العناوين إلى 36 بت، مما يمنحه مساحة عنوان تبلغ 64 جيجابايت. كما يوفر أيضًا تنفيذًا ديناميكيًا بما في ذلك التنفيذ خارج الترتيب والتنفيذ التخميني. بالإضافة إلى ذاكرة التخزين المؤقت LI التي يوفرها Pentium، يحتوي Pentium Pro على ذاكرة تخزين مؤقت L2 سعة 256 كيلوبايت في نفس حزمة وحدة المعالجة المركزية.
–
أضاف معالج Pentium II تعليمات الوسائط المتعددة (MMX) إلى بنية Pentium Pro. وقام بتوسيع ذاكرة التخزين المؤقت لبيانات وتعليمات L2 إلى 16 كيلوبايت لكل منهما. كما أضاف أيضًا ميزات أكثر شمولاً لإدارة الطاقة بما في ذلك وضعي السكون والسكون العميق للحفاظ على الطاقة أثناء أوقات الخمول.
ما هي تعليمات MMX للوسائط المتعددة؟
–
قدم معالج Pentium III امتدادات SIMD المتدفقة (SSE)، وتعليمات الجلب المسبق لذاكرة التخزين المؤقت، وأسوار الذاكرة، وبنية البنية أحادية التعليمات متعددة البيانات (SIMD) للتنفيذ المتزامن لعمليات الفاصلة العائمة المتعددة. قام Pentium 4 بتعزيز هذه الميزات بشكل أكبر.
ما هي بنية SIMD؟
–
يستهدف معالج Itanium 64 بت من Intel معالج Itanium 64 بت لتطبيقات الخوادم. بالنسبة لهذه التطبيقات، فإن مساحة عنوان الذاكرة 32 بت غير كافية. يستخدم Itanium ناقل عنوان 64 بت لتوفير مساحة عنوان أكبر بكثير. يبلغ عرض ناقل البيانات 128 بت. وفي تحول كبير، انتقلت Intel من تصاميم CISC المستخدمة في معالجاتها ذات 32 بت إلى معالجات RISC في معالجات Itanium ذات 64 بت. كما يتضمن معالج Itanium أيضاً العديد من الميزات المعمارية المتقدمة لتوفير أداء محسن لسوق الخوادم المتطورة.
ما الفرق بين RISC و CISC؟
يرمز كل من RISC و CISC إلى فلسفتين مختلفتين متنافستين في تصميم بنية الكمبيوتر الحديثة. وقد استمر الجدل بينهما لفترة طويلة ومن المرجح أن يستمر. يمكن أن يكمن الفرق بين RISC و CISC على عدة مستويات.
يرمز CISC، التي تُنطق sisk، إلى “كمبيوتر مجموعة التعليمات المعقدة”. ما هي التعليمات المعقدة؟ على سبيل المثال، يعتبر جمع عددين صحيحين تعليمات بسيطة. لكن التعليمات التي تقوم بنسخ عنصر من مصفوفة إلى أخرى وتحديث كلا المصفوفتين الفرعيتين تلقائيًا تعتبر تعليمات معقدة.
إن الفلسفة الكامنة وراء CISC هي أن الأجهزة دائماً أسرع من البرامج، لذلك يجب أن تكون مجموعة التعليمات قوية، والتي توفر للمبرمجين تعليمات تجميعية للقيام بالكثير من البرامج القصيرة. في الواقع، في معمارية CISC، ما تفعله في بنية CISC هو الاستمرار في وضع المزيد والمزيد من التعليمات. تحصل على بعض الأشياء الجديدة التي تجد الكثير من الناس يفعلونها بشكل متكرر، مثل أن يحتاج المحول البرمجي دائمًا إلى توليد؛ ونقول، كما تعلم، دعنا نضع كل هذه السلسلة من التعليمات في تعليمات واحدة معقدة. على سبيل المثال، تعتمد وحدات المعالجة المركزية Intel و AMD على معماريات CISC.
أما البنية الرئيسية الأخرى فهي RISC وتعني “كمبيوتر مجموعة التعليمات المخفضة”. هذا المصطلح مضلل؛ فالكثيرون لديهم انطباع بأن هناك عدد أقل من التعليمات في مجموعة تعليمات المعالج. يجب أن تدرك أن RISC تعني في الواقع “(مجموعة التعليمات المخفضة) كمبيوتر” وليس “كمبيوتر (مجموعة التعليمات) المخفضة”. أي أن الهدف من RISC هو تقليل تعقيد التعليمات الفردية، وليس بالضرورة تقليل عدد التعليمات التي تدعمها وحدة المعالجة المركزية RISC. تعد RISC نوعًا ما ردًا على CISC عندما يستمرون في إضافة أشياء
في معظم الأوقات، نحن نقوم فقط بهذه المجموعة الفرعية الصغيرة من تعليمات RISC، ولا يزال المحول البرمجي/الكاتب لا يعرف حتى الآن كيفية استخدام كل هذه الأشياء ولا يمكنه معرفة كيفية توليدها، لذا سنمضي قدمًا ونحاول اكتشاف ذلك من كود HL.
تحتوي معالجات IBM PowerPC على بنية RISC. اعتادت Apple Mac أن تعتمد على معالجات PowerPC، ولكن لم يعد ذلك صحيحًا بعد الآن. ومع ذلك، لا يزال بإمكاننا العثور على معالجات PowerPC في وحدات تحكم ألعاب الفيديو مثل (Wii و Xbox 360 و PlayStation 3). هناك بنية RISC أخرى هي ARM، وتستخدم على نطاق واسع في الإلكترونيات الاستهلاكية، بما في ذلك:
الهواتف المحمولة (بعض هواتف نوكيا وسوني إريكسون).
النخيل وأجهزة كمبيوتر الجيب وأجهزة المساعد الرقمي الشخصي الرقمي والأجهزة اللوحية والهواتف الذكية (سامسونج جالاكسي وآيفون).
مشغلات الوسائط الرقمية والموسيقى (iPodes).
الآلات الحاسبة وأجهزة الكمبيوتر الطرفية مثل محركات الأقراص الصلبة وأجهزة التوجيه …
فيما يلي مقارنة إضافية صغيرة جنبًا إلى جنب بين البنيتين المتنافستين:
وأيهما أفضل؟
في الوقت الحالي لا يزال هذا الأمر محل جدل كبير. فبينما تهيمن معالجات CISC على عالم الحواسيب الشخصية، تُستخدم معالجات RISC في أماكن أخرى في الغالب.
ولكن في الحقيقة الآن، أيهما أفضل؟
إنها مجرد مسألة وقت. سيزعم البعض أن معالجات RISC أرخص وأسرع، لذا فهي المعالج الذي سيصمد أمام اختبار الزمن، ويقول آخرون أن معالجات RISC تضع عبئاً كبيراً على البرمجيات، وأن الطريقة الوحيدة هي دفع التعقيد إلى الأجهزة باستخدام معالجات CISC، لأنها أصبحت أسرع وأرخص. ومع ذلك، أعتقد أكثر فأكثر أن معالجات RISC و CISC ستندمج يوماً ما بسبب الهدف المشترك المتمثل في الأداء العالي.
هذه هي النقطة، فبالنظر إلى معظم المعالجات الحديثة، يتضح لنا أن التنافس الكامل بين معالجات CISC و RISC ليس له أهمية كبيرة الآن. وذلك لأن البنائين يتقاربان أكثر فأكثر، حيث تقوم وحدات المعالجة المركزية من كل طرف بدمج أفكار من الطرف الآخر.
–
تدعم رقاقات RISC اليوم نفس عدد التعليمات التي تدعمها رقاقات CISC القديمة.
–
بدأت رقاقات CISC في استخدام التقنيات التي ارتبطنا بها مع رقاقات RISC.
أخيرًا، أنت تفهم سبب تسمية البنية بـ x86 لأن المعالجات الأولى في هذه العائلة تم تحديدها بأرقام الطرازات التي تنتهي بالتسلسل “86”: 8086، 80186، 80286، 386، 486. ونظرًا لعدم إمكانية إنشاء حقوق علامة تجارية على الأرقام، بدأت Intel ومعظم منافسيها في استخدام أسماء مقبولة كعلامة تجارية مثل Pentium للأجيال اللاحقة من المعالجات، ولكن ظل نظام التسمية السابق كمصطلح للعائلة بأكملها.
السجلات
تتطلب معظم عمليات المعالج معالجة البيانات. لسوء الحظ، فإن أبطأ العمليات التي يمكن للمعالج القيام بها هي محاولة قراءة أو كتابة البيانات في الذاكرة. كما هو موضح في الشكل الأول، عندما يصل المعالج إلى عنصر بيانات، يجب أن ينتقل الطلب خارج المعالج، عبر ناقل التحكم، إلى وحدة تخزين الذاكرة. هذه العملية ليست معقدة فحسب، بل تجبر المعالج على الانتظار أثناء تنفيذ الوصول إلى الذاكرة. يمكن قضاء وقت التوقف هذا في معالجة تعليمات أخرى.
للمساعدة في حل هذه المشكلة، يتضمن المعالج مواقع ذاكرة داخلية تسمى السجلات. السجلات قادرة على تخزين عناصر البيانات للمعالجة دون الحاجة إلى الوصول إلى وحدة تخزين الذاكرة. الجانب السلبي للسجلات هو أن عدداً محدوداً منها مدمج في شريحة المعالج. إذا نظرت بعناية إلى الشكل أدناه، يجب أن تلاحظ أنه كلما انخفضت وحدة تخزين الذاكرة كلما زادت مساحة تخزين الذاكرة، ولكن الأبطأ أيضاً.
تحتوي معالجات منصة IA-32 على مجموعات متعددة من السجلات بأحجام مختلفة. يتم تصنيفها وفقًا للوظائف التي تؤديها. تتضمن المعالجات المختلفة ضمن منصة IA-32 سجلات متخصصة. يتم عرض المجموعات الأساسية للسجلات المتوفرة لجميع المعالجات في عائلة IA-32 في الجدول التالي.
هنا نصل إلى نهاية الجزء 3. في البرنامج التعليمي التالي، سنناقش استخدامات السجلات بمزيد من التفصيل.
مقدمة في تفكيك x86
مقدمة إلى التفكيك x86