يونيكور
يونيكور هي بنية مجموعة تعليمات حاسوبية صممها مركز أبحاث وتطوير المعالجات الدقيقة (MPRC) التابع لجامعة بكين في جمهورية الصين الشعبية . يُطلق على الحاسوب المبني على هذه البنية اسم يونيتي-863 . [ 1 ] وحدة المعالجة المركزية مدمجة في نظام متكامل على شريحة (SoC) كامل الوظائف لإنشاء نظام شبيه بالحاسوب الشخصي. [ 2 ]
المعالج مشابه جدًا لبنية ARM ، ولكنه يستخدم مجموعة تعليمات مختلفة. [ 3 ]
كان مدعومًا من قبل نواة لينكس بدءًا من الإصدار 2.6.39؛ [ 4 ] أُزيل الدعم في نواة لينكس الإصدار 5.9 لأنه وفقًا لأحد المطورين "لم يبدُ أن أحدًا يُجري عليه الصيانة، وكان الكود متخلفًا عن بقية كود النواة ومتطلبات المُصرّف". [ 5 ]
مجموعة التعليمات
تتشابه التعليمات تقريبًا مع تنسيقات ARM القياسية، باستثناء إزالة التنفيذ المشروط، وإعادة تخصيص البتات لتوسيع جميع مُحدِّدات السجلات إلى 5 بتات. [ 6 ] [ 7 ] وبالمثل، فإن تنسيق القيمة الفورية هو 9 بتات مُدارة بمقدار 5 بتات (بدلاً من 8 بتات مُدارة بمقدار 4 بتات)، وأحجام إزاحة التحميل/التخزين هي 14 بتًا للبايت/الكلمة و10 بتات للبايت المُوقَّع أو نصف الكلمة. يتم توفير عمليات النقل المشروطة عن طريق ترميز الشرط في حقل سجل المصدر الثاني Rn (غير المستخدم بواسطة ARM) لتعليمات MOV وMVN.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | وصف |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | رمز العملية | S | ممرضة مسجلة | الطريق | يحول | 0 | ش | 0 | غرفة | عملية وحدة الحساب والمنطق، Rd = Rn op Rm shift #shift | ||||||||||||||||||||
| 0 | 0 | 0 | رمز العملية | S | ممرضة مسجلة | الطريق | روبية | 0 | ش | 1 | غرفة | عملية وحدة الحساب والمنطق، Rd = Rn op Rm shift Rs | ||||||||||||||||||||
| 0 | 0 | 1 | رمز العملية | S | ممرضة مسجلة | الطريق | يحول | imm9 | عملية وحدة الحساب والمنطق، Rd = Rn op #imm9 ROTL #shift | |||||||||||||||||||||||
| 0 | 1 | 0 | P | يو | ب | دبليو | ل | ممرضة مسجلة | الطريق | يحول | 0 | ش | 0 | غرفة | قم بتحميل/تخزين Rd لمعالجة Rn ± Rm shift #shift | |||||||||||||||||
| 0 | 1 | 1 | P | يو | ب | دبليو | ل | ممرضة مسجلة | الطريق | إزاحة 14 | تحميل/تخزين Rd للعنوان Rn ± الإزاحة 14 | |||||||||||||||||||||
| 1 | 0 | 0 | P | يو | S | دبليو | ل | ممرضة مسجلة | صورة نقطية عالية | 0 | 0 | ح | صورة نقطية منخفضة | تحميل/تخزين سجلات متعددة | ||||||||||||||||||
| 1 | 0 | 1 | الحالة | ل | إزاحة 24 | قم بالتفرع (والربط) إذا كان الشرط صحيحًا | ||||||||||||||||||||||||||
| 1 | 1 | 0 | تعليمات المعالج المساعد (FPU) | |||||||||||||||||||||||||||||
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | رقم المصيدة | مقاطعة البرمجيات | |||||||||||||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | أ | S | ممرضة مسجلة | الطريق | روبية | 1 | 0 | 0 | 1 | غرفة | اضرب، Rd = Rm * Rs (+ Rn) | ||||||||||||||||
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | ل | 11111 | 11111 | 00000 | 1 | 0 | 0 | 1 | غرفة | الفرع والصرافة (BX، BLX) | ||||||||||||||||
| 0 | 1 | 0 | P | يو | 0 | دبليو | ل | ممرضة مسجلة | الطريق | 00000 | 1 | S | ح | 1 | غرفة | تحميل/تخزين Rd إلى العنوان Rn ± Rm (16 بت) | ||||||||||||||||
| 0 | 1 | 0 | P | يو | 1 | دبليو | ل | ممرضة مسجلة | الطريق | imm_hi | 1 | S | ح | 1 | imm_lo | تحميل/تخزين Rd إلى العنوان Rn ± #imm10 (16 بت) | ||||||||||||||||
تتطابق معاني بتات العلامات المختلفة (مثل S=1 التي تُمكّن من ضبط رموز الحالة) مع مجموعة تعليمات ARM. لا تستطيع تعليمة التحميل/التخزين المتعددة الوصول إلا إلى نصف مجموعة السجلات، وذلك بحسب بت H. إذا كان H=0، فإن البتات الستة عشر تُشير إلى R0–R15؛ وإذا كان H=1، فإنها تُشير إلى R16–R31.
مراجع
- ↑ "مقدمة إلى MPRC" . مركز أبحاث وتطوير المعالجات الدقيقة، جامعة بكين.
- ^ شو تشنغ. شياويين وانغ؛ جونلين لو؛ جيانغفانغ يي؛ دونغ تونغ؛ شيويتاو جوان؛ فنغ ليو؛ شيانهوا ليو؛ تشون يانغ؛ يي فنغ (مارس 2010)، “التقدم البحثي لوحدات المعالجة المركزية UniCore وPKUnity SoCs” (PDF) ، مجلة علوم الكمبيوتر والتكنولوجيا ، 25 (2): 200–213 ، دوى : 10.1007 / s11390-010-9317-1 ، S2CID 7083916 ، تم استرجاعه 11/07/2012
- ↑ بيرغمان، آرند (9 يوليو 2012). "ردًا على: [ الرقعة 00/36 ] منفذ نواة لينكس AArch64" . قائمة بريدية لنواة لينكس . تم الاطلاع بتاريخ 11 يوليو 2012.
مثال آخر مثير للاهتمام هو unicore32، الذي يشترك فعليًا في قدر أكبر من التعليمات البرمجية مع arch/arm مقارنةً بـ arch/aarch64 المقترح. أعتقد أن قاعدة تعليمات unicore32 ستستفيد من دمجها مرة أخرى في arch/arm كمجموعة تعليمات ثالثة، لكن تكلفة الصيانة الإضافية لجميع العاملين على ARM تجعل ذلك غير واقعي.
- ↑ "تم إغلاق نافذة الدمج - الإصدار 2.6.39-rc1 متاح الآن" . لينوس تورفالدز .
- ↑ "إزالة دعم unicore32" . مايك رابوبورت.
- ↑ هسو-هونغ تشيانغ؛ هوانغ-جيا تشنغ؛ يوان-شين هوان (25-02-2012)، "مضاعفة عدد المسجلات في معالجات ARM" (ملف PDF) ، ورشة العمل السادسة عشرة حول التفاعل بين المترجمات وهياكل الحاسوب (INTERACT) ، الصفحات 1-8 ، doi : 10.1109/INTERACT.2012.6339620 ، ISBN 978-1-4673-2613-1، S2CID 6832041
- ↑ شفرة المصدر لمحاكي معالج Unicore . توجد تنسيقات التعليمات في decode.c، والتفكيك في interpret.c، والمحاكاة في instEx.c.
- ↑ شفرة المصدر لمحاكي QEMU Unicore32
- معالجة التعليمات
- بنى مجموعات التعليمات
- العلوم والتكنولوجيا في الصين
- مقالات قصيرة في هندسة الحاسوب
