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

مشاهدة النسخة كاملة : ويندوز 7 تشريح قلب الكمبيوتر



العندلييب
08-08-2005, 03:47 AM
تشريح قلب الكمبيوتر

الجزء الأول


تمثّل وحدة المعالجة المركزية (CPU) القلب النابض للكمبيوتر. ويعتبر هذا العنصر الهام، الذي غالباً ما يشار إليه باسم "المعالج" فقط، بدلاً من "مايكرومعالج" (microprocessor)، مسؤولاً عن كل شيء يقوم به كمبيوترك. فهو يحدد، جزئياً، نظام التشغيل الذي يمكن أن تستخدمه، والحزم البرمجية المتاحة أمامك، وكمية الطاقة التي يستهلكها الجهاز، ومدى استقرار نظامك بشكل عام، بالإضافة إلى أمور أخرى. كما يلعب المعالج دوراً رئيسياً في تكلفة النظام ككل، فكلما كان المعالج أحدث وأقوى، كلما ازدادت تكلفة الكمبيوتر.

سنلقي في هذا المقال، وعلى مدى ثلاثة أعداد، نظرة معمقة على بنية المعالج الداخلية. وسنبدأ بنظرة سريعة عن مكونات المعالج، ثم ننتقل إلى أجزائه المختلفة، لنفهم كيفية عمله. وسنتفحص في العدد القادم عائلة معالجات إنتل، إبتداءً من المعالج 4004 وإنتهاءً بمعالج بينتيوم الثاني، كما سنتفحص عائلات أخرى للمايكرومعالجات، بما فيها المعالجات التي تقلّد منتجات إنتل.


مكونات المعالج


قد تفكر في المعالج على أنه قطعة مربعة أو مستطيلة، ذات إبر عديدة تدخل ضمن مقبس موجود على اللوحة-الأم، لكن هذا في واقع الأمر، ليس سوى الغلاف الذي يحيط بالمعالج. يتألف المعالج بحد ذاته من رقاقة من كريستال السيليكون، تقل مساحتها عادة عن نصف بوصة مربعة. ويقوم الغلاف بحماية المعالج من الملوثات (مثل الهواء)، ويمكّنه من خلال الإبر، من التلاحم مع دارات اللوحة-الأم، وبالتالي مع النظام ككل. وتحتاج ملايين المفاتيح الإلكترونية (الترانزستورات) الموجودة ضمن المعالج، إلى بيئة محكمة العناية، لكي تعمل بشكل الصحيح.

وعلى الرغم من أن معظم المعالجات مصنوعة من السيليكون، إلا أنه من الممكن استخدام أي مادة أخرى شبه موصلة (semiconductor)، إذا أمكن تصنيعها على شكل أجزاء عالية الجودة، بالقياس المطلوب. والسيليكون متوفر ورخيص نسبياً، ولهذا يعتبر أكثر المواد شعبية في هذا المجال. وهو مناسب جداً بسبب إمكانية تشكيل كريستالات كبيرة منه بجودة عالية ومنتظمة. ويمكن أن يصل عرض الكريستالة الواحدة إلى 8 بوصات، وهو أمر مهم لأن الشركات المصنّعة ترغب في تقطيع الكريستالة الواحدة إلى أكبر عدد ممكن من الرقاقات. يقطع منشار دقيق الكريستالة إلى شرائح (wafers) تقل سماكتها عن ميلليمتر واحد، وتتم معالجة هذه الشرائح كيميائياً قبل تقطيعها إلى رقاقات مستقلة. وتدعى العملية الفيزيائية التي نقوم فيها بتطبيق التصميم المنطقي للمعالج على الرقاقة، بعملية الحفر الضوئي (photolithography)، ويتم في هذه الخطوة بناء ترانزستورات وأسلاك دقيقة على الرقاقة، في سلسلة مؤلفة من عشرة طبقات أو أكثر (تسمّى الأقنعة). وبعد أن تنتهي عمليات إنشاء الطبقات، تختبر الرقاقة عدة مرات للتأكد من أن الترانزستورات والأسلاك في مواقعها المناسبة، وتعمل بشكل صحيح، ثم توضع ضمن الغلاف.

لا يقوم الغلاف بدور حماية الرقاقة فقط، بل يلعب دوراً في تبديد الحرارة، وتأمين ارتباط المعالج مع اللوحة-الأم. وقد تغيّر الغلاف بشكل كبير عبر السنين، مع تبنّي طرق جديدة لمختلف تصاميم المعالجات. استخدمت أولى رقاقات إنتل طريقة الغلاف ثنائي الصفوف DIP (dual in-line packages)، حيث تؤمن مجموعتين متوازيتين مؤلفتين من أربعين إبرة أو أكثر، الاتصال مع اللوحة-الأم (انظر الشكل 1). وبسبب هذا التصميم المتوازي، فإن عمليات الترقية التي يمكن إجراؤها على الغلاف، لا تسمح بتوسع كبير في إبر الاتصال (connectors)، إذ سيصبح الغلاف طويلاً جداً بالنسبة للوحة-الأم عند إضافة إبر جديدة. كما أن الإشارات القادمة من الإبر الموجودة عند نهايات الغلاف، تتطلب زمناً أطول للوصول إلى رقاقة المعالج، من الزمن الذي تحتاجه الإبر المتوضعة على مقربة من المعالج. ولهذه الأسباب، قدّمت إنتل مع معالج 80286 مصفوفة الشبكة الإبرية PGA (pin-grid array)، وهو غلاف مربع الشكل على العموم، ويحتوي على صفين أو ثلاثة أو حتى أربعة صفوف من الإبر الموزعة على مسافات متساوية من بعضها البعض، ومرتبة حول منطقة مركزية. تدخل الإبر ضمن الثقوب العائدة لها، في المقبس الموجود على اللوحة-الأم، ويتم تثبيت المعالج في مكانه عادة عن طريق ذراع متحرك.

إن تصميم الغلاف مربع الشكل الذي يألفه معظمنا بدأ مع معالج 80286 وبقي مسيطراً حتى الآن. ومع ازدياد الحاجة إلى معالجات أكثر قوة، بات من الضروري استخدام ناقل (bus) أوسع، وبالتالي أصبحنا بحاجة إلى عدد أكبر من الإبر لتلائم هذه النواقل، وظهرت عدة بدائل للغلاف. يستخدم معالج بينتيوم تصميم SPGA (straggered pin-grid array)، الذي ينظم ترتيب الإبر ليمكّنها من التوضع إلى جانب بعضها البعض بشكل أكثر قرباً. أما معالج بينتيوم برو فيعتمد تصميماً يسمّى MCM (multi-chip module)، لأنه يجمع رقاقتي وحدة المعالجة المركزية وذاكرة كاش الثانوية (Level 2) في غلاف واحد. ويوجد غلاف آخر حديث يسمّى LCC (leadless chip carrier)، يستخدم وسادات وصل صغيرة من الذهب، بدلاً من الإبر، لتأمين الاتصال مع اللوحة-الأم.

ونجد بين طرق التغليف الأخرى، غلاف TCP (tape-carrier package)، وهو رقيق مثل الفيلم الفوتوغرافي، وملتحم باللوحة-الأم، وغلاف كارتريدج SEC (single-edge contact) المستخدم في معالج بينتيوم الثاني. وهذا الغلاف في الواقع عبارة عن غلاف PGA متوضع على بطاقة-إبنة صغيرة، ترتبط باللوحة-الأم عبر شق واحد. ويعتبر تصميم غلاف SEC مغرياً جداً لأنه يحتل مساحة أقل على اللوحة-الأم، وله خواص كهربائية أفضل.


داخل المعالج


تقوم جميع المعالجات بالعمل ذاته، من حيث المبدأ. فهي تأخذ الإشارات على شكل أصفار وواحدات (الإشارات الثنائية)، وتعالجها اعتماداً على مجموعة من التعليمات، وتنتج خرجاً على شكل أصفار وواحدات أيضاً. ويحدد التوتر المطبق على الخط، عند إرسال الإشارة، فيما إذا كانت الإشارة تمثل قيمة صفر أو قيمة واحد. ففي نظام 3.3 فولت، يعني تطبيق توتر 3.3 فولت أن الإشارة المرسلة هي الواحد، بينما يعني تطبيق توتر 0 فولت، أن الإشارة هي الصفر.

تعمل المعالجات عن طريق الاستجابة إلى دخل مؤلف من مجموعة من الأصفار والواحدات، مرتبة بطريقة معينة، وتعطي خرجها بالاعتماد على قرار متخذ فيها. ويتم اتخاذ القرار في دارة إلكترونية تسمى البوابة المنطقية (logic gate)، تتطلب ترانزستوراً واحداً على الأقل، وبحيث يتم ترتيب المداخل والمخارج بشكل مختلف، من أجل العمليات المختلفة. ونظراً لأن معالجات اليوم تحتوي على ملايين الترانزستورات، فإنها تقدّم فكرة عن مدى تعقيد النظام. تعمل البوابات المنطقية للمعالج مع بعضها البعض لصنع القرارات، باستخدام المنطق البوولي (Boolean logic)، الذي يعتمد على نظام جبري أسسه عالم الرياضيات جورج بوول (George Boole). وتتألف العمليات الأساسية في جبر بوول من العمليات: AND، و OR، و NOT، و NAND (أي نفي AND)، ويمكن استخدام العديد من تشكيلات هذه العمليات مع بعضها البعض. تعطي بوابة AND خرجاً مساوياً للواحد، إذا كانت كلتا إشارتي الدخل تساوي الواحد. وتعطي بوابة OR خرجاً مساوياً للواحد، إذا كانت إشارة واحدة، على الأقل، من إشارتي الدخل، تساوي الواحد. وتأخذ بوابة NOT دخلاً وحيداً وتعكس قيمته، فتعطي واحد إذا كان الدخل صفراً، والعكس بالعكس. أما بوابات NAND فهي منتشرة بكثرة، نظراً لأنها تستخدم ترانزستورين فقط بدلاً من ثلاثة ترانزستورات مستخدمة في بوابة AND، وتقوم بوظيفة مماثلة. وبالإضافة إلى ذلك، فإن المعالج يستخدم البوابات مع بعضها البعض، ضمن ترتيبات معينة، لتنفيذ الوظائف الحسابية، كما يمكن أن يستخدمها للبدء بتخزين البيانات في الذاكرة.

