مشاركة: تشريح قلب الكمبيوتر
كيف "يفكّر" المعالج؟
الجزء الثاني
نتابع في هذه الجولة تشريح عمل المعالجات، عن طريق شرح طواقم التعليمات، ودورها في عمل المعالج.
تعرّفنا في الجزء الأول من المقالة على مكونات المعالج (راجع العدد السابق من المجلة)، وحان الوقت لنخوض في تعقيدات آلية عمله. وسنبدأ بشرح الدور المهم، الذي يلعبه طاقم التعليمات (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 ميجاهرتز.
تااااابع
مشاركة: تشريح قلب الكمبيوتر
أصدرت إنتل عام 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، ومنها إلى عائلة بينتيوم. وسنتفحص أيضاً، المعالجات المقلّدة لمعالجات إنتل، والمعالجات التي تقع خارج نطاق إنتل والكمبيوترات الشخصية.
تابع
مشاركة: تشريح قلب الكمبيوتر
الوضع الراهن للمعالجات
الجزء الثالث
نتابع في هذا الجزء تسليط الضوء على بقية عائلة معالجات إنتل، بدءاً من المعالج 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 ملايين ترانزستور، وتطلّبت جميعها مبدّدات حرارية، للتخلص من الحرارة الناتجة عن عمل المعالج.
مشاركة: تشريح قلب الكمبيوتر
واستفادت شركتا 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 التعليمات الموكلة له. لكن تصميم ريسك الذي يعتمد عليه معالج باور بي سي، يعتبر جزءاً من أسباب زيادة أداء هذا المعالج، لأن التصميم الأبسط للرقاقة يقود بالضرورة إلى تنفيذ أسرع للتعليمات. وسيبقى الأمر منوطاً بالمستقبل، لنعرف فيما إذا كانت معالجات باور بي سي ستبقى متفوقة على عائلات المعالجات الأخرى، مع انتقال النظم المبنية على معالجات إنتل إلى الجيل التالي. ويبقى الفارق بين أداء هذين النوعين من المعالجات، في الوقت الحالي، أمراً واقعاً.
الخلاصة
يبيّن تاريخ المعالجات الميكروية كيف تتفاعل التقنيات المختلفة، لتحقيق أداء أسرع، وخطوات أفضل. لكن، على الرغم من سرعة تطور تقنيات المعالجات، فإن التغييرات المستقبلية ستتم بوتيرة أسرع، وسيصبح استخدام الكمبيوتر أكثر تطلباً، وعلى المعالج أن يتحمل أعباء هذه المتطلبات. فالمعالج يمثل قلب صناعة الكمبيوتر بأكملها.
تم بحمد الله
منقووووول