ي البداية ما هي وحدة المعالجة - TopicsExpress



          

ي البداية ما هي وحدة المعالجة المركزية Central Processing Unit ؟ وما هي مكوناتها ؟ وحدة المعالجة المركزية هي عبارة عن دائرة متكاملة مصممة على شريحة صغيرة من مادة السليكون وتماثل فى حجمها طابع البريد وتتكون هذه الوحدة من ملايين الترانزستوررات الصغيرة الحجم وتتصل فيما بينها بأسلاك دقيقة للغاية من الألمونيوم وكانت أول وحدة معالجة هي التي أنتجتها شركة إنتل عام 1971 (وحدة الـ 4004) وتحتوي على 2.300 ترانزستور أما أحدث معالج (إنتل بنتيوم III) فيحتوى على 27.1 مليون ترانزستور . تنقسم وحدة المعالجة المركزية عادة إلى سبعة أقسام هي : وحدة التحكم ووحدة المنطق الرياضي (Arithmetic Logic Unit) ووحدة متابعة تنفيذ الأوامر ووحدة فك التشفير ووحدة ما قبل المعلومات ووحدة كود الناقل والذاكرة الفورية Cache Memory والتي تنقسم عادة بين تخرين الأوامر وتخزين المعلومات والبيانات . والذاكرة الفورية هي جزء صغير جداً من ذاكرة أكبر بالغة السرعة وتوجد فى وحدة المعالجة المركزية أو بالقرب الشديد منها ، ويمكن لهذه الذاكرة تخزين أحدث البرامج التي دخل عليها المستخدم وذلك كمرجع سريع وسهل لمراجعة تنفيذ الأوامر وعندما تتلقى وحدة المعالجة المركزية أمر إحضار بيانات أو تنفيذ أمر ما فإنها تقوم دائماً بمراجعة الذاكرة لمعرفة هل المهمة أو الأمر المطلوب تنفيذه موجود فيها أم لا ، وإذا لم تكن كذلك فلابد من إحضار البيانات المطلوبة من الذاكرة الرئيسية وهو ما يستغرق وقتاً أبطأ قليلاً . ورغم أن هذه الشرائح تختلف فيما بينها فى أكثر من جانب لكنها جميعاً تتوافق مع وحدة المعالجة المركزية التي أنتجتها شركة أنتل (Intel x98) حيث طورت انتل هذه الشريحة وأدخلت في عام 1978 شريحة 8086 وفى عام 1982 اخترعت انتل المعالج 80586 CPU 16 bit الذي يعتبر أول معالج يستطيع تشغيل كل البرامج التي كان المعالج السابق يشغلها . وبعد ذلك ظهرت معالجات أسرع منها معالج 80386 (32 Bit) وبنتيوم 80486 وغيرها من المعالجات الرائدة التي تستطيع تشغيل أي برامج كانت تعمل على المعالج القديم وهذا الأسلوب من التوافق مع القديم – توافق المعالج الجديد لتشغيل إصدارات البرامج السابقة التي كانت تعمل على المعالج القديم . تتوافق معالجات AMD مع وحدة المعالجة المركزية (X 36) وكذلك معالجات Cyrix III من إنتاج شركة VIA ويمكن تشغيل الويندوز وبرامجها المتعددة باستخدام أي منها ولكن كفاءة التشغيل ستختلف من معالج لآخر حسب الدعم الداخلي للأوامر الإضافية وحسب الوسيلة التي سيتم بها فك شفرة أوامر معالجات انتل . كلما كان أصغر … كلما كان أفضل !! صنعت أغلب وحدات المعالجة المركزية الحالية باستخدام تقنية الـ 0.18 ميكرو وهذا الرقم يشير إلى المسافة بين المكونات القريبة على سطح الشريحة وهذه المسافة (أي 1.11 ميكرو) أصغر من سمك شعرة رأس الإنسان بمقدار 500 مرة . وهذه التقنيات المتناهية فى الصغر تسمح بوضع عدد أكبر من الترانزستورات فى نفس المنطقة كما تساعد على إمكانية وضع تصميمات أعقد للشريحة الإلكترونية أو أحجام صغيرة من وحدات التحكم المركزية . وهذا يعنى أن المعالج يمكن أن يحتوى على أكثر من وحدة تحكم مثبتة على نفس شريحة السليكون ، وهو ما يعنى قدرة أكبر وتكاليف أقل وأرباحاً أكثر للشركة المنتجة ، وعندما تقل المسافة بين الترانزستورات يقل استهلاك الطاقة أيضاً ، وهذه من الأخبار السارة وخاصة للذين يعانون من سرعة نضوب الطاقة في أجهزة الكمبيوتر المحمولة (النوت بوك واللابتوب) حيث تزيد المسافة الدقيقة بين وحدات الترانزستور من قدرة وحدة المعالجة المركزية على ألداء بسرعات عالية جداً . وبعد هذه المقدمة النظرية الطويلة ننتقل الآن إلى الحديث عن أنواع المعالجات التي تتنافس بضراوة على اعتلاء عرش المعالجات وهى : 1) معالج بنتيوم III ومعالج سبليرون وكلاهما من إنتاج انتل . 2) معالج أثلون ودورون وكلاهما من إنتاج شركة AMD. 3) معالج Cyrix III وهو من إنتاج شركة VIA. هذه هي الأسماء الرسمية . 1) معالج بنتيوم III : يعد معالج بنتيوم (III 450) ميجاهرتز الأحدث فى سلسة المعالجات التي طورتها انتل وقد ظهرت عام 1999 أما عائلة معالجات انتل الشهيرة فقد بدأت بمعالج بنتيوم برو عام 1995 ، وكانت المعالجات التي تتراوح سرعتها بين 450 و 600 ميجاهرتز تصنع باستخدام تقنية الـ 0.25 ميكرو وتستخدم التصميم الذي اشتهر به معالج بنتيوم III الجديد أما المعالجات التي تزيد سرعاتها على 600 ميجاهرتز فتستخدم تقنية الـ 0.18 ميكرو وتصميم معالج سيليرون ، ورغم وجود معالجين من إنتاج انتل بنفس السرعة لكن أحدهما يتميز بأنه صنع بتقنية 0.18 ميكرو ولهذا يكتب عليه حرفE الذي يعني قدرة أكبر على التشغيل . وتتراوح سرعات معالجات بنتيوم III المتوافرة في الأسواق من 667 إلى وحدة جيجاهرتز ، وفى غضون أيام قليلة سيصدر معالج بنتيوم III بسرعة 1.133 جيجاهرتز ولن يمر وقت طويل قبل ظهور معالج بنتيوم 4 بسرعة تتراوح بين 1.300 جيجاهرتز و 1.400 جيجاهرتز ، وشرعت شركة انتل بالفعل فى بناء معمل لتصنيع الشرائح الإلكترونية بتقنية الـ 0.13 ميكرو رغم أنه غير معروف حالياً إذا كانت هذه التقنية ستستخدم فقط لوحدات المعالجة المركزية الجديدة أم لإطالة حياة بنتيوم III مقابل المنافسة الحادة التي يواجهها من قبل معالج أثلون (Athion) . 2) معالج انتل سبليرون : أعلنت شركة انتل عن معالج سبليرون لأول مرة فى بداية عام 1998 بسرعة 300 و 266 ميجاهرتز وربما تكون قد استخدمت تقنية بنتيوم II ولكنها خفضت مساحة ذاكرة الكاش المستوى الثاني لخفض التكاليف وقد أثر ذلك على الأداء كثيراً لدرجة أن الشركة قامت بتطوير معالج جديد اسمه Mendocino بعد ذلك بعدة أشهر ويحتوى على 138 كيلة بايت من ذاكرة الكاش المستوى الثاني . ويستخدم معالج Celerons Mendocino تقنية 0.25 ميكرو وتصل سرعته إلى 533 ميجاهرتز أما المعالجات الأسرع والتي تعمل بسرعة 533 ميحاهرتز وأكثر فتستخدم نفس التقنية معالج سيليرون (0.18 ميكرو) ورغم ذلك فهناك اختلافات بالنسبة لذاكرة الكاش وناقل البيانات الأساسي (FSB الذي سنناقشه فيما بعد وستلاحظ أن معالج سيليرون 533 ميجاهرتز) والذي يستخدم أحدث تقنية علية حرفA ويتوافر بالأسواق معالجات سيليرون بسرعة 800 ميجاهرتز ومن المتوقع أن تتواجد المعالجات التي تعمل بسرعة تصل إلى 800 ميجاهرتز فى الأسواق فى بداية السنة الجديدة . 3) معالج Athlon من إنتاج AMD : عندما ظهر معالج Athlon لأول مرة في أغسطس من العام الماضي أعلن عن نفسه بقوة حيث تصل سرعته إلى 600 ميجاهرتز وأثبت أنه قادر على منافسة انتل ، وقد استخدمت النماذج الأولى من المعالجات تقنية 0.25 ميكرو أما المعالجات الحديثة فتستخدم تقنية 0.18 ميكرو فى بداية شهر يونيو من هذا العام أنتجت AMD معالج Athlon بتقنية جديدة ودقة متناهية في الصغر تضاهى ابتكارات انتل والدقة التي تتمتع بها معالجاتها . يستخدم معالج Athlon تقنية 00.18 ميكرو ويتوافر بالأسواق بسرعات تتفاوت ما بين 700 إلى 1000 ميجاهرتز بزيادات قدرها 50 ميجاهرتز (بمعنى أن كل معالج يزيد على المعالج الآخر بمقدار 50 ميجاهرتز بحد أقصى للسرعة 1000 ميجاهرتز) . ويتوقع الخبراء أن تستمر المنافسة مع معالجات انتل طويلاً . وفى العام القادم ستعلن AMD عن إدخال المعالجة المركزية الجديدة التى ستحول نوع وحدات التحكم التقليدية من X86 إلى bit 64. 4) معالج Duron من شركة AMD : أعلنت AMD عن معالج Duron في يونيو من هذا العام ، ويستخدم هذا المعالج دقة تصل إلى 0.18 ميكرو ويتوافر بالأسواق بسرعات 600 و 650 و 700 و 750 ميجاهرتز ويبشر هذا المعالج بدور كبير في المستقبل بكفاءته التي تتوسط بين كفاءة معالج Celeron ومعالج بنتيوم III وسعره المعقول المناسب لمستوى السوق وحتى الآن تفوق سرعته معالج Celeron ومن المؤكد أن شركة AMD ستظل رائدة كذلك لفترة طويلة . 5) معالج Cyrix III من VIA : أعلنت شركة VIA عن معالجتها Cyrix III فى المعرض السنوي Computex الذي أقيم فى تايوان فى شهر يونيو الماضي ، اشترت شركة VIA معالج Cyrix من شركة National Semiconductor في يونيو من العام الماضي ثم امتلكت بعد ذلك شركة مركز تصميم المعالجات Centaur . ورغم استخدام أسم تجارى قوى IPT Winchip لهذا المعالج فإن تصميمه ينتمي إلى نفس فئة التصميمات الموجودة فى IPT Winchip . يستخدم معالج Cyrix دقة تصل إلى 0.18 ميكرو ويتوافر فى الأسواق بسرعات تصل إلى 500 و 533 و 600 ميجاهرتز وسيدعم الإصدار الجديد من هذا المعالج سرعة 733 ميجاهرتز وأكثر ويطلق عليه اسم Samuel 2 ويستخدم دقة تصل إلى 0.15 ميكرو ومن المتوقع أن يتم إنتاج معالج Cyrix III بسرعة 800 ميجاهرتز قيل نهاية هذا العام وسيتبعه بعد فترة قليلة أول معالج Cyrix بسرعة واحد جيجاهرتز . الأحجام وفراغات الإدخال يتكون كل من معالج بنتيوم III ومعالج Celeron من 27 مليون ترنزستور وحجم يصل إلى حوالي 106 ميليمترات مربع بينما يصل حجم شريحة معالج Athlon إلى 120 مليمتر مربع ويتكون من 37 مليون ترنزستور ويصل حجم معالج Duron إلى 100 مليمتراً مربعاً أما معالج VIA Cyrix III فيصل حجم الشريحة كلما زاد عدد الشرائح التي يمكنك تثبيتها على سطح الرقاقة الإلكترونية أثناء التصنيع وكل مكون من مكونات الشريحة الإلكترونية وفى معالج بنتيوم III تحتل ذاكرة الكاش حوالي ثلث مساحة الشريحة . وقد تكون شريحة المعالج نفسها أصغر من طابع البريد ولذا يجب تسليمها فى معدات أكبر حتى يمكن استخدام نقاطها الإلكترونية الدقيقة . ومعالجات الوقت الحالي تثبت في جهاز الكمبيوتر بأحد شكلين : معالج يتم تركيبه في الفراغات المربعة وآخر يتم تركيبه فى خانات خاصة في اللوحة الأم . قامت شركة Intel بتصنيع كارتريدج لمعالج بنتيوم II ويسمح ذلك لشركة انتل باستخدام تفاعل أسرع بين وحدة المعالجة المركزية وشرائح المستوى الثاني الخارجية ثم إدخال هذه المجموعة بالكامل فى كارتردج صغير سميك وهذا الأسلوب من التغليف والتعبئة موجود في كل بنتيوم II ومعالج Celeron الأصلي ومازال مستخدماً لكل سرعات معالج بنتيوم III وتستخدم شركة AMD كارتردج مشابه فى التصميم لوحدة تشغيل معالج Athlon. الدعم الثنائي وحدة المعالجة المركزية نظرياً تدعم كل معالجات بنتيوم III مواصفات وحدة المعالجة المركزية الثنائية ولكن عملياً تدعمها معالجات بنتيوم التي تحمل إقرار انتل الرسمي بصلاحيتها للدعم الثنائي فقط ويستثنى من ذلك بعض المعالجات الأولى وبالنسبة لمعالج Celeron فهو لا يدعم مواصفات وحدة المعالجة المركزية الثنائية أما معالج Athlon فهو يدعم مواصفات وحدة التشغيل الثنائية ومعالج Duron غير مصنف من المعالجات التي تدعم ثنائية وحدة التشغيل الرئيسية ولكن ربما يكون ذلك فى المستقبل ولم تذكر الشركة المنتجة لمعالج Cyrix شيئاً عن دعمه لهذه الثنائية أبداً . ناقل البيانات الأمامي Front-Side bus يتولى الناقل مهمة تحويل كل البيانات من وإلى وحدة المعالجة المركزية ومجموعة الشرائح الأخرى والذاكرة في حالات كثيرة . ولناقل البيانات الأساسي تأثير كبير على أداء الجهاز كله فهو الذي يحدد سرعة دخول وخروج المعلومات والأوامر من وإلى وحدة المعالجة المركزية وعند تصنيف سرعة البيانات نجد أن أبطئهم هو معالج Celeron الذي يعمل بسرعة 66 ميجاهرتز ثم معالج بنتيوم III ومعالج Cyrix III وكل منهما يعمل إما بسرعة 100 أو 133 ميجاهرتز أما معالج انتل بنتيوم 4 فيستخدم ناقل بيانات أمامياً بسرعة 400 ميجاهرتز . وفى حركة ذكية حصلت شركة AMD على بروتوكول ناقل EV6 الذب أنشأته شركة Digital وتمتلكه شركة كومباك حالياً ، ورغم أن هذا المعالج يعمل بسرعة 100 ميجاهرتز لكنه يقوم بتحويل البيانات على الحواف الصاعدة والهابطة فى كل نبضة من نبضات الساعة الزمنية الداخلية في الشريحة الإلكترونية ويصل إلى معدل تحويل بيانات يقدر ب 200 ميجاهرتز بين وحدة المعالجة المركزية ومجموعات الشرائح الإلكترونية الأخرى ، وهذا الناقل مستخدم في معالج Athlon وكذلك فى معالج Duron رغم انخفاض سعره . ذاكرة الكاش الفورية Cache تضم أغلب المعالجات المستوى الأول والثاني من ذاكرة الكاش الفورية بالإضافة إلى ذاكرة النظام الأساسية وعندما تبحث وحدة المعالجة المركزية عن البيانات فهي تبحث أولاً فى ذاكرة المستوى الأول ثم تتصفح ذاكرة المستوى الثاني . وبعد ذلك تقوم بفحص الذاكرة الرئيسية ومن الواضح أنه كلما زادت سرعة حصول وحدة المعالجة المركزية على البيانات كلما زادت كفاءة أدائها. وتعتبر المساحة الخالية في الذاكرة الفورية محدودة للغاية إلى حد يسمح بتخزين البيانات التي تستخدم بكثرة فقط ، حيث أن المستوى الأول من ذاكرة الكاش مقسم بين البيانات والأوامر . ويتم تركيب ذاكرة الكاش المستوى الأول في شريحة واحدة المعالجة المركزية ذاتها ونتيجة لذلك فهي تعمل بنفس سرعة وحدة المعالجة المركزية وبالنسبة لذاكرة الكاش المستوى الثاني فهي أكبر في المساحة وقديماُ كانت تستخدم من خلال ناقل النظام الذي يتسم بالبطء إلى حد ما ومع إنتاج معالج بنتيوم II ابتكرت شركة انتل ناقلاً أفضل لاستخدام ذاكرة الكاش المستوى الثاني وهو يعمل بسرعة تصل إلى نصف سرعة المعالج ذاته وتشترك معالجات بنتيوم III كلها فى هذا التصميم بسرعة قصوى تصل الى 32 كيلو بايت فى ذاكرة المستوى الول وسرعة بنصف الحد الأقصى من خلال ناقل 64 بت . يتميز معالج Celeron بمستوى أول من ذاكرة الكاش ويصل حجمه إلى 32 كيلوبايت ومستوى ثان من الذاكرة يصل إلى 128 كيلوبايت وكلاهما مثبت على وحدة المعالجة المركزية وبهذا يعمل كلاهما بنفس سرعة وحدة المعالجة المركزية . وفى معالج بنتيوم III قامت انتل بتركيب ذاكرة الكاش من المستوى الثاني على نفس شريحة وحدة المعالجة المركزية وخفضت سعتها من 512 كيلوبايت إلى 128 كيلوبايت أي ما يساوى أربعة أضعاف معالج Celeron وبنتيوم III . وكانت الأجيال الأولى من هذا المعالج تحتوى على مستوى ثان من الذاكرة يصل إلى 512 كيلوبايت وفي بعض الحالات كانت تعمل بسرعة تصل إلى ثلث سرعة وحدة المعالجة المركزية أما معالج Athlon الحديث فيتميز بذاكرة فورية مستوى ثان تصل إلى 265 كيلوبايت وتعمل بكامل سرعتها القصوى . أما معالج Duron فيتباهى بمستوى أول من الذاكرة الفورية يصل إلى 128 كيلوبايت أما المستوى الثاني من الذاكرة فلا يحتوى سوى على 64 كيلوبايت وكلاهما على نفس الشريحة وبالنسبة لمعالج Cyrix ففيه مستوى أول من الذاكرة يساوى 128 كيلوبايت أما الخطأ الفادح فى هذا المعالج فهو عدم وجود مستوى ثان للذاكرة ووعدت شركة VIA بأن المعالج Samuel 2 سيحتوى على مستوى ثان من الذاكرة . والسؤال الذي يطرح نفسه في هذا الصدد هو طالما أن كلا من المستوى الأول والثاني للذاكرة يعملان بكامل سرعتهما فى اغلب وحدات الـ Cpu فلماذا لا يتم لصقها وتوحيدهما فى شريحة واحدة ظ والإجابة هي أنه بانفصالهما يمكن لكل من الذاكرتين أن نظم وتعالج البيانات بشكل مستقل حيث يعتقد مصممو الشرائح والرقائق الإلكترونية أنه سيؤدى إلى الأداء الأفضل ورغم أن كلا من شركة AMD وشركة VIA يفخران بمستوى أول من الذاكرة يصل إلى 128 كيلوبايت مقارنة بالمستوى الأول للذاكرة فى معالج بنتيوم والذي يساوى 32 كيلوبايت لكن شركة انتل ترى أنه كلما زاد حجم الذاكرة زاد الوقت الذي تستغرقه الذاكرة في البحث وفي حالة تخزين أوامر كثيرة ستكون سرعة الاستجابة بطيئة أما AMD و VIA فلا يريان أي معنى فى ذاكرة تساوى 32 كيلوبايت رغم تقدم عمليات التصنيع الدقيقة والوصول إلى مستوى عال من الكفاءة والدقة فى العصر الحالي . الأوامر الخارجية أغلب وحدات التشغيل الرئيسية التي تستخدم مع الأوامر الخارجية متوافقة وحدات X86 ومن الجدير بالملاحظة إضافة انتل القيمة من أوامر الوسائط المتعددة الجديدة التى تسمى MMX والتي ظهرت لأول مرة في بنتيوم MH566 MMX أما الآن فهي موجودة فى كل بنتيوم ووحدة تشغيل . سارعت شركة AMD بإضافة مجموعتها من حوالى 21 متراً تسمى‍ 3D Now! ويقوم مصمموا البرامج ومطوروها باستغلال هذه الأوامر الخارجية لزيادة سرعة التشغيل فى حالة وجود وحدة تشغيل مناسبة سواء كانت MMX أو 3D NOW واليوم كل نظام تشغيل وكل برنامج ناهيك عن كروت الجرافيك بإرسال إشارات ونداءات الى هذه الأوامر الخارجية لتحسن أداء الصوت والصورة . وفى بنتيوم III أضافت انتل مجموعة جديدة من الأوامر الجديدة تعرف بأسم See ويصل عددها الى 70 أمراً وتعمل هذه الأوامر الجديدة على تسريع قدرة التعرف على الصوت وسرعة عرض الوسائط السمعية والبصرية (لقطات الفيديو) والبرامج المجسمة، أما بنتيوم 4 فيفخر باحتوائه على 144 أمراً جديداً بالاضافة الى أوامر MMX وأوامر SSE. يدعم كل من معالجAthlon ومعالج Duron مجموعة أوامر Enbanced 3D Now والتي تضيف 24 أمراً جديداً على الأوامر الموجودة بالإضافة إلى تدعيم أوامر MMX ويدعم معالج Cyrix III كلا من الأوامر MMX وأوامر 3D Now. التوفير فى استهلاك الطاقة من الممكن توفير الطاقة المستهلكة عن طريق تخفيض سرعة وحدة التشغيل ولكن هذا سيؤثر بالطبع على كفاءة الآداء ، ولأن الطاقة تتناسب مع مربع الفولتات لكن التوفير فى مقدار الفولتات قد يؤدى إلى توفير استهلاك الطاقة . ويمكن لتقنية Speed Stelp فى انتل أن يؤدى الى خفض استهلاك بنسبة 4% وفى نفس الوقت الاحتفاظ بـ 80% من أداء وحدة التشغيل ، ويمكنها أن تخفض من استهلاك الطاقة أثناء تشغيل البرامج التى لا تحتاج إلى إعادة تشغيل الجهاز وتقنية Speed Step متوفرة في معالج Mobile MH266 Pentium III والذى يعمل بسرعة 600 و 650 و 700 و 750 ميجاهرتز وتخفض من استهلاك الطاقة فى هذا المعالج من 1.6 فولت إلى 1.35 فولت وقي مجال توفير الاستهلاك تنخفض السرعة من 750 ميجاهرتز إلى 600 ميجاهرتز ومن 700 الى 550 ميجاهرتز ومن 650 و 600 الى 500 ميجاهرتز . لم تدخل انتل تقنية Speet Setp فى معالج Celeron للأجهزة المحمولة ، وبخلاف ذلك يتشابه هذا المعالج الرخيص الثمن مع لنتيوم III للأجهزة المحمولة فى كثير من النواحى . أما شركة AMD فقد أعلنت مؤخراً عن تقنيتها لتوفير الوقت والتى تسمى Power Now وهى متوافرة فى كل من المعالج Mobile K6-2t والمعالج Mobile K6-III وكلاهما مصنع بتقنية 0.18 ميكرو تستخدم تقنية Power Now! نفس المفهوم الذى تستخدمه تقنية Speed Step لأنها تخفض الفولتات 1.4 و 2 فولت حسب احتياجات المعالج . معالجات الكمبيوتر المحمول تستهلك المعالجات قدراً كبيراً من الطاقة فمعالج Celeron إنتاج انتل يستهلك حوالى 29 وات وكان أول جيل من هذا المعالج يستهلك حوالى 28 وات وتستهلك الأنواع الجديدة من معالجات انتل حوالى 18 وات . بالمقارنة بما سبق تتميز معالجات Duron, Athlon بالشراهة الكبيرة فى الطاقة فهى تستهلك حوالى ضعف ما تيتهلكه معالجات انتل تحت نفس الظروف القصوى ، أما معالج Cyrix III فيستهلك حوالى 10 وات فى اقصى مدى للتشغيل وهو ما يعنى أنه سينجح نجاحاً كبيراً إذا استغلت هذه الخاصية فى اجهزة الكمبيوتر المحمولة . أسرع ... وأسرع وهكذا نجد العديد من الفروق بين التصميمات والمعالجات المتنافسة ولكن لا يعنى بالضرورة وجود فروق ضخمة فى كفاءة الاداء والتشغيل . وشهد سوق لمعالجات تغييرات ضخمة خاصة فى ظهور معالج اثلون الذى يهدد عرش انتل وينافسها على صدارة سوق المعالجات الأسرع والأكثر قوة . لا يمثل الفارق فى كفاءة الأداء عاملاً كبيراً فى تحديد الفائز فى هذه المنافسة فالسعر يمثل عاملا كبيرا كذلك بالنسبة للعديد من الناس ويحدد فى كثير من الحالات المنتصر فى المعركة وتعد عروض معالج Duron الذى ينافس معالج Celeron من الأخبار السارة لكثير من الناس الذين يرغبون فى تحقيق اكفأ باسعار اقل والمساحة التى ستشهد منافسة مشتعلة هى ساحة المعالجات الدقيقة Microprocessors والتى تزداد فى السرعة أكثر وأكثر . الموضوع منقول 0 Not allowed! المعالج الدقيق أو المجهري أو الصغري microprocessor (يرمز له أحيانا ب µP), أحد المكونات الإلكترونية الرقمية القابلة للبرمجة أي انه شريحة ذات اطراف عديدة تستقبل الأوامر وتقوم بتنفيذها تياعا حسب برنامج مخزن مسبقا في شريحة ذاكرة خارجية.و بذلك يستخدم المعالج الدقبق بالعديد من الوظائف مثل التحكم في عملية صناعية أو متغير طبقا لمدخلات من الحساسات (المستتشعرات)الإلكترونية أو اعدادات المستخدم وهو عبارة عن شريحة دائرة متكاملة تحتوى على عدد ضخم من المقاحل المصغرة فمثلا المعالج بنتيوم 4 يحتوى على 15 مليون مقحل (transistor). تتكون وحدة المعالجة المركزية في معظم أنظمة الحاسوب الدقيق (microcomputer) من شريحة أو أكثر من المعالج الدقيق (microprocessor). يتكون المعالج الدقيق من وحدتين أساسيتين هما.. وحدة الحسابيات والمنطق (ALU)و وحدة التحكم (CU) وكل من هذه الوحدتين تتكونان داخليًا من عدة مكونات. يختلف المعالج الدقيق عن المتحكم الدقيق (microcontroler) في أن الأخير يحتوي بالإضافة إلى وحدته الأساسية وهي وحدة المعالجة المركزية إلى وحدات ثانوية وهي مجموعة من المواجهات (interfaces) مع المعالج متمثلة في ذاكرة داخلية (internal memory) تنقسم إلى ذاكرة للقراءة فقط (ROM) وذاكرة للقراءة والكتابة (RAM) ومنافذ الإدخال والإخراج (input / output ports) وقد يحتوى أيضا على محول تناظرى \رقمى (analog-to-digital converter) ومحول رقمي \تناظري ومؤقت (timer) والمراشح الرقمية (digital filters) من الناحية الصناعية في سنةالفصل الأول مقدمة في هذه المحاضرات سنتناول موضوع المعالجات الدقيقة وبرمجتها وسيتم التركيز علي المعالجات المستخدمة في الأجهزة الشخصية Personal Computers وهي المعالجات المصنعة بواسطة شركة Intel والمعالجات المتوافقة معها. وقد تمت الاستعانة بمجموعة من المراجع التي تغطي هذا الموضوع ولكن تم اعتماد المرجع الأول و هو كتاب Assembly Language Programming and Organization of The IBM PC كمرجع أساسي تم اللجوء إليه بصورة أساسية في كتابة هذه المادة هذا بالإضافة إلى مجموعة المراجع الأخرى والتي تم توضيحها في نهاية المادة. الخلفية المطلوبة Background يجب الإلمام جيدا بكيفية التعامل مع الأنظمة الرقمية المختلفة وبالذات النظام الثنائي والسداسي عشري وإجادة التعامل مع العمليات الحسابية المختلفة من جمع وطرح وضرب وقسمة للأرقام المختلفة في تلك الأنظمة. كذلك يجب التعرف علي إحدى لغات البرمجة العليا علي الأقل ويفضل أن تكون إحدى اللغات التي تستعمل الهيكلة Structured Programming Language مثل الباسكال والسي ولكن يمكن بسهولة فهم البرامج بمجرد الإلمام بأي من لغات البرمجة العليا الأخرى. والهدف من ذلك هو كتابة بعض البرامج من خلال استعراض لغة التجميع ويفضل أن تكون لدينا بعض مهارات البرمجة المختلفة. أسلوب تدريس المادة سيتم التدريس باستخدام هذه المادة بالإضافة إلي مجموعة من برامج الكمبيوتر المصاحبة. ويتم ذلك عن طريق تدريس محاضرة واحدة أسبوعيا بواقع ساعتين للمحاضرة الواحدة، بالإضافة إلي ثلاثة ساعات عمليه يقوم فيها الطالب بكتابة البرامج المطلوبة في نهاية كل مرحلة. يتم استلام البرامج أسبوعيا وتقييمها بواسطة الأستاذ ويتم ذلك باستخدام شبكة الحاسوب بالقسم. كما يتم عمل مجموعة من الاختبارات على مدار فترة تدريس المادة هذا بالإضافة إلى الامتحان النهائي في نهاية الفترة المقررة. محتويات المادة تم تقسيم المادة لمجموعة من الفصول، كل فصل يمثل وحدة مستقلة ويجب دراسة الفصول بالترتيب حيث أن كل فصل يعتمد عادة علي الفصل السابق له. ويفضل الإجابة عن كل الأسئلة التي تأتي في نهاية كل فصل كما سيتم طلب كتابة مجموعة من البرامج في نهاية كل فصل. وتتمثل الفصول في الآتي: الفصل الثاني : يتناول المعالجات الدقيقة بصورة عامة والمعالجات المنتجة بواسطة شركة Intel بصورة خاصة ثم يتعرض للتركيب الداخلي للمعالج 8088 والمسجلات المختلفة به وطريقة التخاطب مع الذاكرة. الفصل الثالث: يوضح الشكل العام للأوامر في لغة التجميع وتعريف المتغيرات والثوابت بالإضافة إلي التعرف علي مجموعة من الأوامر الأساسية والتعرف علي الشكل العام للبرنامج واستخدام نداءات المقاطعة للقيام بعمليات الإدخال والإخراج. في نهاية الفصل يتم كتابة برامج صغيرة وتجربتها. الفصل الرابع: يتم فيه التعرف علي مسجل البيارق Flag Register وتأثر البيارق بالعمليات المختلفة وتوضيح حالات الفيضان المختلفة التي قد تحدث بعد تنفيذ عملية محددة. الفصل الخامس: يتم فيه توضيح أوامر التفرع المختلفة وبعدها يتم التعرف علي كيفية تحويل البرامج الصغيرة من البرامج ذات المستوي العالي High Level Language ويتضمن ذلك تحويل أوامر التفرع والتكرار المختلفة إلى لغة التجميع. بعد ذلك تتم كتابة أحد البرامج الكبيرة نسبياً وتوضيح كيفية تحليل البرنامج إلى مرحلة الكتابة للبرنامج الفصل السادس: يتناول أوامر الحساب والمنطق المختلفة وطريقة استخدامها في التعامل مع المسجلات ويتضمن ذلك أوامر الإزاحة والدوران. في نهاية الفصل تتم كتابة مجموعة من الإجراءات الفرعية لقراءة وكتابة الأرقام في النظامين الثنائي والسداسي عشري. الفصل السابع: يتناول الحديث بالتفصيل عن المكدس Stack وكيفية التعامل معه، بعد ذلك يتم التعرف على طريقة كتابة البرامج الفرعية الفصل الثامن: يتم فيه التعرف علي أوامر الضرب والقسمة واستخدام البرامج الفرعية عن طريق كتابتها في ملف مختلف. ويتم كتابة برامج فرعية تقوم بقراءة أرقام عشرية من لوحة المفاتيح وطباعتها في الشاشة. الفصل التاسع: يتم فيه التعرف علي أنماط العنونة المختلفة والمستخدمة في لغة التجميع كما يتم التعرف علي طريقة التعامل مع المصفوفات المختلفة. الفصل العاشر: يتم فيه التعرف علي أوامر التعامل مع النصوص وسلاسل الحروف Strings . الهدف من المادة في كثير من الأحيان نضطر لكتابة بعض البرامج الخاصة جداً والتي تتعامل مع مكونات النظام من أجهزة مختلفة وعند الانتهاء من دراسة هذه المادة يكون الطالب قد تعرف علي كيفية التعامل مع المعالج الدقيق مباشرة ومعرفة ما يدور في المستوى الأدنى للجهاز Low-Level ويصبح قادراً علي كتابة برامج تتعامل مع النظام في أدق تفاصيله كما يصبح بإمكانه تحليل وفهم أي برنامج كتب بلغة التجميع. ويصبح الطالب جاهزاً لدراسة مادة برمجة النظم Systems Programming . هنا سوف تجد باقي الدروس في مادة انظمة المعالج الدقيق : 2003 حوالي 44 بيليون دولار أمريكي تم تصنيعه وبيعه.حوالي نصف الفصل الثاني المعالجات وتنظيم الحاسب الشخصي مقدمة: تعتمد الأجهزة المتوافقة مع نظام IBM على المعالجات من عائلة المعالج Intel . في هذا الفصل سيتم عرض عام للمعالجات من عائلة المعالج 8086 في الجزء الأول حيث يتم التعرف على المعالج 8086 مع توضيح المسجلات المختلفة و استخدامات كل مسجل ثم يتم توضيح عملية تقسيم الذاكرة إلي قطاعات Segments . عائلة المعالجات Intel 8086 تعتمد الحاسبات الشخصية المتوافقة مع IBM على المعالجات من النوع Intel وهي تشمل المعالجات 8086 و 8088 و 80286 و 80386 و 80486 و أخيراً المعالج Pentium حيث يتم استخدام المعالج لبناء نظام حاسوب بخصائص محددة كما في حالات استخدام المعالج 8088 لبناء الحاسوب من النوع IBM PC و استخدام المعالج 80286 لبناء الحاسوب المسمى XT ( eXtended Technology ) كما تم بناء النظام AT ( Advanced Technology ) مع ظهور المعالج 80386. ثم بعد ذلك ونتيجة لأهمية وضع نظم ثابتة ومعرفة للجميع ظهرت أنظمة ISA (Industry Standard Arch.) و EISA ( Extended ISA ) وهي أنظمة تستعمل المعالجين 80386 و 80486. مع ظهور المعالج الجديد والمسمي Pentium ظهرت الحاجة لأنظمة جديدة ذات سرعة عالية فظهرت أنظمة الناقل المحلي Local Bus Systems مثل نظام PCI ونظام VESA وذلك للاستفادة من الإمكانات الجديدة للمعالج. مما يجدر ذكره أن المعالجات من عائلة Intel حافظت على التوافقية في تصميم المعالجات بحيث يتم استيعاب وتنفيذ البرامج التي تمت كتابتها لتعمل مع المعالجات القديمة في المعالجات الجديدة بدون مشاكل وهو ما يسمى بتوافقية البرامج Software Compatibility وهي ميزة كبيرة في التصميم حيث تم الاحتفاظ بالبرامج القديمة دون أي تعديل مع إمكانية تشغيل البرامج الجديدة ذات الإمكانات الجديدة والتي لم تكن موجودة في المعالجات القديمة. فيما يلي سنتناول المعالجات المختلفة بشيء من التفصيل وذلك بتوضيح الخصائص العامة للمعالج من حيث طول الكلمة Word Length وأقصي قيمة للذاكرة بالإضافة لبعض الخصائص العامة. المعالج 8086 والمعالج 8088 قامت شركة Intel في عام 1978 بطرح المعالج 8086 وهو معالج يتعامل مع كلمة بطول 16-bits (يتم التعامل 16-bit في المرة الواحدة ).بعد ذلك وفي سنة 1979 تم طرح المعالج 8088 وهو مشابه للمعالج 8086 من ناحية التركيب الداخلي ولكنه مختلف عنه في التعامل العام الخارجي حيث يتم فيه التعامل الخارجي بكلمه طولها 8-bits بينما يتعامل المعالج 8086 باستخدام نبضة سريعة وبالتالي فان أداءه أفضل (زيادة سرعة النبضة تعنى زيادة التردد وبالتالي نقصان الزمن اللازم لتنفيذ أمر محدد ويتم تعريف سرعة المعالج بتحديد التردد الأقصى الذي يعمل به وتقاس وحدة التردد بالميجاهرتز MHz ). قامت شركة IBM باختيار المعالج 8088 لبناء الحاسب الشخصي IBM PC وذلك لسهولة التعامل معه بالإضافة إلي رخص التكلفة حيث كان من المكلف في ذلك الوقت بناء الحاسب على المعالج 8086 ذات ال 16-bit وذلك بسبب ارتفاع تكلفة بناء نظام بوحدات مساعده تتعامل مع كلمة بطول 16-bit في ذلك الزمن. يتعامل المعالجان 8086 و 8088 بنفس التعليمات وهما يمثلان نقطة البداية التي بدأت منها المعالجات الجديدة والتي يتم استعمالها في أجهزة الحاسب الشخصية وبالتالي فان البرامج التي تعمل على المعالجين 8086 و 8088 مازالت صالحة للعمل في المعالجات الجديدة وهو ما أسميناه بالتوافقية في البرامج. المعالجان 80186 و 80188 يعتبر المعالجان 80186 و 80188 تطويراً للمعالجين 8086 و 8088 وذلك عن طريق تنفيذ كل التعليمات التي كانت مستخدمة في المعالجات القديمة بالإضافة إلي بعض الأوامر المختصة بالتعامل مع بعض الوحدات المساعدة Support Chips .كذلك تمت إضافة بعض الأوامر الجديدة وهى ما تسمى بال Extended Instruction . وعموماً لـم يتم استعمال المعالجين في الأجهزة بصورة كبيرة وذلك نسبة لعدم وجود فارق كبير عن سابقيهما بالإضافة إلى ظهور المعالج الجديد 80286 في الأسواق. المعالج 80286 :- تم طرح المعالج 80286 في سنة 1982 م وهو معالج يتعامل مع كلمة بطول 16 Bits ولكنه أسرع بكثير من المعالج 8086 حيث تصل سرعته إلي 12.5 MHZ وذلك مقارنة مع 10 MHZ للمعالج 8086 . كذلك تميز المعالج 80286 بالمزايا التالية :- 1 - نمطين للأداء Two Modes Of Operations المعالج 80286 يمكنه العمل في نمطين وهما النمط الحقيقي Real Mode والنمط المحمى Protected Mode . في النمط الحقيقي يعمل المعالج 80286 كمعالج من النوع 8086 وبالتالي فان البرامج التي تمت كتابتها للمعالج 8086 تعمل في هذا النمط بدون أي تعديل. أما في النمط المحمى فانه يمكن أن يتم تشغيل أكثر من برنامج في وقت واحد Multi_Tasking وبالتالي يلزم حماية كل برنامج من التعديل بواسطة برنامج آخر يعمل في الذاكرة في نفس الوقت وذلك بتخصيص منطقة محددة من الذاكرة لكل برنامج على حدة ومنع البرنامج من التعامل مع مناطق الذاكرة التي تخص البرنامج الآخر. 2 - ذاكرة أكبر :- يمكن للمعالج 80286 التخاطب مع ذاكرة تصل إلي 16 MByte وذلك في النمط المحمى (مقابل 1 MBYTE للمعالج 8086 ). 3 - التعامل مع الذاكرة الافتراضية :- حيث يتم ذلك في النمط المحمى وذلك بإتاحة الفرصة للمعالج للتعامل مع وحدات التخزين الخارجية لتنفيذ برامج كبيرة تصل لـ 1 GBYTE (لاحظ أن أقصى قيمة للذاكرة هي 16 MBYTE فقط) وسيتم التحدث عن هذه الطريقة بالتفصيل في مادة نظم التشغيل. المعالج 80386 :- في عام 1985 تم إنتاج أول معالج يتعامل مع كلمة بطول 32 BITS وهو المعالج 80386 وهو أسرع بكثير من المعالج 80286 وذلك لمضاعفة طول الكلمة (من 16_BIT إلى 32_BIT ) ونسبة للسرعة الكبيرة التي يتعامل بها المعالج والتي تصل إلي 40 MHZ فإنه يقوم بتنفيذ عدد كبير من الأوامر في عدد أقل من عدد النبضات التي يستغرقها المعالج 80286 . يستطيع المعالج 80386 التعامل مع النمط الحقيقي والنمط المحمى حيث يعمل في النمط الحقيقي كالمعالج 80386 وفي النمط المحمى كالمعالج 80286 . ذلك بالإضافة إلي نمط جديد يسمى بالنمط الافتراضي للمعالج 8086 ( VIRTUAL 8086 MODE ) وهو نمط مصمم لجعل أكثر من برنامج من برامج المعالج 8086 تعمل في الذاكرة في وقت واحد. يستطيع المعالج 80386 التعامل مع ذاكرة يصل حجمها إلي 4 Gbytes وذاكرة افتراضية يصل حجمها إلى 64 T BYTES . توجد كذلك نسخة رخيصة من المعالج تسمى 80386SX وهى تحتوى على نفس الشكل الداخلي للمعالج 80386 ولكنها خارجيا تتعامل مع 16 BITS . المعالج 80486 :- في عام 1989 ظهر المعالج 80486 وهو عبارة عن نسخة سريعة من المعالج 80386 حيث يحتوى على كل مزايا المعالج 80386 بالإضافة للسرعة الكبيرة وتنفيذ الكثير من الأوامر المستخدمة بكثرة في نبضة واحدة فقط كذلك احتوائه على المعالج المساعد 80387 والمختص بالعمليات الحسابية التي تحتوى على أعداد حقيقية حيث كانت هذه العمليات تستغرق وقتاً طويلاً من المعالج 80386 مما تطلب وجود المعالج 80387 والذي يسمي بالمعالج المساعد الرياضي Math. Co_Processor وقد تم دمج هذا المعالج مع المعالج 80386 بالإضافة إلي ذاكرة صغيرة تسمي بالـ Cache Memory (وهي ذاكرة ذات زمن وصول صغير جداً ويتم استخدامها كوسيلة لتبادل البيانات بين الذاكرة العادية والمعالج الدقيق)وحجمها 8 Kbytes . يعتبر المعالج 80486 أسرع من المعالج 80386 والذي يعمل على نفس التردد بحوالي ثلاث مرات. هذا بالإضافة إلي أن المعالج 80486 يعمل على ترددات (سرعات) عالية جداً تصل إلي 100 M Hz . أما المعالج 80486SX فهو كالمعالج 80486 تماماً من حيث العمل الداخلي فيما عدا أنه لا يحتوي على معالج رياضي داخله. وقد ظهرت عدة إصدارات من المعالج 80486 ولكن لا توجد اختلافات جوهرية كبيرة بينها والمجال هنا لا يتسع لذكرها. المعالج Pentium المعالج Pentium هو آخر إصدارات شركة Intel وهو أول معالج يتعامل مع كلمة بطول 64 Bits بالإضافة إلي السرعة العالية جداً التي يعمل بها مقارنة بالمعالج 80486 هذا بالإضافة إلي زيادة حجم الذاكرة الداخلية Cache Memory . وقد ظهرت إصدارات مختلفة للمعالج Pentium ازدادت فيها سرعة المعالج وتمت إضافة إمكانات إضافية إليه فيها مثل MMX والذي يمتاز بأن به أوامر للتعامل مع الوسائط المتعددة. التركيب الداخلي للمعالج 8088 والمعالج 8086 في هذا الجزء سيتم التعرف على التركيب الداخلي للمعالج وذلك عن طريق التعرف على المسجلات المختلفة الموجودة داخل المعالج ووظيفة كل مسجل وسيتم في الأجزاء التالية مناقشة الأوامر المختلفة التي يتم استخدامها في التعامل مع المعالج. ونسبة لتوافقية البرامج التي تم الحفاظ عليها في المعالجات الجديدة سنجد أن هذه التعليمات يمكن استخدامها مع المعالجات الحديثة وحتى الـ Pentium . المسجلات يتم تخزين البيانات داخل المعالج في المسجلات، ويتم تقسيم المسجلات إلى: مسجلات بيانات: ويتم فيها التعامل مع البيانات من حيث التخزين وإجراء العمليات الحسابية والمنطقية. مسجلات عناوين: ويتم فيها تخزين العناوين المختلفة. مسجل الحالات: وهو يحتوي على حالة المعالج بعد تنفيذ أمر محدد. ويحتوي المعالج على عدد 14 مسجل وسنقوم في الجزء التالي بتوضيح أسماء ووظيفة كل مسجل. مسجلات البيانات DX,CX,BX,AX يتم استخدام هذه المسجلات الأربعة في التعامل مع البيانات داخل المعالج و يمكن للمبرمج التعامل مباشرة مع هذه المسجلات. وبالرغم من أن المعالج يستطيع أن يتعامل مع بيانات في الذاكرة إلا أن التعامل مع المسجلات يكون أسرع بكثير من التعامل مع الذاكرة (يلزمه عدد اقل من النبضات) وبالتالي نفضل دائماً التعامل مع المسجلات لسرعتها. وهذا سبب زيادة عدد المسجلات في المعالجات الحديثة. يمكن التعامل مع كل من هذه المسجلات على أنه وحده واحدة بحجم 16-BITS أو على وحدتين كل واحدة بسعة 8-BITS إحداهما العليا HIGH و الثانية المنخفضة LOW مثلا يمكن التعامل مع المسجل AX على انه مسجل بحجم 16-BITS أو التعامل مع النصف العلوي (HIGH) AH على انه مسجل 8-BITS و المسجل المنخفض AL (LOW) على أنه مسجل 8-BITS . وبالمثل مع المسجلات D,C,B و بالتالي يصبح لدينا 8 مسجلات من النوع 8-BITS أو أربعة مسجلات من النوع 16-BITS . بالرغم أن المسجلات الأربعة ذات استخدامات عامه GENERAL PURPOSE REGISTERS بحيث يمكن استخدامها في أي استخدامات عامه إلا أن لكل مسجل استخداماً خاصاً نتناوله في الجزء التالي: 1-المسجل (Accumulator) AX يعتبر المسجل AX هو المسجل المفضل للاستخدام في عمليات الحساب و المنطق و نقل البيانات و التعامل مع الذاكرة و موانئ الإدخال و الإخراج. و استخدامه يولد برامج اقصر ويزيد من كفاءة البرنامج. حيث يجب مثلا في عمليه ضرب رقمين وضع أحد الرقمين فيه مع وضع القيمة المطلوب إخراجها إلي ميناء خروج محدد فيه ثم تتم قراءه القيمة التي يتم إدخالها من ميناء خروج محدد فيه دائما. وعموما يتم التعامل مع المسجل AX على أنه أهم المسجلات الموجودة في المعالج. 2-المسجل (Base Register) BX يستخدم المسجل BX في عنونه الذاكرة حيث تتطلب بعض العمليات التعامل مع الذاكرة بمؤشر محدد ويتم تغيير قيمه المؤشر لإجراء عمليه مسح لجزء محدد من الذاكرة كما سنرى فيما بعد. 3-المسجل (Count Register) CX يتم استخدام المسجل CX كعداد للتحكم بعدد مرات تكرار مجموعه محدده من التعليمات.كذلك يتم استخدامه في تكرار عمليه دوران مسجل لعدد محدد من المرات. 4-المسجل (Data Register )DX يتم استخدامه في عمليات الضرب والقسمة كذلك يتم استخدامه كمؤشر لموانئ الإدخال والإخراج عند استخدام عمليات الإدخال والإخراج. مسجلات المقاطع CS, DS, SS, ES يتم استخدام هذه المسجلات لتحديد عنوان محدد في الذاكرة. ولتوضيح وظيفة هذه المسجلات يجب في البداية توضيح طريقة تنظيم الذاكرة. نعلم أن المعالج 8088 يتعامل مع 20 إشارة عناوين ( ناقل العناوين Address Bus يحتوي على 20 إشارة) وبالتالي يمكن مخاطبة ذاكرة تصل إلى 2 20 = 1,048,576 أي 1 Mbytes . ونجد أن عناوين أول 5 خانات في الذاكرة هي : 00000 h = 0000 0000 0000 0000 0000 00001 h = 0000 0000 0000 0000 0001 00002 h = 0000 0000 0000 0000 0010 00003 h = 0000 0000 0000 0000 0011 00004 h = 0000 0000 0000 0000 0100 ولأن العناوين في الصورة الثنائية تكون طويلة جداً فمن الأسهل التعامل مع العناوين بكتابتها في الصورة السداسية عشر وبالتالي يكون عنوان أول خانة في الذاكرة هو 00000h وعنوان آخر خانة هو FFFFFh . مما سبق يتضح أن العنوان يتكون من 20 خانة بينما كل المسجلات الموجودة داخل المعالج ذات طول مقداره 16 خانة فقط مما يجعل مخاطبة الذاكرة كلها مستحيلة باستخدام مسجل واحد فقط ( لاحظ أن المسجل الواحد باستطاعته مخاطبة ذاكرة تصل إلي 64 Kbytes فقط ) ونتيجة لظهور هذه المشكلة تم تقسيم الذاكرة إلي مجموعة من المقاطع Segments كل مقطع بسعة 64 K Bytes كما سنوضح في الجزء التالي. مقاطع الذاكرة مقطع الذاكرة هو جزء متصل بطول 2 16 = 64 Kbytes وكل مقطع في الذاكرة يتم تحديده برقم محدد يسمي رقم المقطع Segment Number وهو رقم يبدأ بالرقم 0000h وينتهي بالرقم FFFFh . بداخل المقطع يتم تحديد العنوان بواسطة إزاحة محددة Offset وهذه الإزاحة عبارة عن بُعد الموقع المحدد من بداية المقطع وهو رقم بطول 16 Bytes أي تتراوح قيمته بين الرقمين 0000h و FFFFh . وبالتالي لتحديد عنوان محدد في الذاكرة يجب توضيح قيمة كل من المقطع والإزاحة وبالتالي تتم كتابة العنوان على الصورة: Segment : Offset وهو ما يسمي بالعنوان المنطقي Logical Address فمثلاً العنوان AABB:5566 يعني الإزاحة 5566 داخل المقطع AABB . للحصول على العنوان الفيزيائي يتم ضرب قيمة المقطع في الرقم 16 ( إزاحته لليسار بمقدار أربعة خانات ثنائية أو خانة واحدة سداسية عشر) ويتم بعد ذلك إضافة قيمة الإزاحة إليه وبالتالي فإن العنوان الفيزيائي المناظر للعنوان AABB:5566 هو: 1 1 1 0 B B A A 6 6 5 5 + (العنوان الفيزيائي بطول 20 خانة) 6 1 1 0 B = وبالتالي يصبح العنوان الفيزيائي = رقم المقطع × 16 + قيمة الإزاحة = B0116 مواضع المقاطع LOCATIONS OF SEGMENTS يتضح مما سبق أن المقطع الأول في الذاكرة يبدأ بالعنوان 0000:0000 أي 00000 وآخر عنوان داخل المقطع هو العنوان 0000:FFFF أي العنوان 0FFFF بينما يبدأ المقطع الثاني في العنوان 0001:0000 أي العنوان 00010 وينتهي بالعنوان 0001:FFFF أي العنوان 1000F . وكما نرى فإن هناك كثيراً من التداخل في المقاطع داخل الذاكرة. الشكل(1) يوضح الذاكرة وعناوين المقاطع المختلفة بداخلها: محتويات الذاكرة العنوان 45 1001F نهاية المقطع رقم 2 …….. 45 1000F نهاية المقطع رقم 1 …….. 35 0FFFF نهاية المقطع رقم 0 …….. 29 00020 بداية المقطع رقم 2 76 00010 بداية المقطع رقم 1 54 00000 بداية المقطع رقم 0 الشكل ( 1 ) في الشكل(1) يتضح أن المقطع يبدأ بعد كل 16 خانة في الذاكرة. وعلى ذلك تسمى كل 16 خانة في الذاكرة بفقرة Paragraph . ويسمى أي من العناوين التي تقبل القسمة على العدد 10h بحدود الفقرات Paragraph Boundaries . ولأن هنالك تداخلاً في القطاع فان تحديد العنوان الفيزيائي قد يتم بأكثر من طريقة أي عن طريق اكثر من تشكيلة في عنوان المقطع وعنوان الإزاحة. والأمثلة التالية توضح ذلك : مثال :- قم بتحديد قيمة الإزاحة المطلوبة لتحديد العنوان 1256A وذلك في : أ- القطاع 1256 ب- القطاع 1240 الحل : يتم استعمال المعادلة : العنوان = المقطع * 16 + الإزاحة أ- افترض أن قيمة الإزاحة المطلوبة X بالتعويض في المعادلة نجد أن X + 10h * 1256 = 1256A X + 12560 = 1256A X = 000A وبالتالي فان العنوان هو 1256:000A ب – بإتباع نفس الطريقة التي اتبعناها في الجزء السابق افترض أن قيمة الإزاحة المطلوبة X بالتعويض في المعادلة نجد أن X + 10h * 1240 = 1256A X + 12400 = 1256A X = 016A وبالتالي فان العنوان هو 1240:016A أي أن العنوانين يشيران إلي نفس العنوان في الذاكرة 1256A = 1256:000A = 1240:016A من الممكن أيضاً معرفة رقم المقطع بمعرفة العنوان الفيزيائي وقيمة الإزاحة كما في المثال التالي : مثال ما هو عنوان المقطع لتحديد العنوان 80FD2h إذا كانت الإزاحة تساوي 8FD2h باستعمال المعادلة : العنوان = المقطع * 16 + الإزاحة، نجد أن 80FD2h = قيمة مسجل المقطع * 10h + BFD2h قيمة مسجل المقطع = 7500h بعد توضيح عملية تقسيم الذاكرة لمقاطع مختلفة يمكننا الآن شرح عمل مسجلات المقاطع المختلفة، حيث يتكون البرنامج من مجموعة من الأوامر بالإضافة إلي مجموعه من المتغيرات هذا بالإضافة إلي الحاجة لاستخدام مكدس البيانات Stack والذي سنوضح طريقة استخدامه وعمله لاحقاً. يتم وضع البرنامج في مقطع البرنامج Code Segment ووضع البيانات في مقطع البيانات Data Segment وكذلك المكدس حيث له مقطع المكدس Stack Segment ولدينا مقطع إضافي يسمي بالـ Extra Segment . مسجل مقطع البرنامج Code Segment Register (CS) يحتوي هذا المسجل على عنوان مقطع البرنامج Code Segment Address حيث يتم تحديد مقطع محدد في الذاكرة يتم وضع البرنامج فيه، بعد ذلك يلزم تعريف ذلك العنوان للمعالج حيث سيتم تنفيذ البرنامج؛ لذلك يجب تحديد عنوان هذا المقطع ووضعه في مسجل خاص يسمي بمسجل مقطع البيانات Code Segment Register (CS) ويتم تحديد قيمة الإزاحة باستخدام مسجل مؤشر التعليمات Instruction Pointer والذي سيتم التحدث عنه لاحقاً. مسجل مقطع البيانات Data segment Register (DS) يحتوي هذا المسجل على عنوان مقطع البيانات Data Segment Address حيث يتم تعريف البيانات التي يتعامل معها البرنامج في منطقة محددة من الذاكرة ( وتسمي مقطع البيانات ) ويتم تحديد عنوان هذا المقطع ووضعه في المسجل DS . بعد ذلك يمكن مخاطبة الذاكرة والتعامل مع المتغيرات المختلفة باستخدام مسجلات أخري تحوي قيمة الإزاحة المطلوبة. مسجل مقطع المكدس Stack Segment Register (SS) يتم تحديد جزء من الذاكرة والتعامل معه كمكدس حيث يعمل المكدس بطريقة (Last In First Out ( LIFO )ويتم استعماله في مجموعة من العمليات أهمها عملية النداء لبرامج فرعية كما سنرى لاحقاً ويتم استعمال مجموعة المسجلات لتحوي قيمة الإزاحة ومن أهمها مؤشر المكدس Stack Pointer (SP) . مسجل المقطع الإضافي Extra Segment Register (ES) ويتم استخدام هذا المسجل لتحديد ومخاطبة مقطع إضافي حيث تلزم في بعض الأحيان عملية مخاطبة أكثر من مقطع في وقت واحد ( مثل نقل كمية من البيانات في الذاكرة من مكان محدد لمكان آخر في مقطع بعيد وبالتالي لا يكفي مسجل البيانات فقط ولكن نحتاج لمسجل إضافي لتحديد المقطع الآخر فيتم استعمال المقطع الإضافي ( ES ). مسجلات المؤشرات والفهرسة Index and Pointer Registers (SP, BP, SI, DI) يتم استخدام هذه المسجلات مع مسجلات المقاطع التي تحدثنا عنها في الجزء السابق للتخاطب مع عناوين محددة في الذاكرة، وعكس مسجلات المقاطع يمكن إجراء عمليات الحساب والمنطق على هذه المسجلات. مؤشر المكدس Stack Pointer (SP) يتم استخدام هذا المسجل مع مقطع المكدس وسيتم التحدث بالتفصيل عن المكدس في الفصول القادمة. مؤشر القاعدة Base Pointer (BP) يتم استخدام هذا المسجل أساساً للتخاطب مع البيانات الموجودة في المكدس ولكنه عكس مؤشر المكدس حيث يمكن استخدامه لمخاطبة الذاكرة في مقاطع أخري غير مقطع المكدس. مسجل فهرسة المصدر Source Index (SI) يستخدم هذا المسجل في مخاطبة الذاكرة في مقطع البيانات حيث يقوم بالإشارة إلي بداية ( أو نهاية) منطقة محددة من الذاكرة مطلوب التعامل معها؛ وبتغيير قيمة هذا المسجل في كل مرة يتم التعامل مع كل هذه المنطقة من الذاكرة. مسجل فهرسة المستودع Destination Index (DI) هذا المسجل يستخدم مثل مسجل فهرسة المصدر SI حيث يشير هذا المسجل إلي عنوان الذاكرة الذي سيتم تخزين البيانات فيه ويتم ذلك عادة باستخدام المقطع الإضافي ES وهناك مجموعة من الأوامر التي تتعامل مع النصوص والتي تفترض أن عنوان المصدر وعنوان المستودع يتم تحديدهما في هذين المسجلين. مؤشر التعليمات أو الأوامر Instruction Pointer (IP) كل المسجلات التي تحدثنا عنها حتى الآن يتم استخدامها في مخاطبة البيانات المخزنة في الذاكرة. لمخاطبة البرنامج يلزم المعالج معرفة عنوان أول أمر في البرنامج المطلوب تنفيذه، بعد ذلك يقوم المعالج بتحديد عنوان الأمر التالي ويستمر في تنفيذ البرنامج. يتم تخزين الإزاحة للأمر المطلوب تنفيذه في مؤشر التعليمات أو الأوامر Instruction Pointer (IP) حيث يتم ذلك في مقطع البرنامج Code Segment وبالتالي فإن عنوان الأمر المطلوب تنفيذه هو CS:IP . ولا يمكن مخاطبة مؤشر التعليمات مباشرة من داخل البرنامج وإنما يتم تغيير قيمته بطريقة غير مباشرة مثل حالات التفرع إلي عنوان محدد حيث يتم وضع قيمة ذلك العنوان في مؤشر التعليمات وذلك في حالة حدوث عملية التفرع. مسجل البيارق Flags Register يحتوي هذا المسجل على مجموعة من البيارق ( الأعلام) وهي نوعان: بيارق الحالة وبيارق التحكم. بالنسبة لبيارق الحالة فهي توضح حالة المعالج بعد تنفيذ كل عملية لتوضيح حالة النتيجة حيث يمكن عن طريق هذه البيارق معرفة النتيجة ( مثلاً إذا كان بيرق الصفر قد تم رفعه فمعنى ذلك أن نتيجة آخر عملية تساوي صفر ) وبالتالي يمكن اختبار البيارق المناسبة واتخاذ القرارات المناسبة. أما بيارق التحكم فيتم استعمالها لإخطار المعالج بالقيام بشيء محدد مثلاً يمكن استخدام بيرق المقاطعة Interrupt Flag ووضع القيمة صفر فيه وبالتالي فإننا نطلب من المعالج أن يتجاهل نداءات المقاطعة الواردة إليه من لوحة المفاتيح مثلاً ( أي لا يتم استقبال مدخلات من لوحة المفاتيح ) وسيتم التحدث عن هذه البيارق بالتفصيل لاحقاً. تنظيم الذاكرة في الحاسب الشخصي Memory Organization يتعامل المعالج 8088 مع ذاكرة بطول 1Mbyte .ولا يمكن استخدام كل الذاكرة في البرامج التي يتم كتابتها ولكن هناك مناطق في الذاكرة محجوزة لأغراض محددة فمثلا لدينا الجزء الأول من الذاكرة بطول 1KByte محجوز لعناوين نداءات المقاطعة Interrupt Vector Table كذلك هناك أجزاء مخصصة لبرامج النظام الأساسي للإدخال والإخراج BIOS والذي يقوم بعمليات الإدخال و الإخراج في الجهاز؛ و يتم تخزينه داخل ذاكرة قراءة فقط ROM (READ ONLY MEMORY) وهو الذي يقوم ببدء تشغيل الجهاز في المرحلة الأولى. كذلك توجد منطقة في الذاكرة مخصصة لوحدة العرض الشاشة ( VIDEO DISPLAY MEMORY ). موانئ الإدخال والإخراج I/O PORTS يتعامل المعالج 8088 مع 64KB من عناوين الإدخال والإخراج وذلك للتعامل مع الأجزاء الإضافية والخارجية. وعموما لا يفضل التخاطب مع موانئ الإدخال والإخراج مباشرة إلا في بعض الحالات الخاصة وذلك بسبب احتمال تغير العناوين في بعض الأجهزة ويفضل أن يتم التعامل مع الأجهزة عن طريق نداءات لنظام التشغيل ليقوم هو بهذه المهمة. تمارين 1-ما هو الفرق بين المعالج 80286 والمعالج 8088 ؟ 2- ما هو الفرق بين المسجل والموقع المحدد في الذاكرة ؟ 3- اذكر وظائف مسجلات البيانات DX,CX,BX,AX . 4- ما هو العنوان الفيزيائي للموقع المحدد بالعنوان 0A51:CD90 ؟ 5- موقع في الذاكرة عنوانه 4A37B احسب: أ- الإزاحة إذا كان عنوان القطاع هو 40FF . ب- عنوان القطاع إذا كانت قيمة الإزاحة 123B . 6 - ما هي حدود الفقرات في الذاكرة ؟ هنا سوف تجد باقي الدروس في مادة انظمة المعالج الدقيق : f.aspx?t=13267986
Posted on: Wed, 30 Oct 2013 16:24:07 +0000

Trending Topics



Recently Viewed Topics




© 2015