تعمل البوابات المنطقية عبر جهاز عتادي يعرف بالمفتاح (switch)، وبالتحديد المفتاح الرقمي (digital switch). وفي أيام الكمبيوترات القديمة، ذات الحجوم كبيرة (والتي كانت تترك انطباعاً لدى المشاهد في الأفلام السينمائية أقوى من الانطباع الذي تتركه كمبيوترات اليوم)، كانت المفاتيح في الواقع مفاتيح فيزيائية، أما اليوم فلا شيء يتحرك سوى التيار نفسه. وأكثر أنواع المفاتيح انتشاراً في كمبيوترات اليوم ترانزستور يعرف باسم موسفيت (metal-oxide semi-conductor field-effect transistor, MOSFET). ويقوم هذا النوع من الترانزستورات بأداء وظيفة بسيطة لكنها هامة جداً: عند تطبيق التوتر عليه، يستجيب إلى هذا التوتر بالسماح أو عدم السماح للتيار بالمرور. وعلى الرغم من أن معظم المعالجات تعمل اليوم على توتر 3.3 فولت، إلا أن المعالجات السابقة (ومنها الإصدارات الأولى من معالجات بينتيوم) تعمل على توتر 5 فولت. وفي أحد أنواع ترانزستورات موسفيت، الذي سنركز عليه هنا، فإن التيار القادم بتوتر يساوي أو قريب من القيمة العليا للتوتر، يفتح الدارة الإلكترونية، بينما التيار القادم بتوتر قريب من الصفر، يغلقها.

تعمل ملايين من ترانزستورات موسفيت مع بعضها البعض، بناء على التعليمات الصادرة عن البرامج، للتحكم بمرور التيار في البوابات المنطقية، وإعطاء النتيجة المطلوبة. ونذكّر أن كل بوابة منطقية تحتوي على ترانزستور واحد أو أكثر، وكل ترانزستور يجب أن يتحكم بالتيار، بحيث تنتقل الدارة ذاتها من وضعية التشغيل (on) إلى وضعية عدم التشغيل (off)، أو من وضعية off إلى وضعية on، أو تبقى على وضعها الحالي.

بإلقاء نظرة سريعة على دارات بسيطة للبوابة المنطقية AND، والبوابة المنطقية OR، تتضح لنا كيفية عمل هذه الدارات (انظر الشكل 2). تعمل كل من هاتين البوابتين على إشارتي دخل، وتعطي إشارة خرج واحدة. وتعني الدارة المنطقية AND أن كلتا إشارتي الدخل يجب أن تكونا مساويتان للواحد، لكي يكون الخرج مساوياً للواحد، بينما تعني دارة OR المنطقية أنه يجب أن تكون إحدى إشارتي الدخل، على الأقل، مساوية للواحد، حتى نحصل على خرج يساوي الواحد. وفي بوابة AND يجب أن تكون كلتا إشارتي الدخل عند التوتر العالي (أو ما يسمّى بالواحد المنطقي) حتى تتمكّن البوابةمن السماح للتيار بالمرور من خلالها. ولنلاحظ في الشكل 2، أنه يجب تطبيق توتر عال على كلا الترانزستورين في البوابة، حتى تكتمل الدارة. وإلا فإن الدارة ستبقى غير فاعلة، وتعطي ما يسمّى بالصفر المنطقي. أما في بوابة OR، فإن البوابة ستسمح للتيار بالمرور إذا كانت إحدى إشارتي الدخل عند النهاية العالية للتوتر. ولنلاحظ في الشكل 2 أن دارة OR تكتمل عند تطبيق التوتر على أي من ترانزستوري الدخل.

يتم التحكم بمرور التيار في كل بوابة، من خلال الترانزستورات الموجودة فيها. ولا تشكّل هذه الترانزستورات وحدات مستقلة ومنفصلة عن بعضها البعض. بل إن عدداً كبيراً منها مصنوع من قطعة واحدة من السيليكون (أو من مادة أخرى من أشباه الموصلات)، وترتبط مع بعضها البعض بدون أسلاك، أو أية مواد خارجية. وأدى تطور هذه الوحدات، المسماة بالدارات المتكاملة (integrated circuits, IC)، إلى ظهور المايكرومعالجات. ولم يتوقف دمج الدارات الكهربائية عند ظهور أول دارة IC. ومثلما كانت دارة IC الأولى مؤلفة من العديد من الترانزستورات، فقد تم ربط العديد من دارات IC مع بعضها البعض، في عملية تسمّى التكامل واسع النطاق (large-scale integration, LSI)، كما تم ربط هذه المجموعات الأخيرة من دارات IC مع بعضها البعض، في عملية (باستخدام المصطلحات المستخدمة في هذه الصناعة)، سمّيت بالتكامل واسع النطاق جداً (very large-scasle integration,VLSI). وتكمن الخطوة الأولى التي خطتها شركة إنتل إلى عالم الشهرة، في التقنية التي استخدمتها في مجال التكامل عالي المستوى لجميع البوابات المنطقية للمعالج، ضمن رقاقة واحدة معقدة. وكان أول معالج اعتمد هذه الطريقة هو معالج Intel 4004، الذي يعتبر الجد الأكبر لجميع المعالجات التي تقدّمها شركة إنتل اليوم. وسنلقي نظرة على هذا المعالج وأحفاده، في الجزء الثاني من المقال.

إن أهم عنصرين في المعالج هما المسجّلات (registers)، وساعة النظام (system clock). والمسجّل منطقة تخزين داخلية، تشكل وحدة ذاكرة. ونظراً لأنه جزء من المعالج، فهو يستخدم أسرع نوع من أنواع الذاكرة في نظامك. وتكمن وظيفته في الاحتفاظ بالبيانات المستخدمة من قبل التعليمات، على شكل مجموعات من البتّات (bit pattern)، أي سلسلة متتابعة من الأصفار والواحدات، في مناطق معينة، تكون في متناول المعالج. ويمكن توضيح أهمية المسجّلات، إذا علمنا أن إحدى الطرق الهامة لتحديد هوية المعالج، هي حجم المسجّل. فمصطلح معالج عيار 16 بت يعني أن مسجّل المعالج يمكن أن يتسع لـ 16 بت من البيانات. وعليه فإن معالجات عيار 32 بت تحتوي على مسجلات بقياس 32 بت، ومعالجات عيار 64 بت تعني أن مسجّلاتها تحتوي ضعف تلك الكمية. وكلما كبر عدد البتات التي يمكن أن يحملها المسجّل، كلما ازداد حجم البيانات التي يمكن أن يعمل عليها المعالج في المرة الواحدة.

يُمضي المعالج وقته مستجيباً للإشارات، إلا أنه لا يستطيع الاستجابة إلى جميع الإشارات في الوقت ذاته، وإلا فإنها ستختلط مع بعضها البعض بشكل غير منتظم. وتجنباً لهذه المشكلة، ينتظر المعالج حتى يتلقى أمر البدء باستقبال الإشارات. ويتحدد زمن انتظار المعالج عن طريق ساعة النظام (system clock). فعلى فترات زمنية دقيقة، تقوم ساعة النظام بإرسال نبضات كهربائية كوسيلة للاستفهام من النظام عن التعليمات المنتظرة. فإذا كانت هناك تعليمة تنتظر التنفيذ، ولم يكن المعالج مشغولاً بالتعليمات السابقة، يجلب المعالج هذه التعليمة إلى داخله ويعمل على تنفيذها. ويعتمد عدد التعليمات التي يمكن للمعالج أن يقوم بتنفيذها، في دورة ساعة واحدة (أي نبضة واحدة من ساعة النظام)، على تصميم المعالج بحد ذاته. وقد كانت المعالجات الأولى تعمل على تعليمة واحدة فقط في كل دورة ساعة، لكن معالجات اليوم تسرّع هذه العملية من خلال طريقتين، تدعى الأولى التنفيذ ضمن خطوط معالجة (pipelining)، والثانية التنفيذ فائق التدرج (superscalar execution). تسمح خطوط المعالجة (pipelines) للمعالج بقراءة تعليمة جديدة من الذاكرة قبل أن ينتهي من معالجة التعليمة الحالية. وفي بعض المعالجات، يمكن أن يتم العمل على عدة تعليمات في آن واحد. ويدعى مدى سريان البيانات المتتابعة ضمن المعالج بعمق الخط (pipeline depth). كان عمق الخط في معالجات إنتل الأولى وحتى المعالج 80286، مساوياً للواحد (أي لم تكن هناك خطوط معالجة أبداً)، وقفز الرقم إلى 4 في عائلة معالجات 80486، أي يمكن لأربع تعليمات كحد أقصى، أن تكون في مراحل مختلفة من خط المعالجة. ويبلغ عمق خط المعالجة في معالجات بينتيوم خمس مراحل، وقد تمكّنت تكنولوجيا MMX من زيادة هذا العدد.

أما المعالج فائق التدرج فهو المعالج الذي يحتوي على أكثر من خط معالجة، مما يعني أنه يستطيع تنفيذ أكثر من مجموعة واحدة من التعليمات في الوقت ذاته. وهذا يمكّنه نظرياً من مضاعفة الأداء، إلا أنه في معظم الحالات، يضطر أحد خطوط المعالجة إلى انتظار نتيجة التعليمة التي يعمل عليها الخط الآخر.


في العدد القادم


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

العندلييب
08-08-2005, 03:52 AM
كيف "يفكّر" المعالج؟


الجزء الثاني


