آي بي إم 801
كان 801 تصميمًا تجريبيًا لوحدة المعالجة المركزية (CPU) طورته شركة IBM خلال سبعينيات القرن العشرين. ويعتبر أول تصميم حديث لـ RISC ، حيث يعتمد على سجلات المعالج لجميع العمليات الحسابية ويزيل العديد من أوضاع العنونة المتنوعة الموجودة في تصميمات CISC . تم تطويره في الأصل كمعالج لمحول الهاتف ، وتم استخدامه لاحقًا كأساس لجهاز كمبيوتر صغير وعدد من المنتجات لخط الحاسب الآلي الرئيسي . كان التصميم الأولي عبارة عن معالج 24 بت ؛ والذي سرعان ما تم استبداله بتنفيذات 32 بت لنفس المفاهيم وتم استخدام 801 الأصلي 24 بت فقط في أوائل الثمانينيات.
كان لـ 801 تأثير كبير في سوق الكمبيوتر. [ بحاجة لمصدر ] بفضل كميات هائلة من بيانات الأداء، تمكنت IBM من إثبات أن التصميم البسيط كان قادرًا على التفوق بسهولة حتى على أقوى تصميمات وحدة المعالجة المركزية الكلاسيكية، وفي الوقت نفسه إنتاج كود آلي كان أكبر قليلاً فقط من تعليمات CISC المحسنة بشكل كبير. أدى تطبيق نفس هذه التقنيات حتى على المعالجات الموجودة مثل System/370 إلى مضاعفة أداء هذه الأنظمة أيضًا. أظهر هذا قيمة مفهوم RISC، وكانت جميع أنظمة IBM المستقبلية مبنية على المبادئ التي تم تطويرها أثناء مشروع 801.
حصل جون كوك على العديد من الجوائز والميداليات تقديراً لعمله على الكمبيوتر 801 ، بما في ذلك جائزة تورينج في عام 1987، والميدالية الوطنية للتكنولوجيا في عام 1991، والميدالية الوطنية للعلوم في عام 1994.
تاريخ
المفهوم الأصلي
في عام 1974، بدأت شركة آي بي إم في دراسة إمكانية إنشاء مفتاح هاتف للتعامل مع مليون مكالمة في الساعة، أو حوالي 300 مكالمة في الثانية. وقد حسبوا أن كل مكالمة ستتطلب 20000 تعليمة لإكمالها، وعندما تمت إضافة تكاليف التوقيت والاعتبارات الأخرى، فإن مثل هذه الآلة تتطلب أداءً يبلغ حوالي 12 مليون في الثانية. [1] وهذا يتطلب تقدمًا كبيرًا في الأداء؛ حيث تقدم آلتهم الحالية المتطورة، طراز آي بي إم سيستم/370 موديل 168 في أواخر عام 1972، حوالي 3 مليون في الثانية. [2]
صممت المجموعة العاملة على هذا المشروع في مركز أبحاث توماس جيه واتسون ، بما في ذلك جون كوك ، معالجًا لهذا الغرض. وللوصول إلى الأداء المطلوب، نظروا في نوع العمليات التي تتطلبها مثل هذه الآلة وأزالوا أي عمليات غير مناسبة. أدى هذا إلى إزالة وحدة الفاصلة العائمة على سبيل المثال، والتي لن تكون هناك حاجة إليها في هذا التطبيق. والأمر الأكثر أهمية هو أنهم أزالوا أيضًا العديد من التعليمات التي تعمل على البيانات في الذاكرة الرئيسية وتركوا فقط تلك التعليمات التي تعمل على سجلات المعالج الداخلية ، حيث كانت أسرع بكثير في الاستخدام ويمكن كتابة الكود البسيط في مفتاح الهاتف لاستخدام هذه الأنواع من التعليمات فقط. كانت نتيجة هذا العمل تصميمًا مفاهيميًا لمعالج مبسط بالأداء المطلوب. [1]
تم إلغاء مشروع مفتاح الهاتف في عام 1975، لكن الفريق أحرز تقدمًا كبيرًا في المفهوم وفي أكتوبر قررت شركة IBM الاستمرار فيه كتصميم للأغراض العامة. مع عدم وجود مشروع واضح لربطه به، قرر الفريق تسميته "801" بعد المبنى الذي عملوا فيه. بالنسبة للدور العام، بدأ الفريق في النظر في البرامج الواقعية التي سيتم تشغيلها على جهاز كمبيوتر صغير نموذجي . جمعت شركة IBM كميات هائلة من البيانات الإحصائية حول أداء أحمال العمل في العالم الحقيقي على أجهزتها وأظهرت هذه البيانات أن أكثر من نصف الوقت في البرنامج النموذجي يُقضى في أداء خمس تعليمات فقط: تحميل القيمة من الذاكرة، وتخزين القيمة في الذاكرة، والتفرع، ومقارنة الأرقام ذات النقطة الثابتة، وإضافة أرقام ذات النقطة الثابتة. يشير هذا إلى أن نفس تصميم المعالج المبسّط سيعمل بشكل جيد لجهاز كمبيوتر صغير للأغراض العامة مثل مفتاح للأغراض الخاصة. [3]
الأساس المنطقي لاستخدام التعليمات البرمجية الدقيقة
كان هذا الاستنتاج مخالفًا تمامًا لتصميم المعالج المعاصر، والذي كان قائمًا على مفهوم استخدام التعليمات البرمجية الدقيقة . كانت شركة آي بي إم من أوائل الشركات التي استخدمت هذه التقنية على نطاق واسع كجزء من سلسلة System/360 . جاءت معالجات 360 و370 في مجموعة متنوعة من مستويات الأداء التي تعمل جميعها بنفس تعليمات لغة الآلة . على الأجهزة المتطورة، تم تنفيذ العديد من هذه التعليمات مباشرة في الأجهزة، مثل وحدة الفاصلة العائمة، بينما يمكن للأجهزة منخفضة الأداء بدلاً من ذلك محاكاة هذه التعليمات باستخدام تسلسل من التعليمات الأخرى المشفرة في التعليمات البرمجية الدقيقة. سمح هذا بتشغيل واجهة ثنائية لتطبيق واحد عبر التشكيلة بأكملها وسمح للعملاء بالثقة في أنه إذا كانت هناك حاجة إلى المزيد من الأداء، فيمكنهم الانتقال إلى جهاز أسرع دون أي تغييرات أخرى. [4]
سمح الكود الدقيق للمعالج البسيط بتقديم العديد من التعليمات، والتي استخدمها المصممون لتنفيذ مجموعة واسعة من أوضاع التوجيه . على سبيل المثال، قد تحتوي تعليمات مثل ADDعلى عشرات الإصدارات، واحدة تضيف رقمين في السجلات الداخلية، وأخرى تضيف سجلاً إلى قيمة في الذاكرة، وأخرى تضيف قيمتين من الذاكرة، وما إلى ذلك. سمح هذا للمبرمج باختيار الاختلاف الدقيق الذي يحتاجه لأي مهمة معينة. سيقرأ المعالج هذه التعليمات ويستخدم الكود الدقيق لتقسيمها إلى سلسلة من التعليمات الداخلية. على سبيل المثال، يمكن تنفيذ إضافة رقمين في الذاكرة عن طريق تحميل هذين الرقمين في السجلات وإضافتهما ثم تخزين المجموع مرة أخرى في الذاكرة. [3] أصبحت فكرة تقديم جميع أوضاع التوجيه الممكنة لجميع التعليمات هدفًا لمصممي المعالج، وأصبح المفهوم معروفًا باسم مجموعة التعليمات المتعامدة .
لاحظ فريق 801 تأثيرًا جانبيًا لهذا المفهوم؛ فعند مواجهة عدد كبير من الإصدارات المحتملة لتعليمة معينة، كان مؤلفو المترجم عادةً ما يختارون إصدارًا واحدًا. وكان هذا عادةً هو الإصدار الذي تم تنفيذه في الأجهزة على الأجهزة منخفضة المستوى. وكان هذا يضمن تشغيل الكود الآلي الذي يولده المترجم بأسرع ما يمكن على التشكيلة بأكملها. وفي حين أن استخدام إصدارات أخرى من التعليمات قد يعمل بشكل أسرع على جهاز ينفذها في الأجهزة، فإن تعقيد معرفة الإصدار الذي يجب اختياره من قائمة متغيرة باستمرار من الأجهزة جعل هذا الأمر غير جذاب للغاية، وتجاهل مؤلفو المترجم هذه الاحتمالات إلى حد كبير. [3]
ونتيجة لذلك، لم يتم استخدام أغلب التعليمات المتاحة في مجموعة التعليمات في البرامج المترجمة. وهنا حقق الفريق الإنجاز الرئيسي لمشروع 801:
إن فرض التعليمات البرمجية الدقيقة بين الكمبيوتر ومستخدميه يفرض تكلفة باهظة في تنفيذ التعليمات الأكثر تنفيذًا. [3]
يستغرق الكود الدقيق وقتًا غير صفري لفحص التعليمات قبل تنفيذها. سيؤدي نفس المعالج الأساسي مع إزالة الكود الدقيق إلى التخلص من هذه التكلفة الإضافية وتشغيل هذه التعليمات بشكل أسرع. نظرًا لأن الكود الدقيق كان يشغل في الأساس برامج فرعية صغيرة مخصصة لتنفيذ أجهزة معين، فقد كان في النهاية يؤدي نفس المهمة الأساسية التي كان يقوم بها المترجم، وهو تنفيذ التعليمات ذات المستوى الأعلى كتسلسل من التعليمات الخاصة بالجهاز. يمكن أن يؤدي إزالة الكود الدقيق وتنفيذه في المترجم إلى جهاز أسرع. [3]
كان أحد المخاوف هو أن البرامج المكتوبة لمثل هذه الآلة ستشغل مساحة أكبر من الذاكرة؛ فبعض المهام التي يمكن إنجازها بتعليمات واحدة على 370 يجب التعبير عنها بتعليمات متعددة على 801. على سبيل المثال، تتطلب إضافة رقمين من الذاكرة تعليمتين للتحميل إلى السجل، وإضافة سجل إلى سجل، ثم تخزين إلى الذاكرة. وقد يؤدي هذا إلى إبطاء النظام بشكل عام إذا كان عليه قضاء وقت أطول في قراءة التعليمات من الذاكرة مقارنة بالوقت الذي استغرقه فك تشفيرها سابقًا. ومع استمرارهم في العمل على التصميم وتحسين برامج التجميع الخاصة بهم، وجدوا أن طول البرنامج الإجمالي استمر في الانخفاض، حتى أصبح في النهاية بنفس طول البرامج المكتوبة لـ 370 تقريبًا. [5]
التنفيذات الأولى
كانت الهندسة المعمارية المقترحة في البداية عبارة عن آلة بها ستة عشر سجلاً مكونًا من 24 بت وبدون ذاكرة افتراضية . [6] [7] وقد استخدمت تنسيقًا ثنائي المتعاملات في التعليمات، بحيث كانت التعليمات بشكل عام من النموذج A = A + B، على عكس تنسيق الثلاثة متعاملات، A = B + C. كانت وحدة المعالجة المركزية الناتجة جاهزة للتشغيل بحلول صيف عام 1980 وتم تنفيذها باستخدام تقنية المكونات المنفصلة Motorola MECL-10K [8] على لوحات مخصصة كبيرة ملفوفة بالأسلاك. تم ضبط وحدة المعالجة المركزية على 66 دورة نانوثانية (حوالي 15.15 ميجا هرتز) ويمكنها الحساب بسرعة عالية تبلغ حوالي 15 مليون في الثانية .
تم استخدام بنية 801 في مجموعة متنوعة من أجهزة IBM، بما في ذلك وحدات التحكم في القنوات لأجهزة الكمبيوتر المركزية S/370 (مثل IBM 3090 )، [9] : 377 وأجهزة الشبكات المختلفة، وكوحدة تنفيذ ميكروكود عمودية في معالجات 9373 و9375 من عائلة أجهزة الكمبيوتر المركزية IBM 9370. [10] [11] كانت النسخة الأصلية من بنية 801 هي الأساس لبنية المعالج الدقيق IBM ROMP [9] : 378 المستخدم في كمبيوتر محطة عمل IBM RT PC والعديد من أجهزة الكمبيوتر التجريبية من IBM Research . كان من المفترض أن يكون المشتق من بنية 801 مع عنونة 32 بت يسمى Iliad بمثابة المعالج الأساسي لمشروع نظام Fort Knox متوسط المدى غير الناجح. [12]
التعديلات اللاحقة
نظرًا لأنه تم تصميمه في الأصل لنظام ذي وظائف محدودة، فقد افتقر تصميم 801 إلى عدد من الميزات التي شوهدت في الأجهزة الأكبر حجمًا. ومن بين هذه الميزات البارزة عدم وجود دعم للذاكرة الافتراضية ، والتي لم تكن ضرورية لدور المتحكم وتم تنفيذها في البرامج على أنظمة 801 المبكرة التي احتاجت إليها. للاستخدام الأكثر انتشارًا، كان دعم الأجهزة ميزة ضرورية. بالإضافة إلى ذلك، بحلول الثمانينيات، كان عالم الكمبيوتر ككل يتجه نحو أنظمة 32 بت ، وكانت هناك رغبة في القيام بنفس الشيء مع 801. [13]
كان للانتقال إلى تنسيق 32 بت ميزة كبيرة أخرى. في الممارسة العملية، وجد أن تنسيق المتغيرين كان من الصعب استخدامه في التعليمات البرمجية الرياضية النموذجية. من الناحية المثالية، سيبقى المتغيران المدخلان في السجلات حيث يمكن إعادة استخدامهما في العمليات اللاحقة. في تنسيق المتغيرين، يتم استبدال إحدى القيمتين بالنتيجة، وغالبًا ما كان من الضروري إعادة تحميل إحدى القيم من الذاكرة. من خلال الانتقال إلى تنسيق 32 بت، سمحت البتات الإضافية في كلمات التعليمات بتحديد سجل إضافي، بحيث يمكن توجيه ناتج مثل هذه العمليات إلى سجل منفصل. سمحت كلمة التعليمات الأكبر أيضًا بزيادة عدد السجلات من ستة عشر إلى اثنين وثلاثين، وهو التغيير الذي كان واضحًا من فحص التعليمات البرمجية 801. على الرغم من توسيع كلمات التعليمات من 24 إلى 32 بت، لم تنمو البرامج بنسبة 33٪ المقابلة بسبب التحميلات والحفظ المتجنبة بسبب هذين التغييرين. [13]
تتضمن الإضافات المرغوبة الأخرى تعليمات للعمل مع بيانات السلسلة التي تم ترميزها بتنسيق "مضغوط" مع العديد من الأحرف في كلمة ذاكرة واحدة، وإضافات للعمل مع الأعداد العشرية المشفرة ثنائيًا ، بما في ذلك أداة الجمع التي يمكن أن تحمل أرقامًا عشرية مكونة من أربعة بتات. [13]
عندما تم تشغيل الإصدار الجديد من 801 كجهاز محاكاة على 370، فوجئ الفريق باكتشاف أن الكود المجمّع إلى 801 والمُشغّل في جهاز المحاكاة كان يعمل غالبًا بشكل أسرع من نفس الكود المصدر المجمّع مباشرةً إلى كود آلة 370 باستخدام مُجمّع PL/I الخاص بـ 370. [14] عندما نقلوا لغتهم التجريبية "PL.8" إلى 370 وقاموا بتجميع التطبيقات باستخدامها، عملت هذه التطبيقات بسرعة تصل إلى ثلاثة أضعاف سرعة إصدارات PL/I. كان هذا بسبب قيام المُجمّع باتخاذ قرارات شبيهة بـ RISC حول كيفية استخدام الكود المُولّد لسجلات المعالج، وبالتالي تحسين أكبر عدد ممكن من عمليات الوصول إلى الذاكرة. كانت هذه القرارات باهظة الثمن على 370 مثل 801، ولكن هذه التكلفة كانت مخفية عادةً من خلال بساطة سطر واحد من كود CISC. كان مُجمّع PL.8 أكثر عدوانية في تجنب الأحمال والحفظ، مما أدى إلى أداء أعلى حتى على معالج CISC. [14]
مشاريع الفهد والنمر وأمريكا
في أوائل الثمانينيات، تم دمج الدروس المستفادة من 801 مع تلك المستفادة من مشروع IBM Advanced Computer Systems ، مما أدى إلى معالج تجريبي يسمى "Cheetah". كان Cheetah معالجًا فائقًا ثنائي الاتجاه ، والذي تطور إلى معالج يسمى "Panther" في عام 1985، وأخيرًا إلى تصميم فائق رباعي الاتجاه يسمى "America" في عام 1986. [15] كانت هذه مجموعة معالج مكونة من ثلاث شرائح تتضمن معالج تعليمات يقوم بجلب التعليمات وفك شفرتها، ومعالج ثابت النقطة يتقاسم المهمة مع معالج التعليمات، ومعالج فاصل عائم لتلك الأنظمة التي تتطلب ذلك. تم تصميم التصميم النهائي بواسطة فريق 801، وتم إرساله إلى مكتب IBM في أوستن في عام 1986، حيث تم تطويره إلى نظام IBM RS / 6000. كان RS / 6000 الذي يعمل بسرعة 25 ميجا هرتز أحد أسرع الأجهزة في عصره. لقد تفوقت على أجهزة RISC الأخرى بمقدار مرتين إلى ثلاث مرات في الاختبارات الشائعة، وتفوقت بسهولة على أنظمة CISC القديمة. [10]
بعد إطلاق RS/6000، وجهت الشركة اهتمامها إلى إصدار من مفاهيم 801 التي يمكن تصنيعها بكفاءة على مستويات مختلفة. وكانت النتيجة هي بنية مجموعة تعليمات IBM POWER وفرع PowerPC .
تعرُّف
حصل جون كوك على العديد من الجوائز والميداليات لعمله على 801 :
- 1985: جائزة إيكرت-ماوتشلي [16]
- 1987: جائزة AM Turing [17]
- 1989: جائزة رواد الكمبيوتر [18]
- 1991: الميدالية الوطنية للتكنولوجيا [19]
- 1994: وسام جون فون نيومان من IEEE [20]
- 1994: الميدالية الوطنية للعلوم [19]
- 2000: ميدالية بنيامين فرانكلين (معهد فرانكلين) [21]
يرى مايكل جيه فلين أن 801 هو أول RISC. [22]
مراجع
الاستشهادات
- ^ أب كوك وماركستين 1990، ص. 4.
- ^ سافارد، جون. "حول 370/165 و360/85".
- ^ أ ب ج كوك وماركستين 1990، ص 5.
- ^ ساك، هارالد (7 أبريل 2016). "نظام IBM/360 واستخدام الميكروكود". SciHub .
- ^ كوك وماركستين 1990، ص 6-7.
- ^ "الكمبيوتر الصغير 801 - نظرة عامة" (PDF) . 8 أكتوبر 1976. ص 9.
- ^ "مبادئ تشغيل النظام 801" (PDF) . 16 يناير 1976.
- ^ رادين 1982.
- ^ ab Dewar, Robert BK; Smosna, Matthew (1990). المعالجات الدقيقة: وجهة نظر المبرمج . McGraw-Hill.
- ^ أب كوك وماركستين 1990، ص. 9.
- ^ ميتشل، جيمس (سبتمبر 1988). "تنفيذ بنية الحاسوب المركزي في معالج 9370". نشرة ACM SIGMICRO . 19 (3): 3-10. doi :10.1145/62185.62186. ISSN 1050-916X. S2CID 14602753.
- ^ فرانك ج. سولتيس (1997). داخل AS/400، الطبعة الثانية. دار نشر ديوك. رقم ISBN 978-1882419661.
- ^ abc Cocke & Markstein 1990، ص 7.
- ^ أب كوك وماركستين 1990، ص. 8.
- ^ سموثرمان، مارك (2005). "مسح المعالجات الفائقة التسارع". تصميم المعالج الحديث: أساسيات المعالجات الفائقة التسارع . بقلم شين، جون بول؛ ليباستي، ميكو إتش ماكجرو هيل.
- ^ "جون كوك". awards.acm.org . تم الاسترجاع في 2022-08-29 .
- ^ "جون كوك - الحائز على جائزة إيه إم تورينج". amturing.acm.org . تم الاسترجاع في 2022-08-29 .
- ^ "جائزة رائدات الحاسوب من جمعية IEEE Computer Society Women of ENIAC". 9 أبريل 2018. تم الاسترجاع في 2022-08-29 .
- ^ ab "NSTMF". NSTMF . تم الاسترجاع في 2020-05-12 .
- ^ "الحاصلون على ميدالية جون فون نيومان من معهد مهندسي الكهرباء والإلكترونيات " (PDF) . معهد مهندسي الكهرباء والإلكترونيات (IEEE) .
- ^ "جون كوك". معهد فرانكلين . 2014-01-10 . تم الاسترجاع في 2022-08-29 .
- ^ فلين، مايكل ج. (1995). هندسة الكمبيوتر: تصميم المعالجات المتوازية والمتسلسلة . جونز وبارتليت ليرنينج. ص 54-56. ISBN 0867202041.
فهرس
- كوك، جون؛ ماركشتاين، فيكتوريا (يناير 1990). "تطور تقنية RISC في IBM" (ملف PDF) . مجلة IBM للبحث والتطوير . 34 (1): 4-11. doi :10.1147/rd.341.0004.
- كوك، جون (مارس 1988). "البحث عن الأداء في المعالجات العلمية". محاضرات جائزة تورينج التابعة لجمعية الحوسبة الآلية . المجلد 31. ص 252. doi : 10.1145/1283920.1283945 . ISBN 978-1-4503-1049-9.
- رادين، ج. (1982). "الكمبيوتر الصغير 801". وقائع الندوة الدولية الأولى حول الدعم المعماري للغات البرمجة وأنظمة التشغيل . ASPLOS -I. ص 39-47. doi :10.1145/800050.801824. ISBN 0-89791-066-4.
قراءة إضافية
- "تغيير بنية الكمبيوتر هو وسيلة لزيادة الإنتاجية، يقترح باحثو IBM". إلكترونيات . المجلد 49، العدد 25. 23 ديسمبر 1976. ص 0-31.
- McLellan, V. (أكتوبر 1979). "IBM Mini: انطلاقة جذرية". Datamation . المجلد 25، العدد 11. ص 53-55.
- ديوار، روبرت بي كيه؛ سموسنا، ماثيو (1990). المعالجات الدقيقة: وجهة نظر المبرمج . ماكجرو هيل. ص 258-264.
- تاباك، دانييل (1987). هندسة RISC . مطبعة دراسات الأبحاث. ص 69-72.
روابط خارجية
- الحاسوب الصغير 801 - نظرة عامة
- مبادئ تشغيل نظام IBM 801، الإصدار 2
- تعريف نظام الإدخال/الإخراج 801
- أرشيفات IBM: تاريخ موجز لـ RISC وIBM RS/6000 وIBM eServer pSeries في Wayback Machine (تم أرشفته في 2006-05-03)
