ريكورسيف
كان معالج Rekursiv معالجًا حاسوبيًا صممه ديفيد إم. هارلاند في منتصف ثمانينيات القرن الماضي في قسم تابع لشركة Linn Products ، المتخصصة في تصنيع أجهزة الصوت عالية الدقة. وكان من بين البنى الحاسوبية القليلة المصممة لتطبيق مفاهيم البرمجة الكائنية مباشرةً في المكونات المادية، وهو شكل من أشكال بنية الحاسوب للغات البرمجة عالية المستوى . عمل Rekursiv مباشرةً على الكائنات بدلًا من البتات والنيبلات والبايتات والكلمات. استُخدمت الذاكرة الافتراضية كمخزن دائم للكائنات، وبشكل غير معتاد، دعمت مجموعة تعليمات المعالج التكرار (ومن هنا جاء الاسم).
بحلول الوقت الذي قدم فيه المشروع أول تطبيق له، كانت المعالجات الجديدة مثل Sun SPARC و Intel 486 قد تجاوزت أدائه، وتم التخلي عن التطوير في عام 1988.
تاريخ
بدأ مشروع Rekursiv كمحاولة لتحسين أنظمة التحكم في خطوط التجميع في مصانع شركة Linn في غلاسكو ، اسكتلندا . كانت خطوط الإنتاج مؤتمتة باستخدام مجموعة من أنظمة VAX-11 ، إلا أنها كانت بطيئة ويصعب برمجتها بالمرونة التي كان يطمح إليها مؤسس شركة Linn، إيفور تيفنبرون . وبحلول أوائل ثمانينيات القرن العشرين، اقتنع تيفنبرون بأن البرمجة كائنية التوجه ستوفر حلولاً لهذه المشاكل. [ 1 ]
في عام 1981، استعان تيفنبرون بعدد من المبرمجين لكتابة نسخة من لغة سمول توك لأنظمة فاكس، مستعيراً بعض قواعد اللغة من لغة ألغول . عُرف النظام باسم لينغو، وقد عمل، لكنه كان بطيئاً للغاية على منصة فاكس. وخلص تيفنبرون إلى أن حل مشكلة الأداء لا يكمن في تحسين اللغة على فاكس، بل في إنتاج وحدة معالجة مركزية جديدة كلياً مخصصة لتشغيل برامج الكائنات. [ 1 ]
في عام ١٩٨٤، أسس تيفنبرون شركة تابعة مملوكة بالكامل له، وهي شركة لين سمارت كومبيوتينغ، تحت إشراف البروفيسور ديفيد هارلاند من جامعة ستراثكلايد، ومن هنا انطلق مشروع ريكورسيف. ظهرت النسخة الأولى من النظام في عام ١٩٨٨. [ ١ ] تم إنتاج عدد محدود من لوحات VMEbus النموذجية، والتي سُميت هاديس ، وتضمنت هذه الرقائق الأربع بالإضافة إلى ٨٠ ميجابايت من ذاكرة الوصول العشوائي (RAM). كان الهدف من هذه اللوحات هو تثبيتها في نظام مضيف مثل محطة عمل صن-٣ . على الرغم من أن ريكورسيف لم يُطوَّر بالكامل ولم يحقق نجاحًا تجاريًا، فقد استُخدمت عدة لوحات هاديس في مشاريع بحثية أكاديمية في المملكة المتحدة . انتهى المطاف بآخر نسخة معروفة من حاسوب ريكورسيف في قاع قناة فورث وكلايد في غلاسكو. [ ٢ ]
بحسب منشورٍ لباحثٍ في جامعة ستراثكلايد، أثناء تطوير نظام ريكورسيف، كُتبت نسخةٌ جديدةٌ من لغة لينغو لنظام صن سبارك الذي ظهر في ذلك الوقت تقريبًا. كانت هذه النسخة تعمل بسرعةٍ مضاعفةٍ مقارنةً بجهاز ريكورسيف، مما جعل الجهد المبذول بلا جدوى. [ 3 ] بعد ذلك بفترةٍ، أُغلقت الشركة. [ أ ]
وصف
المفاهيم الأساسية
كان المفهوم الأساسي لمنصة Rekursiv هو توفير مخزن كائنات دائم مدعوم بالأجهزة، يقوم بكتابة حالة الذاكرة إلى القرص بشكل مستمر وغير مرئي دون تدخل من نظام التشغيل أو برنامج المستخدم. وقد وصفه أحد المراجعين بأنه "محرك قاعدة بيانات كائنات لإنشاء وإدارة الكائنات الدائمة". [ 5 ]
لضمان عمل هذا النظام بكفاءة معقولة أثناء تشغيل البرامج المعقدة، صُمم نظام Rekursiv لتمكين المبرمج من كتابة بنية مجموعة التعليمات (ISA) الخاصة به والمخصصة للغة البرمجة التي يستخدمها. وقد تم تخزين مجموعة تعليمات الشفرة المصغرة في ذاكرة الوصول العشوائي الثابتة (SRAM ). [ 6 ] لم تكن هناك بنية مجموعة تعليمات افتراضية، على الرغم من أن شركة Linn وفرت واحدة لتشغيل البرامج بلغة البرمجة C. [ 7 ]
إدارة الذاكرة
لم يُوفر النظام ما يُشابه عنوان الذاكرة للبرامج العاملة عليه، بل مُنحت الكائنات مُعرّفًا من 40 بت، قامت شريحة Objekt بتشفيره واستخدامه كمؤشر إلى الذاكرة الفعلية. [ 8 ] كما تولّت Objekt أيضًا ربط ذاكرة الكائنات بالقرص الصلب للتخزين الدائم، مُطبقةً نظام ذاكرة افتراضية . وللتعامل مع جمع البيانات المهملة ، قسّمت Objekt ذاكرة الوصول العشوائي الديناميكية (الذاكرة الرئيسية) إلى نصفين، مُستخدمةً أحدهما لإنشاء كائنات جديدة، ومُبقيةً الآخر غير مُستخدم. عندما يتطلب كائن جديد ذاكرةً أكبر من المُتاحة في الجزء المُستخدم، أوقفت Objekt النظام مؤقتًا، ونسخت أي كائن له مؤشر صالح إلى النصف غير المُستخدم من الذاكرة، ثم جعلت النصف غير المُستخدم سابقًا هو الجزء النشط. في حالات محدودية الذاكرة الشديدة، كانت Objekt تُحاول أولًا تخزين بعض الكائنات مؤقتًا على القرص، وإذا فشلت في توفير مساحة كافية، كانت تستخدم كلا نصفي الذاكرة. [ 9 ]
الكائنات عبارة عن هياكل مركبة تحتوي على قيم متعددة، تُنفذ في معظم الأنظمة كسلسلة من المؤشرات إلى مواقع الذاكرة التي تخزن هذه القيم. في لغة Rekursiv، تُستبدل العناوين بمعرفات كائنات مكونة من 40 بت، تشير إلى قسم من الذاكرة خصصه Objekt. تُضبط البتة الأكثر أهمية (MSB) في مؤشر الـ 40 بت على 1 إذا كانت القيمة مُعرّف كائن، أو على 0 إذا كانت قيمة ثنائية غير مُحددة النوع. استُخدمت القيمة الثنائية غير المُحددة النوع لتخزين بيانات كبيرة غير مُنسقة، مثل بيانات الصورة الرقمية، وكان استخدامها مقتصراً على الكائنات. [ 9 ]
في حالة الكائن الكامل، كان بالإمكان تبسيط العملية أكثر بتخزين الحقول القصيرة كقيم داخل المؤشر نفسه. وكان ذلك يُشار إليه بتعيين البت الأكثر أهمية الثاني إلى 0. في هذه الحالة، تشير البتات الخمس التالية إلى نوع مُحدد بواسطة بنية مجموعة تعليمات البرنامج، والذي قد يكون "عددًا صحيحًا" أو "جزءًا من سلسلة نصية". تُوضع القيمة الفعلية لهذا "الكائن المُختصر" في البتات الـ 32 السفلى من المؤشر. وقد سمح هذا بعرض هذه القيم البسيطة مباشرةً للمعالج دون الحاجة إلى تتبع مؤشر إلى الموقع الفعلي، مما وفر الذاكرة وحسّن الأداء. [ 9 ] [ ب ]
نظرًا لاستخدام أعلى بتين من مؤشر 40 بت كعلامات حالة، لم يتمكن برنامج Objekt من تحديد سوى 2 ^38 كائنًا إجمالًا. ولأن الكائنات كانت تُجمع بشكل مستمر بواسطة جامع البيانات المهملة، فقد تشير العديد من هذه القيم إلى كائنات غير موجودة، مما يعني أن النظام قد ينفد من المعرفات عند الاستخدام العملي. ولمعالجة هذه المشكلة، كانت صورة النظام بأكملها تُكتب دوريًا على القرص، وخلال هذه الفترة، يُعاد ترقيم جميع المؤشرات لتكون متسلسلة. [ 9 ]
الشفرة المصغرة
تم تخزين مجموعة تعليمات المعالج في منطقة مخصصة من ذاكرة الوصول العشوائي الثابتة (SRAM) تُعرف باسم "مخزن التحكم". وكان الوصول إليها يتم عبر ناقل مخصص ذي 16 بت، مُنظمًا على شكل 16384 كلمة، كل منها 128 بت. ويحتوي قسم "خريطة مخزن التحكم" المنفصل في ذاكرة الوصول العشوائي الثابتة على جدول مُرقم لنقاط الدخول إلى الإجراءات المُبرمجة بدقة، حيث يربط كل رمز عملية (opcode) ذي 10 بتات بأحد الكيانات البالغ عددها 2048 كيانًا. في المعالجات التقليدية، تُنفذ هذه الخريطة عادةً باستخدام منطق مُدمج في وحدة فك تشفير رمز العملية. [ 10 ]
يمكن أن تكون رموز العمليات جزءًا من الكائنات، وتُخزَّن بنفس طريقة تخزين أي بيانات أخرى باستخدام لغة Objekt. ولأسباب تتعلق بالأداء، خصص بنك ذاكرة منفصل يُعرف باسم NAM (وNAMARG) 524,288 كلمة من 40 بت لتخزين رموز العمليات من 10 بت والوسائط من 30 بت. يتصل NAM مباشرةً بالمعالج عبر ناقل خاص به، مما يجعله يعمل كذاكرة تخزين مؤقتة في البنى الحديثة. [ 10 ]
عمليًا، يبدأ مطور لغة البرمجة بتحديد لغة التجميع التي يرغب بها، والتي تمثل البنية الأساسية للغة بما يصل إلى 2048 تعليمة. ثم تُكتب الإجراءات الشائعة الاستخدام، كتلك الموجودة في مكتبة C القياسية، باستخدام لغة التجميع هذه وتُسجل في ذاكرة الوصول العشوائي (NAM). أشارت المحاكاة إلى أن إجراءات Lisp المكتوبة بهذا الأسلوب تعمل أسرع بنحو 20 مرة من آلة Symbolics Lisp . كما أنتجت الشركة أنظمة برمجية دقيقة مماثلة للغتين Smalltalk وProlog، حيث اختزلت الأخيرة عملية التوحيد المعقدة في Prolog إلى رمز عملية واحد. [ 10 ]
التغليف المادي
تألف معالج Rekursiv من أربع رقاقات مصفوفة بوابات تُسمى Numerik ( وحدة حساب ومنطق 32 بت )، و Logik (مُسلسل التعليمات)، و Objekt ( وحدة إدارة الذاكرة الموجهة للكائنات )، و Klock (ساعة المعالج ومنطق الدعم). وكانت الإصدارات الأصلية تعمل بتردد 10 ميجاهرتز. [ 10 ]
كانت شركة لين تعتزم بيع مجموعة شرائح ريكورسيف للموردين، بالإضافة إلى إنتاج محطة عمل خاصة بها باستخدامها. في البداية، كان المنتج الوحيد هو "هاديس"، وهو "مُسرِّع الأجهزة لأنظمة الخبراء الديناميكية"، والذي يتكون من بطاقة VMEbus يمكن توصيلها بمحطة عمل Sun-3 أو Sun-4 . تضمنت هاديس الشرائح الأربع الرئيسية، وذاكرة SRAM بسعة 2 ميجابايت بسرعة 45 نانوثانية (22 ميجاهرتز)، وذاكرة DRAM بسعة 5 ميجابايت بسرعة 100 نانوثانية (10 ميجاهرتز). كان الوصول إلى القرص يتم بواسطة برنامج يعمل على نظام Sun الأساسي، مما أدى إلى انخفاض الأداء بشكل ملحوظ. [ 10 ]
ملحوظات
مراجع
الاقتباسات
- 1 2 3 باونتين 1988 ، ص 341.
- ^ روز ، سيب (19 أبريل 2011). "ريكورسيف" . SlideShare.net . مشاركة الشرائح . تم الاسترجاع 27 فبراير 2017 .
- ↑ قصة لين ريكورسيف-إعادة النشر
- ↑ لوثيان 1993 .
- ↑ باونتين 1988 ، ص 348.
- ↑ باونتين 1988 ، ص 342.
- ↑ باونتين 1988 ، ص 348-349.
- ↑ باونتين 1988 ، ص 346.
- 1 2 3 4 باونتين 1988 ، ص 347.
- 1 2 3 4 5 باونتين 1988 ، ص 349.
فهرس
- بونتين ، ديك (نوفمبر 1988). "Rekursiv: وحدة المعالجة المركزية الموجهة للكائنات" (PDF) . بايت . 13 (12): 341 – 349.
- لوثيان، جيمس (15 مارس 1993). "رد: شريحة Rekursiv (طويلة جدًا)" . مجموعة الأخبار : comp.arch . يوزنت: 33000@castle.ed.ac.uk .
للمزيد من القراءة
- هارلاند، ديفيد م. (أغسطس 1988). ريكورسيف: بنية الحاسوب الموجهة للكائنات (سلسلة إليس هوروود في الحواسيب وتطبيقاتها) . إليس هوروود المحدودة. ISBN 0-13-771965-5.
- باينز، روبرت (مارس 1990). "الاستفادة من معالجات RISC". عالم الحاسوب الشخصي . 13 (3): 136-140 .
- هارلاند، ديفيد م. غن، هاميش آي. برينجل، إيان أ. بيلوف ، برونو (سبتمبر 1986). “The Rekursiv: هندسة الذكاء الاصطناعي”. بروك. منظمة العفو الدولية أوروبا .
- هارلاند، ديفيد م.؛ بيلوف، برونو (ديسمبر 1986). "البرمجة الدقيقة لمجموعة تعليمات كائنية التوجه" . أخبار هندسة الحاسوب ACM SIGARCH . 14 (5). رابطة آلات الحوسبة : 3. doi : 10.1145/18981.18982 . S2CID 17125054 .
- هارلاند، ديفيد م.؛ بيلوف، برونو (أبريل 1987). "أوبجيكت: مخزن كائنات دائم مع جامع قمامة مدمج" . إشعارات ACM SIGPLAN . 22 (4). رابطة آلات الحوسبة : 70. doi : 10.1145/24714.24723 . S2CID 14704178 .
- روز، سيب. "ريكورسيف" .
- هارلاند، ديفيد م. "هندسة الحاسوب الموجهة للكائنات: - المفاهيم والقضايا - هندسة الحاسوب الموجهة للكائنات REKURSIV" (PDF) .
- وحدات المعالجة المركزية
- لغة برمجة عالية المستوى، هندسة الحاسوب