نتابع في هذه الجولة تشريح عمل المعالجات، عن طريق شرح طواقم التعليمات، ودورها في عمل المعالج.

تعرّفنا في الجزء الأول من المقالة على مكونات المعالج (راجع العدد السابق من المجلة)، وحان الوقت لنخوض في تعقيدات آلية عمله. وسنبدأ بشرح الدور المهم، الذي يلعبه طاقم التعليمات (instruction set)، ثم ننتقل إلى إلقاء نظرة فاحصة على تطور عائلة معالجات إنتل. ونشرح أيضاً، بعض المصطلحات الأخرى، التي قد تجد الإلمام بها مفيداً.




التعليمات








تعمل الكمبيوترات بناءً على أوامر متدنية المستوى (low-level commands)، تُدعى التعليمات (instructions). ونقصد بعبارة "متدنية المستوى"، أن هذه الأوامر تعمل بشكل مباشر مع المعالج، وتتصل مع أجزائه الأساسية. ويحتوي كل نوع من أنواع المعالجات، على مجموعة محددة من هذه التعليمات، التي يعمل بموجبها. وتسمّى هذه المجموعة طاقم التعليمات (instruction set).


يمكن للمبرمجين الوصول إلى تعليمات المعالج من خلال لغات البرمجة المختلفة. وتكتب زمرة التعليمات بلغة الآلة (machine language)، التي تحتل أدنى مستوى من بين جميع اللغات، وتتألف من أرقام فقط (الصفر والواحد)، ولذلك يندر استخدامها من قبل المبرمجين. وللتغلب على هذه المشكلة، يلجأ المبرمجون عادة، إما إلى اللغة التجميعية (assembly language)، التي تستخدم التعليمات ذاتها، لكنها تعطي تسميات محددة لتسهيل التعامل معها (مثل add و inc)، وإما إلى لغة عالية المستوى (high-level language, HLL)، تندرج فيها تعليمات الآلة ضمن أوامر على نطاق أوسع. ويبيّن الشكل المستويات المختلفة للغات البرمجة.

لا تستغني اللغات عالية المستوى (HLL) عن تعليمات الآلة بأي شكل، لكنها تجعل التعامل معها أسهل، نسبياً. يجب تحويل البرنامج المكتوب بلغة عالية المستوى، إلى لغة الآلة، ويتم ذلك عن طريق البرنامج المترجم (compiler) الخاص بهذه اللغة، ويقوم برنامج المترجم عادة بتحويل تعليمات البرنامج إلى لغة داخلية وسيطة أولاً، ثم إلى لغة الآلة. وتسمّى هاتان المرحلتان: الواجهة الأمامية (front end)، والواجهة الخلفية (back end) للمترجم. ويمكن لمصممي البرنامج المترجم (compiler) أن يفصلوا الأجزاء التي لا تتعلق بمعمارية منصة العمل، عن الأجزاء المتعلقة بها. ويجب في نهاية المطاف، أن تصل التعليمات إلى المعالج على هيئة أرقام، لكي يتمكّن من القيام بعمله.

تتضمن التعليمات النموذجية في طاقم تعليمات x86، التي شكّلت حجر الأساس لبيئة الكمبيوترات الشخصية لسنين طويلة، أوامر لفعاليات مختلفة، مثل التوابع الحسابية، ونقل البيانات، والتعليمات المنطقية، وتعليمات الدخل والخرج. وتتضمن التعليمات الحسابية أمر add، الذي يضيف محتويات المسجّلات (registers) المختلفة إلى بعضها البعض، وأمر inc (increment) الذي يضيف واحداً إلى القيمة الموجودة في المسجّل. وتتضمّن تعليمات نقل البيانات أمر mov الذي ينقل البيانات من مسجّل إلى مسجّل آخر، أو إلى عنوان ذاكرة، وأمر xchng (exchange) الذي يقوم بتبديل محتويات مسجّلين مختلفين بين بعضهما البعض، أو محتويات عنواني ذاكرة. وتتألف كافة البرامج من مزيج متنوع من هذه التعليمات التي "يفهمها" المعالج وينفذها.







التصاميم فائقة التدرج








تحدثنا في الجزء السابق عن خطوط المعالجة (pipelines)، وهي التقنية التي تمكّن المعالج من البدء في تنفيذ تعليمة جديدة، قبل أن ينتهي من تنفيذ التعليمة الحالية. وتمكّننا هذه التقنية من توفير الوقت، عن طريق التأكّد من أن المعالج لن يتوقف في انتظار التعليمات. ولا يستطيع المعالج في جميع الأحوال، إنهاء سوى تعليمة واحدة خلال دورة الساعة الواحدة. ولزيادة المردود، وتسريع المعالجة، تمتاز معالجات اليوم (مثل معالج Alpha، من شركة كومباك -بعد أن اشترت ديجيتال- ومعالج Power PC من شركتي IBM وموتورولا، ومعالجات بينتيوم من إنتل، ومعالج SPARC من صن) باحتوائها على معمارية التدرج الفائق (superscalar). وتكمن الفائدة الرئيسية لمعمارية التدرج الفائق في أنها تسمح للمعالج بتنفيذ أكثر من تعليمة في دورة الساعة الواحدة، باستخدام عدة خطوط معالجة.


يبحث المعالج ذو التصميم فائق التدرج، عن التعليمات التي يمكن معالجتها خلال دورة الساعة ذاتها، ويعالجها مع بعضها البعض. فيمكن، مثلاً، لمعالج بينتيوم، العمل على تعليمات بسيطة، مثل mov و or و add، بهذه الطريقة، تحت ظروف خاصة فقط (يجب أن لا تكون إحدى التعليمات بحاجة إلى نتيجة التعليمات الأخرى). لكن التعليمات الأكثر تعقيداً، كالتي تتضمّن عمليات الفاصلة العائمة، لا يمكن معالجتها معاً.

تقدّم المعالجة المتوازية (parallel processing) فوائد واضحة في مجال السرعة، لكن تقنية التدرج الفائق (superscalar) لها نقادها. ويعتقد البعض أنها تضيّع العديد من الفرص على التنفيذ المتوازي، لأن دمج التعليمات المنفصلة يأخذ وقتاً كبيراً نسبياً، ولأن التعليمات المنفصلة غالباً ما تتأخر أثناء إنتظارها للموارد. لنفرض، مثلاً، أن التعليمة A تنفذ في أحد خطوط المعالجة، فيما تنفذ التعليمة B في خط آخر، وتنتظر التعليمة C أن ينتهي خط التنفيذ الأول من تنفيذ التعليمة A. وعند الإنتهاء من تنفيذ التعليمة A، فإن الشيء الواضح هو استبدالها بالتعليمة C، وهي التعليمة التالية على خط التنفيذ. لكن، إذا كانت التعليمة C تحتاج إلى نتائج التعليمة B، التي يتم تنفيذها في خط التنفيذ المتتابع الآخر، فعليها أن تنتظر. وهذا ما يقضي على فكرة التنفيذ المتوازي، ويقضي على أية فرصة لزيادة السرعة. ويصبح، بذلك، لمعالجك الجديد المكلف دور محدود نسبياً، في زيادة الأداء.

وحتى في البرنامج المصمم بشكل جيد -الذي يحاول أن يحصل على الفائدة القصوى من خطوط المعالجة والتنفيذ المتوازي- يمكن أن تعاني خطوط المعالجة من تأخيرات زمنية. وللتغلب على هذه المشكلة، صمم المهندسون معالجات التدرج الفائق، لتقوم بأداء التنفيذ غير المرتّب (out-of-order execution). فإذا كان أحد خطوط المعالجة حراً، نظراً لأن التعليمة C تحتاج لنتائج التعليمة B، فإن المعالج يمكنه أن يبحث عن أول تعليمة في البرنامج لا تعتمد على التعليمة B (ولتكن التعليمة H). ويبدأ المعالج بالعمل على التعليمة H والتعليمات المرتبطة بها، إلى أن تنتهي التعليمة B، حيث يعود بعدها إلى التعليمة C. وبدلاً من إرسال نتائج التعليمة غير المرتّبة إلى المسجّلات (حيث يتعامل المعالج بشكل مباشر مع البيانات)، فإن المعالج يرسلها إلى ذاكرة وسيطة لتخزينها، ثم يقوم بترتيب كل شيء بانتظام، قبل تحريره.

تظهر إحدى مشاكل التنفيذ غير المرتّب إذا احتاجت تعليمتان إلى المسجّل ذاته. وللتغلب على هذه المشكلة، فإن معالجات اليوم يمكنها أن تغيّر أسماء المسجّلات بشكل فوري، ضمن عملية "إعادة تسمية المسجّلات" (register renaming). ومن الواضح أن التنفيذ غير المرتّب يتطلب تصميماً دقيقاً جداً للمعالج، لأن البرامج قد تفشل في عملها، إذا لم يتم تنفيذ التعليمات بالترتيب الصحيح.







طواقم التعليمات: ريسك وسيسك






يمكن تعريف طاقم التعليمات أنه مجموعة خاصة من الأوامر، التي يمكن لمعالج معيّن أن يتعرّف عليها وينفّذها. ودار خلال السنين، حوار طويل حول فلسفتين لتصميم المعالج، وكيفية تنفيذ طاقم التعليمات. تسمّى الطريقة الأولى، والتي عرفت في البداية باسم الشيفرة الميكروية (microcode)، بتقنية "طاقم التعليمات المعقدة للحوسبة"، أو اختصاراً "سيسك" (complicated instruction-set computing, CISC). وتسمى الطريقة الثانية، "طاقم التعليمات المختصرة للحوسبة"، أو "ريسك" (reduced instruction-set computing, RISC). تستخدم أجهزة الألعاب Nintendo 64، وكمبيوترات ماكنتوش باور بي سي، ومحطات العمل سيليكون جرافيكس، تقنية ريسك، فيما تستخدم الأجهزة الشخصية المرتكزة على معالجات إنتل ونظائرها، وكمبيوترات ماكنتوش 680x0 تصاميم سيسك. وعلى الرغم من تناقص الفروقات الفعلية بين هاتين التقنيتين، إلا أن النقاش لا يزال مستمراً بشأن التصميم الأفضل.

استخدمت الأجيال الأولى من المعالجات، الدارات الإلكترونية مباشرة لتنفيذ كل تعليمة. وقد كانت تلك المعالجات سريعة نسبياً نظراً لعدم وجود تعليمات برمجية، لتعمل من خلالها. وكما قد يخيّل إليك، فإن هذه الطريقة سببت مشكلة كبيرة، وهي أن أي تغيير في العتاد يتطلب تغيير الدارات التي تمثل التعليمات (أو البرمجيات) أيضاً، والعكس بالعكس. وقد أمكن تنفيذ برامج بسيطة بهذه الطريقة، أما البرامج المعقدة فكانت شبه مستحيلة. وللتغلب على هذه المشكلة، وضعت شركة IBM الشيفرة الميكروية (microcode)- وهي برمجيات بسيطة مخزّنة على رقاقة، يحصل منها المعالج على تعليماته.

تكمن إحدى فوائد الشيفرة الميكروية لمعالجات سيسك، في إمكانية تعديل طاقم التعليمات، بسهولة أكبر بكثير من السابق، مما سمح باستخدام تعليمات أكثر تعقيداً. ونظراً لأن التعليمة البرمجية الواحدة قد أخذت مكان عدة تعليمات عتادية بسيطة، أصبح بإمكاننا كتابة البرامج بعدد أقل من التعليمات. والفائدة الأخرى هي أن برامج سيسك أخذت مساحات أقل من الذاكرة، التي كانت مكلفة جداً، في الستينيات والسبعينيات. لكن التعامل مع هذه التعليمات المعقدة فرض عملاً إضافياً على المعالج. وتحتاج التعليمات المعقدة المختلفة، إلى عدد مختلف من دورات الساعة لتنفيذها، ولهذا فإن للشيفرة الميكروية مساوئها أيضاً.

البساطة هي بالطبع، الحل المناسب للقضاء على التعقيدات، وهذا ما حاولت معالجات ريسك أن تفعله في منتصف السبعينيات. والأساس الذي اعتمدته تقنية ريسك، هو أن المعالج، حتى مع تصاميم الشيفرة الميكروية (microcode)، يقضي معظم وقته في تنفيذ تعليمات بسيطة. وقد أدرك الباحثون أن تنفيذ سلسلة من التعليمات البسيطة قد يكون في معظم الأحيان أسرع من تنفيذ تعليمة واحدة معقدة. يتضمن تصميم ريسك، عدداً أقل من التعليمات، وجميعها بطول موحد (32 بت)، ويمكن أن تنفّذ بدورة ساعة واحدة. واختفت الشيفرة الميكروية (microcode) في معظم التعليمات شائعة التنفيذ، وعادت معالجات ريسك إلى نظام ما قبل الشيفرة الميكروية (pre-microcode)، أي إلى المنطق العتادي. واحتلت ذاكرة كاش عالية السرعة الخاصة بالمعالج، محل الشيفرة الميكروية، حيث تخزّن فيها سلسلة متتابعة من التعليمات. يجب ترجمة البرامج بعناية، في تصميم ريسك، للاستفادة القصوى من طاقم التعليمات، كما يجب الاستفادة من تقنية خطوط المعالجة (pipelining) إلى حدودها القصوى.

حالما ظهر تصميم ريسك، أُعيد تسمية الشيفرة الميكروية إلى اسم "سيسك". وأكثر تصاميم سيسك انتشاراً هي بالطبع، في عائلة معالجات إنتل ومعالجات المينفريم لشركة IBM، ومعالجات موتورولا 680x0. وأكثر طواقم التعليمات شعبية هو طاقم تعليمات x86، الذي صمم أساساً، لمعالج إنتل 8086، ولا يزال مستخدماً حتى الآن في معالجات بينتيوم. وأحدث الإضافات التي طرأت على تعليمات x86، تعليمات MMX، وهي عبارة عن 57 تعليمة جديدة تتعلق بشكل رئيسي ببرمجة الملتيميديا. وقد يختفي طاقم التعليمات x86 مع ظهور معمارية طاقم التعليمات IA-64 المقبل من شركة إنتل. وسوف تظهر هذه المعمارية أولاً، في معالج Merced (P7)، عيار 64 بت، الذي يعتمد على مجموعة جديدة من طواقم التعليمات لأول مرة في تاريخ الكمبيوترات الشخصية. وأعلنت إنتل أن معالج Merced سيدعم طاقم التعليمات x86، لكنها لم تقدم حتى الآن، فكرة عن كيفية تحقيق التوافق.




عائلة معالجات إنتل






على الرغم من أن مصطلح PC يرمز إلى "الكمبيوتر الشخصي" (personal computer)، إلا أنه يعني اليوم، تلك الكمبيوترات التي تعمل على معالجات إنتل والمعالجات المتوافقة معها، في ظل نظام تشغيل من شركة مايكروسوفت (دوس، أو ويندوز 3.x، أو ويندوز95، أو ويندوز إن.تي). ولم يكن الأمر بهذا الشكل من قبل: فقد كانت كمبيوترات Apple II تسمى كمبيوترات شخصية أيضاً، وكذلك كمبيوترات كومودور 64، وجميع الكمبيوترات الأصغر حجماً من كمبيوترات الميني (minicomputers).

لكن، عندما دخلت شركة IBM إلى الأسواق عام 1981، أسمت منتجها IBM-PC، وأصبحت الكمبيوترات التي تنتجها الشركات الأخرى معروفة باسم IBM-PC-Compatibles، أي الكمبيوترات الشخصية المتوافقة مع كمبيوترات IBM. واختصر هذا التعبير مع الزمن، ليصبح IBM-compatible (متوافق مع IBM)، أو PC-compatible (متوافق مع الكمبيوترات الشخصية)، ثم أصبح بعد فترة قصيرة، PC فقط. ولم يكن ضرورياً أن تعمل بنظام تشغيل من شركة مايكروسوفت، لأن الكمبيوترات التي تعمل بنظام OS/2 كانت تسمى، أيضاً، PCs (كمبيوترات شخصية). وقد اشتركت هذه الكمبيوترات مع بعضها البعض في شيء واحد: هو أن معالجاتها من شركة إنتل. أما اليوم، فيمكنك شراء كمبيوترات شخصية بمعالجات متوافقة مع معالجات إنتل (وسنلقي نظرة على هذه المعالجات في العدد القادم)، لكن معظم الكمبيوترات الشخصية لا تزال تستخدم رقاقات إنتل، مثلما كان الأمر في الأيام الخوالي.




من معالج 4004 إلى معالج 80286








كان المعالج 4004 أول تصميم تطرحه إنتل، ويعود إلى العام 1971. وكان من العيار 4 بت، ولم يكن باستطاعته القيام سوى بالقليل من العمليات الحسابية الأساسية. وبعد عام من ذلك التاريخ، طرحت إنتل إصدارة عيار 8 بت من معالج 4004، وهو معالج 8008، الذي كان يعمل بسرعة 0.2 MHz تقريباً. وبعد بضع سنوات، جاء معالج 8080 بطاقم تعليمات أكثر قوة. وشكّل معالج 8080، الأساس الذي بني عليه معالج Z80، من شركة Zilog (وليس إنتل)، والذي كان يعمل بنظام التشغيل CP/M، وهو أول نظام تشغيل للكمبيوترات الشخصية. وأول معالج فعال قدمته إنتل كان المعالج 8086، الذي طرح في الأسواق عام 1978، وكان ناقل البيانات فيه من عيار 16 بت. لكن النواقل من عيار 16 بت كانت مكلفة جداً آنذاك. ولم يكن يوجد سوى القليل من العتاد الذي يدعم عيارات 16 بت، بما فيها الألواح-الأم. وأعادت، لذلك، شركة إنتل هندسة هذا المعالج، بتصميم خارجي من عيار 8 بت، وأطلقته عام 1979، وأسمته المعالج 8088. وكانت المسجّلات فيه من عيار 16 بت، من حيث السعة (مثل معالجات 8086)، لكن ناقل البيانات كان من عيار 8 بت، ليؤمن التوافق مع العتاد المتوفر في نهاية السبعينيات. وأصبح معالج 8088 قلب كمبيوتر IBM-PC، بينما لعب المعالج 8086 الأكثر قوة، دوراً ثانوياً في الأجهزة المتوافقة مع IBM. وكان المعالج 8088 يعمل بسرعتين: 4.77 ميجاهرتز، و 8 ميجاهرتز، فيما استطاع المعالج 8086 العمل بهاتين السرعتين، بالإضافة إلى 10 ميجاهرتز.


تااااابع

العندلييب
08-08-2005, 03:57 AM
أصدرت إنتل عام 1982، معالجاً في غاية الأهمية، وهو 80286. وعندما وجد هذا المعالج طريقه إلى كمبيوتر IBM PC-AT الجديد عام 1984، بدأنا ندرك إمكانات الكمبيوترات الشخصية، حيث قدّم هذا المعالج ناقل بيانات عيار 16 بت، وإمكانيات عنونة للذاكرة من العيار 24 بت، ومسجّلاً بقياس 16 بت. وكان مردوده أكثر تطوراً بكثير، من مردود معالج 8088، حيث أنه حتى مع سرعته الأولى 6 ميجاهرتز، كان أداؤه أسرع بأربع مرات من أداء معالج 8088 ذو السرعة 4.77 ميجاهرتز. وظهر المعالج 286، الذي أصبح معروفاً بهذا الاسم، بسرعات 8 و 10 و 12 ميجاهرتز. وكان بإمكانه التعامل مع 16 ميجابايت من الذاكرة، وهو تطور كبير عن الميجابايت الواحد التي يتعامل معها معالج 8088. وقدّم توافقاً كاملاً مع المعالج الذي سبقه، عن طريق تضمينه نمطين من التشغيل: النمط الحقيقي (real mode)، والنمط المحمي (protected mode)، حيث يقوم النمط الأول بمحاكاة معالج 8088 (مع قيود الميجابايت الواحد المفروضة عليه)، بينما يسمح النمط الثاني بعزل مجالات الذاكرة المحمية عن بعضها البعض، لتجنب حدوث تضارب بين البرامج. لكن نظام التشغيل دوس لم يتمكّن من التعامل مع النمط المحمي بشكل جيد، فبقي هذا الخيار بدون فائدة عملية، إلى أن تم توسيع نظام دوس، وظهور نظام OS/2.

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










معالج 80386




















أعطانا المعالج 80286 فكرة عن إمكانات طاقم التعليمات x86، ومعمارية "سيسك". وبدأت ظاهرة الحوسبة الشخصية تتبلور عند ظهور المعالج 80386 عام 1985 (في كمبيوترات كومباك وليس IBM). فقد كان معالج 386 أول معالج تطرحه إنتل من عيار 32 بت، مع ناقل بيانات ومسجّلات من عيار 32 بت أيضاً. ويمكنه أن يتعامل مع 4 جيجابايت من الذاكرة، بسرعات تتراوح من 16 إلى 32 ميجاهرتز (وصلت معالجات شركتي AMD و سايركس إلى40 ميجاهرتز)، مما جعله أسرع معالجات إنتل في ذلك الحين. وسمّيت أول رقاقة طرحت من هذا النوع في الأسواق معالج 80386، لكن إنتل أنتجت بعده مباشرة، المعالج 80386SX (سنتحدث عنه فيما بعد). فأطلق على الرقاقة الأصلية الاسم 80386DX، للتمييز بشكل أفضل بين النموذجين. وانتقلت تسميات DX وSX إلى عائلة معالجات 80486، لكنها لم تنتقل إلى عائلة بينتيوم.




لم تقتصر مزايا المعالج 386 على إمكانية التعامل مع ذاكرة أكبر من الذاكرة التي يمكن أن يتعامل معها المعالج 286، بل أمكنه أيضاً مخاطبة الذاكرة ككتلة واحدة ضخمة. فقد تعامل المعالج 286 مع الذاكرة على شكل أقسام سعة كل منها 64 كيلوبايت فقط، على الرغم من أن بإمكانه التعامل مع 16 ميجابايت. وتكمن فائدة التعامل مع الذاكرة ككتلة واحدة ضخمة، في أنه يمكن تحميل التطبيقات وبياناتها في جميع خلايا الذاكرة المتوفرة في الكمبيوتر، أي الوصول إليها بشكل أسرع. وامتاز معالج 386 باحتوائه على كتل صغيرة (16 بايت) من صفوف التعليمات المبيتة فيه، وبقدرته على تحميل البيانات التالية التي قد يطلبها الكمبيوتر.

وفيما كان المعالج 286 يعمل بنمطين، امتاز المعالج 386 بنمط ثالث. يسمح النمط الحقيقي (real mode) بالتوافق الكامل مع البرامج المصممة لمعالجات 8086، ويدخل مثل معالج 286، النمط الحقيقي عند الإقلاع. وبقي النمط المحمي (protected mode) فعالاً، حيث يعمل المعالج 386 مثل المعالج 286، في هذا النمط. أما النمط الجديد، فسمّي نمط معالج 8086 الافتراضي (virtual 8086)، حيث يمكن لمعالج 386، في هذا النمط، محاكاة عمل عدة رقاقات 8086، كل منها في منطقة معزولة من الذاكرة. وأصبح معالج 386 بهذه الطريقة، أول رقاقة عملية متعددة المهام في عائلة معالجات إنتل. كان بإمكان المعالج 286 القيام بتعددية المهام للبرامج العاملة بالنمط المحمي، لكن أنظمة التشغيل والبرامج لم تقدم، في حينها، سوى القليل من الدعم لهذه الميزة.

كانت رقاقات 386DX الأولى مكلفة جداً، ولم تقدّم سوى القليل من التحسينات عند استخدامها مع البرمجيات المبنية على نظام دوس، والمتوفرة في ذلك الحين. وهذا ما دفع إنتل إلى طرح المعالج 386SX، وهو ذو تصميم فيزيائي مختلف عن تصميم 386DX، يمكنه أن يستخدم دارات أبسط على الألواح-الأم. استخدم المعالج 386SX ناقل بيانات عيار 16 بت، بدلاً من 32 بت، على الرغم من أن المسجلات فيه كانت من عيار 32 بت. وسبّب استخدام ناقل عيار 16 بت بطئاً في عمل الكمبيوتر، لأنه لم يعد بالإمكان قذف البيانات إلى المعالج، بالسعة القصوى التي يمكن للمعالج العمل عليها.

أما بالنسبة للمستخدمين، فكانت الفوائد الرئيسية لعائلة معالجات 80386، تكمن في استخدامه للذاكرة وتعددية المهام، والتي أدت إلى تطوير واجهة استخدام رسومية (graphical user interface, GUI) مبنية على الكمبيوتر الشخصي. وتم تشغيل نظام مايكروسوفت ويندوز 3.0 على معالج 286، لكن بشكل بطيء وغير فعال. ومع عائلة 386 فقط -بإمكانياتها في التعامل مع كميات كبيرة من الذاكرة، واستخدامها القوي للذاكرة الإفتراضية، وإمكانية استخدام النمط المحمي ونمط 8086 الإفتراضي- تمكّن نظام ويندوز من الحصول على مايحتاجه من قوة المعالجة.

سننتقل في الحلقة القادمة، إلى عائلة معالجات 486، ومنها إلى عائلة بينتيوم. وسنتفحص أيضاً، المعالجات المقلّدة لمعالجات إنتل، والمعالجات التي تقع خارج نطاق إنتل والكمبيوترات الشخصية.



تابع

العندلييب
08-08-2005, 04:00 AM
الوضع الراهن للمعالجات

الجزء الثالث



نتابع في هذا الجزء تسليط الضوء على بقية عائلة معالجات إنتل، بدءاً من المعالج 80486 وصولاً إلى سلسلة بينتيوم، ثم ننتقل إلى معالجات AMD K6، ومعالجات Cyrix M II، ومعالجات PowerPC G3.








نظرنا في الجزأين السابقين من هذا المقال، إلى المعالجات الميكروية (microprocessors): كيفية صنعها، وآلية عملها، والتقنيات التي اعتمدت عليها في تطوّرها. وبدأنا في الجزء الماضي، بإلقاء نظرة عامة على العائلات الرئيسية للمعالجات، وابتدأنا، بعائلة معالجات إنتل. ووصلنا في آخر الجزء السابق إلى معالج 80386، مما يعني أننا في صدد المعالج الذي يليه، وهو معالج 80486. وسنتابع في هذا الجزء، استعراض باقي أعضاء عائلة إنتل، إلى أن نصل إلى معالج بينتيوم الثاني (Pentium II). وسنتطرق، أيضاً، إلى المعالجات المشابهة (clones) لمعالجات إنتل، ثم نستعرض باقتضاب عائلة معالجات موتورولا 680x0، وعائلة معالجات باور بي سي (PowerPC)، التي تبنى عليها أجهزة ماكنتوش.








عائلة إنتل 80486






على الرغم من أهمية معالجات 80386 في تطوير صناعة الكمبيوترات الشخصية، إلا أن منصة الكمبيوترات الشخصية التي نشهدها اليوم، بزغت فعلياً مع ظهور معالجات 80486 عام 1989. فقد كان نظام ويندوز 3.x يعمل بشكل جيد، نسبياً، على نظم 80386DX، وبشكل بطيء، لكن مقبول، على نظم 80386SX، إلا أن معالج 486 جلب إلى الساحة عدداً من التقنيات الجديدة، التي حسّنت الأداء.

كان 80486 أول معالج من عائلة إنتل يحتوي على ذاكرة كاش رئيسية L1 (سعة 8 كيلوبايت)، مما خفّض عدد مرات التعامل مع ذاكرة رام. ونظراً لأن ذاكرة كاش الرئيسية كانت مبنية مباشرة داخل المعالج ذاته، فقد كانت عملية الوصول إلى البيانات الموجودة فيها، أسرع بكثير من الوصول إلى ذاكرة رام، في السابق. وكان معالج 486 أول من قدّم النمط الانفجاري (burst mode) في نقل البيانات، مما سمح بزيادة سرعة نقلها بين الذاكرة رام والمعالج. وكان أيضاً، أول معالج من عائلة x86 يحتوي فعلياً على خط معالجة (pipeline)، مما أعطى معدّل إنجاز أكبر. واحتوى هذا المعالج على حوالي 1.25 مليون ترانزستور، أي خمسة أضعاف عدد الترانزستورات في معالج 80386، خصّصت لوحدات وظيفية أكثر تطوراً، ولوحدة الفاصلة العائمة (FPU) داخل المعالج، ولذاكرة كاش L1 الرئيسية. وتقوم وحدة الفاصلة العائمة (FPU) بتنفيذ العمليات الرياضية على الأعداد الحقيقية (التي تتضمّن فواصل عشرية)، مما أدّى إلى تحسين أداء أنواع معينة من التطبيقات (وبشكل خاص البرامج العلمية والرسومية).

توافرت معالجات 486 بسرعات 25 و 33 و 50 ميجاهرتز. ولم تكن الرقاقات بحاجة إلى مبدّدات حرارية (heat sinks)، على الرغم من أن بعض الأجهزة كانت تُشحن مع هذه المبدّدات. وكان بإمكان رقاقة 486 أن تتعامل مع 4 جيجابايت من الذاكرة رام، وأن تعمل، مثل رقاقة 386، بالنمط الحقيقي، والنمط المحمي، ونمط 8086 الافتراضي.

كما هو حال معالج 80386، فقد جاء معالج 486 في إصدارة DX وإصدارة SX. وكانت إصدارة SX، الأرخص ثمناً، متوافرة بسرعات 16 و 20 و 25 و 33 ميجاهرتز. وبشكل عام، كانت إصدارة SX مطابقة لإصدارة 486DX، باستثناء أنها كانت تعمل على سرعات أخفض، وباستثناء ميزة أخرى مهمة، هي افتقارها إلى المعالج الرياضي المساعد (math coprocessor). لكن، حتى هذا الأمر لم يكن صحيحاً في الواقع، فمعالج 486SX في الواقع عبارة عن معالج 486DX بدون تفعيل للمعالج الرياضي المساعد. ولم تكن الفروقات بين DX وSX في معالجات عائلة 486 سوى خدعة تسويقية، فقد كان من الممكن ترقية معالج 486SX ليتضمّن وظائف المعالج الرياضي المساعد، عن طريق تركيب رقاقة على اللوحة-الأم، سميّت 80487SX، ولم تكن هذه الرقاقة في الواقع سوى معالج 80486DX. وكانت رقاقة 80487SX توقف، عند تركيبها، عمل معالج 486SX بشكل كامل. ويعتبر هذا الأمر غريباً، إلا أنه الواقع.

لم تكن رقاقة 487SX مثل رقاقة 486DX تماماً، إذ كان ترتيب الإبر مختلفاً، بحيث لا يمكن تركيب رقاقة 486DX في شق رقاقة 487SX، في اللوحات-الأم المخصصة لمعالجات 486SX، والأرخص ثمناً. وقد مكّن ترتيب الإبر هذا، شركة إنتل، من تسويق معالج أسرع للوحات 486SX، وهو رقاقة OverDrive. كانت رقاقة OverDrive، التي ظهرت عام 1992، تركّب في شق رقاقة 487SX. وجاءت هذه الرقاقة للعمل فوق معالج 486SX ذو السرعة 25 ميجاهرتز أولاً، ثم ظهرت بإصدارة جديدة لمعالج 486SX ذو السرعة 33 ميجاهرتز. وكانت الفكرة من ورائها، مضاعفة سرعة رقاقة SX الأصلية، ولذلك اشتهرت باسم رقاقة مضاعفة سرعة الساعة (clock-doubling chip). وتمكّنت هذه الرقاقة، في إصدارة 25 ميجاهرتز، من الحفاظ على سرعة 25 ميجاهرتز أثناء نقل البيانات من مصادر خارجية بالنسبة للمعالج، لكن عمليات المعالجة الداخلية كانت تتم بضعف السرعة، أي 50 ميجاهرتز. وكانت السرعة الداخلية، في إصدارة 33 ميجاهرتز، هي 66 ميجاهرتز.

لاقت فكرة مضاعفة سرعة الساعة رواجاً كبيراً، لدرجة أن شركة إنتل قررت في خريف عام 1992، أن تطرح إصدارات بسرعة مضاعفة لمعالج DX ذاته، وأسمتها 80486DX2-50، و80486DX2-66. ولم تكن هذه الرقاقات داعمة لرقاقات 486DX القياسية، كما كان حال رقاقة OverDrive عند إضافتها لرقاقة 486SX، بل استبدلتها كلياً.

وطرحت إنتل عام 1994، المعالج 80486DX4، الذي كان يعمل بثلاثة أضعاف سرعة ساعة DX. وبقيت عمليات المعالجة الخارجية تعمل بسرعة ناقل النظام، وهي 25 أو 33 ميجاهرتز، لكن المعالجة الداخلية وصلت إلى سرعة 75 ميجاهرتز (لمعالجات DX-25)، وسرعة 100 ميجاهرتز (لإصدارات DX-33). واستخدمت هذه المعالجات توتراً قدره 3.3 فولط، لكي لا ترتفع حرارتها (احتاج معالج DX2 الذي كان يعمل على توتر 5 فولط، إلى مبدّدات حرارية)، مما يعني أنها كانت بحاجة إلى لوحات-أم جديدة.




شركتا AMD و Cyrix تدخلان الحلبة






قدمت كل من شركة AMD (Advanced Micro Devices)، وشركة Cyrix، إصداراتها الخاصة من المعالج 486DX، وكان هذا أول معالج يتم تقليده على نطاق واسع، من شركات أخرى. وقامت إحداهما بنسخ معالج 486DX2-66، ووصلت الأخرى إلى سرعة 80 ميجاهرتز لعمليات المعالجة الداخلية. وكان معالج 486DX2-80 مبنياً على ناقل نظام بسرعة 40 ميجاهرتز، وخلافاً لمعالج إنتل 486DX2 (الذي كان يعمل على توتر 5 فولط، وينشر حرارة كبيرة)، فقد عمل هذا المعالج على توتر 3.3 فولط. وأصدرت كل من AMD وسايركس، إصدارات بثلاثة أضعاف سرعة الساعة، لمعالجاتها 486 ذات السرعة 40 ميجاهرتز، حيث وصلت إلى سرعة داخلية قدرها 120 ميجاهرتز. وقدّمت كل من الشركتين، مزايا لإدارة الطاقة، ابتداءً من معالجاتها ذات السرعة المضاعفة، لكن إنتل لم تقدّم هذه المزايا حتى معالج DX4.




وعلى الرغم من أن إنتل توقفت عن تحسين معالجات 486، عند المعالج DX4-100، إلا أن شركتي AMD وسايركس استمرّتا في تحسين معالجاتهما المشابهة. وقدّمت AMD عام 1995 المعالج 5x86 بسرعة مضاعفة أربع مرات، وهو عبارة عن معالج 486DX بسرعة 33 ميجاهرتز، يعمل داخلياً بسرعة 133 ميجاهرتز. وسوّقت AMD معالجها الجديد، مقارنةً أداءه مع أداء معالج بينتيوم 75، الجديد في حينه، وأسمته 5x86-75. لكنه كان عبارة عن معالج 486DX من جميع الأوجه، بما في ذلك إضافة 16 كيلوبايت من ذاكرة كاش الرئيسية L1 المبنية ضمن المعالج، والتي قدّمتها إنتل في معالجها DX4. ولحقت سايركس بالركب فقدمت معالجها الخاص 5x86 وأسمته M1sc، لكنه كان مختلفاً بشكل كبير عن معالج AMD. قدّم المعالج M1sc، في الواقع، مزايا مماثلة لمزايا معالج بينتيوم، على الرغم من أنه صُمم للعمل على لوحات-أم 486. وتضمّن هذا المعالج، الذي يعمل بسرعتي 100 و 120 ميجاهرتز، ناقلاً داخلياً عيار 64 بت، وخط معالجة (pipeline) بست مراحل (مقارنة مع خمس مراحل في معالج DX4)، وتقنية توقع التفرّعات (branch-prediction) لزيادة سرعة تنفيذ التعليمات. ومن المهم أن نتذكر أن معالج M1sc، ظهر في الأسواق بعد أن أطلقت إنتل معالجات بينتيوم، ولذلك فإن هذه المزايا كانت مفيدة لترقية معالجات 486، أكثر من كونها مزايا ستستخدم لبناء نظم جديدة. وفيما يخص هذا المقال، فإن الرقاقة تمثل استمراراً لمعالجات بينتيوم.


النكهات المتعددة لمعالجات بينتيوم

لا تعني كلمة بينتيوم (Pentium) أي شيء، لكنها تحتوي على المقطع pent، الذي يعني العدد خمسة في اللاتينية. وكانت إنتل تنوي بداية، تسمية معالج بينتيوم، باسم 80586، لتحافظ على تناغم تسمية معالجاتها السابقة 80x86. لكن الشركة لم تعجبها فكرة أن AMD وسايركس، وأي شركة مقلّدة أخرى، يمكنها أن تستخدم اسم 80x86 أيضاً، ولهذا قررت أن تستخدم تسمية يمكن تسجيلها كعلامة تجارية، ومن هنا جاء الاسم "بينتيوم". وعلى الرغم من أن هذه الرقاقة الجديدة بقيت مبنية على تقنية سيسك (CISC)، إلا أنها استخدمت عدداً من تقنيات ريسك (RISC) ضمن تصميمها، وكانت أول معالج لشركة إنتل بتقنية التدرج الفائق (superscalar). وقد مكّنت هذه التقنيات الرقاقة من تنفيذ 300 مليون تعليمة في الثانية (MIPS)، فيما ينفّذ معالج DX2-66، أقل من 60 مليون تعليمة في الثانية. ولا يعتبر استخدام معدّلات MIPS أمراً دقيقاً علمياً، حيث أنه يشير فقط إلى قدرة المعالج (وليس إلى عمليات الدخل والخرج والعوامل الأخرى المكملة لعمليات المعالجة)، لكن هذه الأرقام تعطي فكرة عن مدى زيادة السرعة.

قدّم معالج بينتيوم تقنيات أخرى مهمة. أولها، كما ذكرنا، معمارية التدرج الفائق (superscalar)، فقد استخدم خطي معالجة، بدلاً من خط واحد في معالجات 80486، على الرغم من ضرورة تصميم البرامج بطريقة مختلفة، لتستفيد من إمكانية عمل خطي المعالجة مع بعضهما البعض. ثانيها أن معالج بينتيوم استخدم تقنية توقع التفرّعات، للحد من التأخيرات التي تحدث غالباً، عندما تغيّر تعليمة تفرع مجرى تنفيذ التعليمات. وثالثها أن معالج بينتيوم رفع معدّل نقل البيانات من وإلى الذاكرة، باستخدام ناقل بيانات عيار 64 بت، بدلاً من عيار 32 بت المستخدم في معالجات 80486. وساهم معالج بينتيوم في زيادة معدل النقل بشكل أكبر، عن طريق تطبيق نمط خط المعالجة الانفجاري (pipeline-burst mode)، أثناء القراءة من ذاكرة كاش، والكتابة إليها، وعن طريق استخدام ناقل ذاكرة بسرعة 66 ميجاهرتز (كانت في البداية 60)، فيما استخدم معالج 486 ناقل 33 ميجاهرتز. ورابعها أن معالج بينتيوم جاء مع مزايا مبيتة لإدارة الطاقة. وخامسها أن استخدام ذاكرتي كاش L1 منفصلتين، إحداهما للبيانات، والأخرى للتعليمات، سمح للبرامج باستخدامهما بشكل أمثل. كما أن استخدام خط معالجة مستقل لحسابات الفاصلة العائمة، ساهم في تحسين سرعة تنفيذها.

ومن المفارقات أن إمكانات حساب الفاصلة العائمة، المبيتة ضمن الرقاقة، أو بشكل أكثر تحديداً، مشكلات حساب الفاصلة العائمة، هي التي كانت سبباً في اهتمام الناس الواسع بهذه الرقاقة. فبعد فترة وجيزة من طرح معالج بينتيوم، ضجّت وسائل الإعلام حول وجود خطأ برمجي في تعليمة القسمة FDIV (floating-point divide). بشكل عام، إذا قسمنا العدد A على العدد B، واحتوى الناتج على نسبة معينة (ممثلة بعدد من الخانات إلى يمين الفاصلة العشرية)، ففي بعض الحالات النادرة، كان جداء الناتج بالعدد B، يختلف عن العدد الأصلي A بمقدار 256. وقدّمت إنتل بسرعة، بديلاً عن الرقاقة الخاطئة، وتمكّنت في الواقع، من تحويل الخطأ التصميمي إلى دعاية تسويقية كبيرة. وكانت هذه هي المرة الأولى التي تصل فيها المعالجات إلى مستوى الأحداث الأخبارية الضخمة. (انظر صفحة www.intel.com/procs/support/pentium/fdiv/index.htm، لتحديد فيما إذا كان معالج بينتيوم لديك يحتوي على خطأ FDIV).







ظهرت معالجات بينتيوم لأول مرة في مارس/آذار 1993، باسمين: P/60 و P/66 (تمثل الأرقام كالعادة، سرعة الرقاقة مقاسة بالميجاهرتز). وكانت جميع معالجات بينتيوم التالية -حتى معالج P/200 الذي طرح منتصف عام 1996- مبنية على هذين المعالجين. واستخدمت معالجات P/75، وP/90، وP/100، عامل جداء لسرعة الساعة مساوياً لـ 1.5، واعتمدت معالجات P/120، وP/133، على مضاعفة سرعة الإصدارات الأصلية، بينما اعتمد معالج P/200 على ثلاثة أضعاف سرعة الساعة، واستخدمت معالجات P/150، وP/166 عامل جداء 2.5 لسرعة الساعة. واحتوت كافة إصدارات بينتيوم على أكثر من 3 ملايين ترانزستور، وتطلّبت جميعها مبدّدات حرارية، للتخلص من الحرارة الناتجة عن عمل المعالج.

العندلييب
08-08-2005, 04:02 AM
واستفادت شركتا AMD وسايركس، من نجاح معالجات بينتيوم، والضجة التي أثيرت حول خطأ FDIV، في الوقت ذاته، وقدّمتا المعالجين K5 و 6x86، على التوالي، وسوقتهما على أنهما أكثر ثقة من معالجات بينتيوم. وابتعدت كل من الشركتين، بذلك، عن إنتاج معالجات مقلّدة لمعالجات شركة إنتل، وركّزتا على تصميمهما الخاص بهما، وحافظتا على أصالتهما، وعلى التوافق مع معالجات إنتل، في الوقت ذاته.

تضمن معالج 6x86 -وهو مبني بتقنية سيسك- خطي معالجة، يحتوي كل منهما على سبع مراحل، مقارنة مع خمس مراحل في معالج بينتيوم، الذي يعتمد على وجود خطي معالجة أيضاً. وتمكّن المعالج 6x86 من تحسين تقنية خطوط المعالجة، عن طريق تقديم نتائج التعليمات السابقة إلى كلا الخطين في آن واحد، لتخفيف زمن التوقف، وعن طريق تطبيق أفضل لتقنية توقع التفرعات، وتقنية التنفيذ غير المرتّب، التي تسمح بتنفيذ التعليمات بترتيب مختلف عن ترتيبها في الشيفرة البرمجية، طالما أنها لا تعتمد على نتائج تعليمات سابقة.

بينما كان معالج K5 في جوهره، معالج ريسك، يقوم بترجمة زمرة تعليمات x86 إلى تعليمات أبسط. واحتوى هذا المعالج على ست مراحل في خط المعالجة، وتضمّن توابع تنفيذ وتحليل، كما تضمّن ست وحدات وظيفية (وحدة تفرعات، ووحدتين للتحميل والتخزين، ووحدة للفاصلة العائمة، ووحدتين للمنطق الرياضي)، وتضمّن أيضاً العديد من المزايا المتطورة، تشبه تلك المزايا الموجودة في معالج سايركس. وتجدر الإشارة إلى فارق رئيسي، وهو أن المعالج K5 تأخر في نزوله إلى الأسواق، ولم يتمكّن من الوصول إلى السرعات المتوقعة منه، مما أدى إلى فشله في الحصول على حصة جيدة في أسواق المعالجات. وكان معالج شركة AMD التالي K6، الذي أنتجته بعد شرائها لشركة NexGen في عام 1996، أوفر حظاً في تحقيق النجاح.






تأثيرات MMX








قدّمت إنتل، عام 1997، معالج بينتيوم مع امتدادات MMX (مختصر ناتج من عبارة MultiMedia eXtensions)، وهي عبارة عن مجموعة مؤلفة من 57 تعليمة إضافية، مصمّمة لتحسين إمكانات التعامل مع الملتيميديا في معالج بينتيوم. وتركّز هذه التعليمات على التنفيذ المتوازي (parallel execution)، وتوظّف تقنية تسمى "تعليمة واحدة وبيانات متعددة" (single instruction, multiple data, SIMD) في عملها. ويمكن في تقنية SIMD، لتعليمة واحدة، العمل على أكثر من قطعة واحدة من البيانات، في الوقت ذاته، مما يمكّن التعليمة من إعطاء النتائج بشكل أسرع. لكن هذا الأمر لم يكن التغيير الوحيد الذي طرأ على معالجات بينتيوم MMX. فقد ازدادت مراحل خطوط المعالجة إلى ست مراحل، بدلاً من خمس، وازدادت سعة كلا قسمي ذاكرة كاش الرئيسية L1، من 8 إلى 16 كيلوبايت، كما تم تحسين تقنية توقع التفرّعات.








معالج بينتيوم برو ومعالج بينتيوم الثاني






قبل عام من طرح بينتيوم MMX في الأسواق، أعلنت إنتل عن خليفة لمعالج بينتيوم، وهو معالج بينتيوم برو. وقد تم تحسين معالج بينتيوم برو بالمقارنة مع بينتيوم، من عدة جوانب، وقدم طريقة جديدة لتنفيذ التعليمات، ويعتبر في جوهره معالج ريسك. تتألف كل تعليمة x86 في طاقم CISC، في المعالج بينتيوم برو، من مجموعة تعليمات ريسك صغيرة، التي تعتبر أبسط، وبالتالي أسرع تنفيذاً (تسمى التعليمات المختلطة بتعليمات RISC86). ورفع بينتيوم برو عدد مراحل خطوط المعالجة، من خمس مراحل إلى 14 مرحلة، مع استخدام ثلاثة خطوط، بدلاً من خطين، لتحقيق سرعة تنفيذ أكبر بكثير. وبالإضافة لذلك، يمكن لأربعة معالجات بينتيوم برو العمل معاً في جهاز واحد، وهذا ما يمثّل ضعف إمكانيات نظم بينتيوم.

سبّب معالج بينتيوم برو، باحتوائه على 5.5 مليون ترانزستور، بعض القلق في مجال تبديد الحرارة، لكن انخفاض حجم الترانزستورات، ساعد على إبقاء المشكلة ضمن حدود السيطرة. ولسوء الحظ، فإن المعالج بينتيوم برو لا ينفّذ بعض تعليمات العيار 16 بت بفعالية (وكانت مجلة PC Magazine الأمريكية أول من اكتشف ذلك)، ولذلك لم يكن أداؤه أفضل من أداء معالج بينتيوم مواز له في السرعة، في ظل ويندوز95، بل أن أداءه كان أردأ في ظل ويندوز 3.1.

تكمن إحدى التغييرات المهمة التي طرأت على معالج بينتيوم برو، بالمقارنة مع معالج بينتيوم، في احتوائه على ذاكرة كاش ثانوية L2 مبيتة بسعة 256 كيلوبايت، بالإضافة إلى ذاكرات كاش الرئيسية L1 سعة 16 كيلوبايت. وتمكّنت هذه الميزة من تقديم تحسين واضح في السرعة، لكنها تسببت في الوقت ذاته بزيادة كلفة تصنيع الرقاقة، وكانت سبباً في تطوير معالج بينتيوم الثاني، إلى حد ما.

ضاعفت إنتل، في معالج بينتيوم الثاني (Pentium II)، ذاكرة كاش L1 إلى 32 كيلوبايت، واستخدمت ذاكرة كاش ثانوية L2 أكبر، مقدارها 512 كيلوبايت، وناقلاً خاصاً بها، يعمل بنصف سرعة المعالج. وكانت النتيجة الحصول على معالج أرخص، لكنه لم يكن بسرعة معالج بينتيوم برو الموازي له في سرعة الساعة. ويشغّل المعالج بينتيوم الثاني العديد من برامج اليوم بشكل أسرع من معالج بينتيوم برو، لأن سرعة الساعة وصلت إلى قيم أعلى بكثير من 200 ميجاهرتز، التي يعمل عليها معالج بينتيوم برو (وصلت السرعة إلى 450 ميجاهرتز)، ويعمل مع ناقل بسرعة 100 ميجاهرتز، لأول مرة.

عملت شركتا AMD وسايركس جاهدتين للبقاء في الأسواق. فأطلقت AMD المعالج K6 عام 1997، حيث قدّمت منافساً منخفض التكلفة لمعالج بينتيوم برو، ومعالج بينتيوم MMX، ومعالج بينتيوم الثاني. يعمل المعالج K6، مثل بينتيوم MMX، على توتر مزدوج، يسمى "توتر السكة المنشقة" (split-rail voltage)، يكون فيه التوتر الخارجي للمعالج أعلى من توتره الداخلي. وبشكل عام، يعمل التوتر الخارجي على 3.3 فولط، ويعمل التوتر الداخلي، في تصميم 0.25 ميكرون، على توتر يصل إلى 2.2 فولط فقط. ويقدّم المعالج K6 ذاكرة كاش L1 سعة 64 كيلوبايت، ومجالاً كاملاً لتعليمات MMX، وجدولاً أكبر (8192 مدخلاً) لتوقع التفرعات، على مستويين، وسبع وحدات تنفيذ متواز، وهي أكثر من أي معالج منافس. ويعتبر هذا المعالج، مثل سابقه K5، متوافقاً مع تصاميم إنتل. ويتوافر المعالج K6، حتى كتابة هذه السطور، بسرعات تصل إلى 300 ميجاهرتز.

طرحت سايركس معالجها 6x86MX، أواخر العام 1997. ويحتوي المعالج 6x86MX، والمعالج الأحدث والأسرع منه M II، على تصميم فائق التدرج (superscalar)، بخطي معالجة مستقلين، وعلى 64 كيلوبايت من ذاكرة كاش L1 (مثل المعالج K6)، وعلى توقع تفرّعات متعدد المستويات (على الرغم من أن الرقاقة تحتوي على 512 مدخلاً فقط). وخلافاً لمعالج بينتيوم الثاني ومعالج K6، فإن المعالج M II لا يحتوي على نواة ريسك، لكن نظراً لأن هذا الأمر لم يؤثر على سرعته، فإنه لا يعتبر مهماً. وبالإضافة إلى ذاكرة كاش L1، فإن المعالج M II يمتاز باحتوائه على ذاكرة كاش L1 إضافية، مقدارها 256 بايت، مصممة لجعل ذاكرة كاش L1 الأصلية أكثر فعالية. ويشق المعالج M II طريقه بشكل جيد في أسواق الكمبيوترات الشخصية منخفضة السعر، على الرغم من أن أداءه عند سرعة 300 ميجاهرتز، يرشحه للاستخدام في أسواق الكمبيوترات المتقدمة أيضاً.

معالج موتورولا ومعالج باور بي سي

على الرغم من تركيز مجلتنا على كمبيوترات منصة Wintel (أي الأجهزة التي تحتوي على معالجات إنتل، أو المعالجات المتوافقة معها، والتي تعمل في ظل نظم تشغيل ويندوز)، لكن عالم الكمبيوتر الشخصي لا يقف عند الثنائي ويندوز وإنتل. فمعالجات شركة موتورولا هي القلب النابض لكمبيوترات ماكنتوش، منذ ظهورها، كما أن معالجات SPARC تعتبر لب محطات عمل يونيكس، من شركة صن، بالإضافة إلى أنهامستخدمة في مجالات أخرى. وهاتان عائلتان فقط، من عائلات المعالجات الميكروية العديدة. وسننظر في هذا المقال إلى المعالجات التي شكّلت محور أجهزة ماكنتوش.

تضمن جهاز ماكنتوش الأول، الذي طرح في الأسواق عام 1984، معالج موتورولا 68000. ويقدّم هذا المعالج (الذي ظهر في عام 1980)، حوسبة من العيار 32 بت داخلياً، لكن ناقل البيانات فيه كان من عيار 16 بت، وناقل الذاكرة من عيار 24 بت. ولاقى معالج موتورولا 68000 رواجاً كبيراً، ولم يقتصر استخدامه على أجهزة ماكنتوش، بل استخدم أيضاً في كمبيوترات Commodore Amiga (المعروفة أصلاً باسم Amiga Lorraine)، وكمبيوترات Atari ST، بالإضافة إلى بعض محطات يونيكس الأولى. ويمتاز هذا المعالج باحتوائه على خط معالجة (pipeline) بمرحلتين، وقابلية توسع، مبيتة فيه، لعمليات الفاصلة العائمة. وفي الواقع، فإن المعالج لم يدعم حسابات الفاصلة العائمة، حتى ظهور المعالج 68040 نهاية عام 1990، لكن من الواضح أن الرقاقة كانت مصممة مع أخذ الاحتياجات المستقبلية بعين الاعتبار.

وجدت معالجات موتورولا مستقبلها من خلال الإصدارات 68010، و68020، و68030، و68040، و68050، و68060. وقدّم المعالج 68010 دعماً للذاكرة الافتراضية (virtual memory)، لكنه بقي من الجوانب الأخرى مثل المعالج 68000. وقدّم المعالج 68020 أول تغيير رئيسي، عن طريق رفع عيارات نواقل البيانات والذاكرة إلى 32 بت. وقدّم هذا المعالج خط معالجة بثلاث مراحل، وكمية صغيرة (256 بايت) من ذاكرة كاش البيانات. ثم جاء المعالج 68030، بسرعة 20 ميجاهرتز، عام 1987. وقدّم المعالج 68030 ذاكرات كاش منفصلة لكل من البيانات والتعليمات، وتضمّن وحدة إحالة للذاكرة (memory mapping unit, MMU) مبيتة في الرقاقة. وبعد ثلاث سنوات، تم شحن المعالج 68040، بذاكرات كاش سعتها 4 كيلوبايت لكل من البيانات والتعليمات، وخط معالجة بست مراحل، ووحدة حسابات فاصلة عائمة متوافقة مع معالج موتورولا 68881. وكان 68040 أول معالج من موتورولا مبني بمعمارية هارفارد (Harvard architecture)، التي تكون فيها نواقل البيانات والبرامج منفصلة عن بعضها البعض، للحصول على تنفيذ أسرع.

طغت في السنوات الأخيرة، كمبيوترات ماكنتوش المبنية على معالجات باور بي سي (PowerPC)، على كمبيوترات ماكنتوش المبنية على معالجات 680x0. صُمم المعالج باور بي سي، الذي تم تطويره بشكل مشترك من قبل IBM وموتورولا، بتقنية ريسك (RISC)، بشكل كامل. وتمكّن أول معالج باور بي سي، وهو PowerPC 601، من تنفيذ ثلاث تعليمات خلال دورة ساعة واحدة، وعنونة الذاكرة بعيار 32 بت، وعنونة الذاكرة الافتراضية بعيار 52 بت.

واستمر خط إنتاج معالجات باور بي سي، من خلال الإصدارات 602، و603، و603e، و604، و620، وحتى المعالج 750 (المعروف أكثر باسم G3). والمعالج G3، هو أكثر معالجات PowerPC شهرة، بالطبع، لأنه نجم الإعلانات التلفزيونية، التي يحاكي فيها بسخرية إعلانات معالجات بينتيوم MMX الراقصة. واعتمدت شركة آبل على معالج G3 لهزيمة بينتيوم، حيث ركّزت معظم دعاياتها بشأن تفوّق أداء معالجات G3، على أداء معالجات بينتيوم الثاني، الموازية لها في السرعة، بل والأسرع منها أيضاً. وعلى سبيل المثال، فإن اختبارات المعالج G3 ذو السرعة 266 ميجاهرتز، تعطي أداء أسرع في جميع المجالات، ابتداءً من عمليات الفاصلة العائمة، وانتهاءً بأداء الرسوميات، على أداء معالج بينتيوم الثاني، ذو السرعة 300 ميجاهرتز، أو معالج بينتيوم برو. ويعود جزء من فروق الأداء إلى سعة ذاكرة كاش L1 في معالج G3، التي تبلغ 64 كيلوبايت (مقارنة مع 32 في معالجات بينتيوم الثاني). بينما يعود الجزء الأكبر إلى تصميم "الكل في واحد" الذي بنيت عليه نظم G3، والذي يعتمد على بناء جميع العناصر (بما في ذلك عنصر الرسوميات المبني على بطاقة 3D Rage II، من شركة ATI) ضمن اللوحة-الأم.

يعود أحد أهم أسباب السرعة العالية لمعالج G3، إلى احتوائه على ذاكرة كاش جانبية (backside cache). فمعالج بينتيوم برو يحتوي على ذاكرة كاش L2 مبنية ضمن رقاقة المعالج، وبشكل مشابه، فإن المعالج G3 يتجاوز ناقل النظام، ويستخدم ناقلاً خاصاً للتعامل مع ذاكرة كاش L2، وبنيت ذاكرة كاش L2 ضمن تصميم المعالج مباشرة. وتسمح هذه الطريقة للمعالج بالوصول إلى ذاكرة كاش الثانوية، بشكل أسرع بكثير من وصوله إليها عبر ناقل النظام. ونحصل نتيجة ذلك، على ربح كبير في السرعة التي يمكن أن ينفّذ فيها المعالج G3 التعليمات الموكلة له. لكن تصميم ريسك الذي يعتمد عليه معالج باور بي سي، يعتبر جزءاً من أسباب زيادة أداء هذا المعالج، لأن التصميم الأبسط للرقاقة يقود بالضرورة إلى تنفيذ أسرع للتعليمات. وسيبقى الأمر منوطاً بالمستقبل، لنعرف فيما إذا كانت معالجات باور بي سي ستبقى متفوقة على عائلات المعالجات الأخرى، مع انتقال النظم المبنية على معالجات إنتل إلى الجيل التالي. ويبقى الفارق بين أداء هذين النوعين من المعالجات، في الوقت الحالي، أمراً واقعاً.




الخلاصة






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


تم بحمد الله
منقووووول