WD16

المعالج WD16 هو معالج دقيق ذو 16 بت، طرحته شركة ويسترن ديجيتال في أكتوبر 1976. وهو مبني على شريحة MCP-1600 ، وهي تصميم متعدد الأغراض استُخدم أيضًا في تصنيع الحاسوب المصغر منخفض التكلفة DEC LSI-11 ومعالج Pascal MicroEngine . وقد اختلفت الأنظمة الثلاثة بشكل أساسي في شفرتها البرمجية الدقيقة ، مما منح كل نظام بنية مجموعة تعليمات فريدة (ISA).

تُطبّق وحدة WD16 امتدادًا لبنية مجموعة تعليمات PDP-11 ، لكنها غير متوافقة مع لغة الآلة الخاصة بـ PDP-11. [ 1 ] وقد طوّر ديك ويلكوكس وريتش نوتاري مجموعة التعليمات والترميز الدقيق. [ 2 ] تُعدّ WD16 مثالًا على بنية CISC المتعامدة . تستطيع معظم التعليمات ذات المعاملين العمل من الذاكرة إلى الذاكرة بأي نمط عنونة ، وقد تُؤدي بعض التعليمات إلى ما يصل إلى عشر عمليات وصول إلى الذاكرة.

تُصنع شريحة WD16 في خمس حزم DIP ذات 40 طرفًا . تبلغ سرعة الساعة القصوى 3.3  ميجاهرتز. [ 3 ] وتتصل بالذاكرة عبر ناقل بيانات/عناوين متعدد الإرسال ذي 16 بت. [ 4 ]

اشتهر معالج WD16 باستخدامه في لوحات معالجات AM-100 وAM-100/T من شركة ألفا مايكروسيستمز . [ 5 ] عُرض نموذج أولي منه عام 1977. [ 6 ] وبحلول عام 1981، كان هناك ما لا يقل عن 5000 حاسوب من طراز ألفا مايكرو يعتمد على معالج WD16. [ 7 ] وحتى عام 1982، كانت حواسيب ألفا مايكرو التي تعتمد على معالج WD16 لا تزال تُوصف بأنها "حواسيب فائقة الصغر". [ 8 ] وقد حل معالج موتورولا 68000 محل معالج WD16 في يونيو 1982. [ 9 ]

سجلات وحدة المعالجة المركزية

تحتوي وحدة المعالجة المركزية على ثمانية سجلات عامة الأغراض، كل منها 16 بت ، من R0 إلى R7. يمكن استخدام هذه السجلات لأي غرض باستثناء ما يلي: السجل R7 هو عداد البرنامج (PC). على الرغم من إمكانية استخدام أي سجل كمؤشر للمكدس، إلا أن R6 هو مؤشر المكدس (SP) المستخدم للمقاطعات والاعتراضات في الأجهزة. أما R0 فهو عداد تعليمات نقل الكتل. [ 10 ]

ذاكرة

تنسيقات البيانات

أصغر وحدة للذاكرة القابلة للعنونة والكتابة هي البايت ذو 8 بت . ويمكن أيضًا تخزين البايتات في النصف السفلي من المسجلات من R0 إلى R5. [ 10 ]

تُخزَّن الكلمات ذات 16 بت بنظام الترتيب الصغير (little-endian) ، حيث تكون البايتات الأقل أهمية في العنوان الأدنى. وتكون الكلمات محاذية دائمًا لعناوين الذاكرة الزوجية. ويمكن تخزين الكلمات في المسجلات من R0 إلى R7.

لا يمكن تخزين الكلمات المزدوجة ذات 32 بت إلا في أزواج من المسجلات، حيث تُخزن الكلمة الأصغر في المسجل ذي الرقم الأدنى. وتُستخدم قيم 32 بت في عمليات الضرب والقسمة وبعض تعليمات التدوير والإزاحة الحسابية .

يبلغ طول قيم الفاصلة العائمة 48 بتًا، ولا يمكن تخزينها إلا في الذاكرة. يقع هذا التنسيق بين تنسيقي الفاصلة العائمة أحادية الدقة ومزدوجة الدقة. تُخزَّن هذه القيم بتنسيق "PDP-endian" غير المألوف . تُحاذى قيم الفاصلة العائمة دائمًا إلى عناوين زوجية . تحتوي الكلمة الأولى على الإشارة والأس والبايت الأعلى من الجزء الكسري. يحتوي العنوان الأعلى التالي على البايتين الأوسطين من الجزء الكسري، ويحتوي العنوان الأعلى الذي يليه على البايتين الأدنى من الجزء الكسري. التنسيق الكامل كما يلي:

1. إشارة بت واحد للعدد الكامل، وهي صفر للأعداد الموجبة.

2. أسّ ذو أساس 2 مكون من 8 بتات مكتوب بصيغة الزيادة-128 بنطاق +127، -128. العدد القانوني الوحيد الذي يكون أسه -128 هو الصفر الحقيقي (جميع الأصفار).

3. جزء من العدد مكون من 40 بت مع تضمين البت الأكثر أهمية.

1514760
العنوان+0Sالأسمانتيسا (عالية)
15870
العنوان + 2مانتيسا(وسط)
15870
العنوان + 4مانتيسا(قليل)

إدارة الذاكرة

تتيح عناوين WD16 ذات الـ 16 بت الوصول المباشر إلى 64 كيلوبايت من الذاكرة. ولا توفر WD16 أي إدارة أو حماية مدمجة للذاكرة. في تطبيق AM-100، تُربط آخر 256 موقعًا في الذاكرة بمساحة المنفذ . [ 11 ] ولأن معظم أجهزة AM-100 كانت تُستخدم كأجهزة متعددة المستخدمين، كان يتم توسيع الذاكرة عادةً لتتجاوز 64 كيلوبايت عن طريق تبديل البنوك . على الرغم من إمكانية تهيئة AM-100 لما يصل إلى 22 مستخدمًا و512 كيلوبايت من ذاكرة الوصول العشوائي (RAM)، [ 7 ] إلا أن التكوين النموذجي للذاكرة لجهاز AM-100 ذي 9 مستخدمين قد يكون في حدود 352 كيلوبايت. [ 12 ] في عام 1981، تم توفير وحدة إدارة الذاكرة AM-700 الاختيارية لجهاز AM-100/T، والتي سمحت بتقسيم الذاكرة بزيادات قدرها 256 بايت. [ 13 ] 

أنماط العنونة

تُخصص معظم التعليمات ستة بتات لتحديد كل مُعامل. ثلاثة بتات منها تُحدد أحد أنماط العنونة الثمانية، وثلاثة بتات أخرى تُحدد سجلًا عامًا. يكون ترميز  نمط عنونة المُعامل ذي الستة بتات كما يلي: [ 10 ]

5320
وضعيسجل

في الأقسام التالية، يتضمن كل عنصر مثالاً لكيفية كتابة المعامل بلغة التجميع . Rn تعني أحد السجلات الثمانية، المكتوبة من R0 إلى R7.

أنماط عنونة السجلات العامة

يمكن تطبيق الأوضاع الثمانية التالية على أي سجل عام. وسيتم توضيح تأثيراتها عند تطبيقها على R6 (مؤشر المكدس، SP) وR7 (عداد البرنامج، PC) بشكل منفصل في الأقسام التالية.

شفرةاسممثالوصف
تشغيليسجلممرضة مسجلةالمعامل موجود في Rn
تم تأجيل التسجيل(Rn)يحتوي Rn على عنوان المعامل
الزيادة التلقائية(Rn)+إذا كان Rn يحتوي على عنوان المعامل، فقم بزيادة Rn
الزيادة التلقائية المؤجلة@(Rn)+إذا كان Rn يحتوي على عنوان المعامل، فقم بزيادة Rn بمقدار 2
التناقص التلقائي−(Rn)قم بإنقاص قيمة Rn، ثم استخدم النتيجة كعنوان للمعامل.
تأجيل الإنقاص التلقائي@−(Rn)قم بإنقاص قيمة Rn بمقدار 2، ثم استخدم النتيجة كعنوان لعنوان المعامل
فِهرِسX(Rn)Rn+X هو عنوان المعامل
تم تأجيل الفهرس@X(Rn)Rn+X هو عنوان عنوان المعامل

في نمطي الفهرسة والفهرسة المؤجلة، تكون X قيمةً مكونةً من 16 بت مأخوذةً من الكلمة الثانية للتعليمات. في التعليمات ذات المعاملين، يمكن استخدام هذين النمطين مع كلا المعاملين. تتكون هذه التعليمات من ثلاث كلمات.

تتم عمليات الزيادة التلقائية والنقصان التلقائي على السجل بمقدار 1 في تعليمات البايت، وبمقدار 2 في تعليمات الكلمة، وبمقدار 2 كلما تم استخدام الوضع المؤجل، لأن الكمية التي يعنونها السجل هي مؤشر (كلمة).

أنماط عنونة عداد البرنامج

عند تحديد R7 (عداد البرنامج)، فإن أربعة من أوضاع العنونة تُنتج بشكل طبيعي تأثيرات مفيدة:

شفرةاسممثالوصف
27مباشرفانيالمعامل هو الكلمة التالية في التعليمات
37مطلق@#aعنوان المعامل هو الكلمة التالية في التعليمات
67نسبيأعنوان المعامل هو الكلمة التالية من التعليمات المضافة إلى عداد البرنامج (PC).
77مؤجل نسبي@aعنوان عنوان المعامل هو الكلمة التالية من التعليمات المضافة إلى عداد البرنامج (PC).

يُستخدم الوضع المطلق استخدامين شائعين، وهو يجمع في تركيبه بين الوضع الفوري والوضع المؤجل. الأول هو الوصول إلى مواقع المعالج المحجوزة في النطاق 0000-003F. أما الثاني فهو تحديد سجلات الإدخال/الإخراج في مساحة المنفذ، حيث أن سجلات كل جهاز لها عناوين ذاكرة محددة. يتميز الوضع النسبي بتركيب أبسط، وهو أكثر شيوعًا للإشارة إلى متغيرات البرنامج ووجهات القفز. البرنامج الذي يستخدم الوضع النسبي (والوضع النسبي المؤجل) حصريًا للمراجع الداخلية يكون مستقلًا عن الموقع ؛ فهو لا يفترض أي شيء عن موقعه، لذا يمكن تحميله في أي موقع ذاكرة، أو حتى نقله، دون الحاجة إلى تعديل عناوينه لتعكس موقعه. عند حساب هذه العناوين نسبةً إلى الموقع الحالي، يُجري المعالج عملية النقل أثناء التنفيذ.

الوضعان الفوري والمطلق هما ببساطة وضعان للزيادة التلقائية والزيادة التلقائية المؤجلة، على التوالي، مطبقان على عداد البرنامج (PC). عندما تكون الكلمة المساعدة موجودة في التعليمات، يتم زيادة عداد البرنامج للتعليمات التالية تلقائيًا بعد الكلمة المساعدة. وبما أن عداد البرنامج يشير دائمًا إلى الكلمات، فإن عملية الزيادة التلقائية تتم دائمًا بخطوة مقدارها 2.

أنماط عنونة المكدس

يُستخدم المسجل R6، أو SP، كمكدس مادي للمقاطعات والتدخلات. ومن المتعارف عليه في مجموعة أنماط العنونة التي يوفرها معالج WD16 أن المكدس ينمو تنازليًا - باتجاه العناوين الأدنى - عند إضافة عناصر إليه. وعند تطبيق نمط عنونة على SP، أو على أي مسجل يختاره المبرمج لاستخدامه كمكدس برمجي، فإن أنماط العنونة تُحدث التأثيرات التالية:

شفرةاسممثالوصف
16مؤجل(SP)يوجد المعامل في أعلى المكدس
26الزيادة التلقائية(SP)+يكون المعامل في أعلى المكدس، ثم قم بإزالته.
36الزيادة التلقائية المؤجلة@(SP)+يوجد مؤشر إلى المعامل في أعلى المكدس؛ قم بإزالة المؤشر منه.
46التناقص التلقائي−(SP)أضف قيمة إلى المكدس
66مفهرسX(SP)يقع المعامل على مسافة X من أعلى المكدس
76مؤجل مفهرس@X(SP)يقع المؤشر إلى المعامل على مسافة X من أعلى المكدس

على الرغم من أن مكدسات البرامج يمكن أن تحتوي على بايتات، فإن مؤشر المكدس (SP) يشير دائمًا إلى مكدس من الكلمات. تتم عمليات الزيادة والنقصان التلقائي على مؤشر المكدس (SP) دائمًا بخطوة مقدارها 2.

مجموعة التعليمات

تُعالج معظم تعليمات WD16 على مستوى البايتات والكلمات. تُحدد البايتات برقم سجل - يُحدد البايت الأدنى في السجل - أو بموقع في الذاكرة. تُحدد الكلمات برقم سجل أو بموقع البايت الأدنى في الذاكرة، والذي يجب أن يكون عددًا زوجيًا. تُكتب جميع رموز العمليات والعناوين بالنظام الست عشري . [ 10 ]

تعليمات المعامل المزدوج

تحدد البتات الأربع العليا العملية المراد تنفيذها. وتحدد مجموعتان من ست بتات نمط عنونة معامل المصدر ونمط عنونة معامل الوجهة، كما هو موضح أعلاه. وتشغل هذه المجموعة من التعليمات 75% من رموز العمليات المتاحة.

1512119865320
رمز العمليةالمصدريسجلالوجهةيسجل
رمز العمليةذاكريعملية
1000يضيفيضيف:Dest ← Dest + Src
2000فرعيطرح:Dest ← Dest - Src
3000وو:Dest ← Dest ∧ Src
4000BICواضح بعض الشيء:Dest ← Dest ∧ (-1 - Src)
5000مكتب المعايير والمقاييسمجموعة البتات:Dest ← Dest ∨ Src
6000XORحصري أو:Dest ← Dest ⊻ Src
9000CMPيقارن:Src − Dest
A000قليلاختبار البتات:Dest ∧ Src
B000فيديويتحرك:Dest ← Src
C000CMBPمقارنة البايت:Src − Dest
D000MOVBنقل البايت: Dest ← Src(يمتد سجل الوجهة إلى البتات من 8 إلى 15)
E000BISBبتة مضبوطة بايت:Dest ← Dest ∨ Src

تستخدم بعض التعليمات ذات المعاملين نمط عنونة لأحد المعاملين وسجلًا للمعامل الثاني:

159865320
رمز العمليةسجلالمصدر/الوجهةيسجل

تُحدد البتات السبع العليا العملية المراد تنفيذها، وتُحدد ست بتات نمط عنونة المعامل، بينما تُحدد ثلاث بتات سجلًا أو زوجًا من السجلات. عند استخدام زوج من السجلات (يُكتب أدناه "Reg+1:Reg")، يحتوي السجل Reg على الجزء الأدنى من المعامل. ويحتوي السجل التالي ذو الرقم الأعلى على الجزء الأعلى من المعامل (أو الباقي).

رمز العمليةذاكريعملية
7200لياتحميل العنوان الفعال:Reg ← ea(Dest)
73C0JMPالقفز: PC ← ea(Dest)(هذا هو نفسه LEA PC,Destويشترك في نفس رمز العملية.)
7400رمادالإزاحة الحسابية:if Src < 0 then Reg ← Shift-right(Reg, -Src) else Reg ← Shift-left(Reg, Src)
7800XCHتبادل:Reg ↔ Src
7A00ASHCالإزاحة الحسابية المدمجة (32 بت):if Src < 0 then (Reg+1:Reg) ← Shift-right((Reg+1:Reg), -Src) else (Reg+1:Reg) ← Shift-left((Reg+1:Reg), Src)
7C00متعدد الجنسياتالضرب بدون إشارة:(Reg+1:Reg) ← Reg × Src
7E00DIVالقسمة بدون إشارة:Compute (Reg+1:Reg) ÷ Src; Reg ← quotient; Reg+1 ← remainder

تعليمات المعامل الواحد

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

1565320
رمز العمليةالمصدر/الوجهةيسجل
رمز العمليةذاكريعملية
0BC0مسحةتبديل بايتات الكلمة:Dest0-7 ↔ Dest8-15
8BC0سوادتبديل أرقام البايت:Dest0-3 ↔ Dest4-7
0840CLRواضح:Dest ← 0
8840مجلس مراجعة البناء
0C00كومإطراء:Dest ← (-1 - Dest)
8C00مشط
0C80شركةزيادة:Dest ← Dest + 1
8C80الرقابة الدولية على الرقابة
0CC0ديسمبرانخفاض:Dest ← Dest − 1
8CC0مجلس التعليم العالي
0C40سلبينفي:Dest ← -Dest
8C40NEGB
0B00تعيينتعيين:Dest ← -1
8B00SETB
0A80TSTامتحان:Src ∧ Src
8A80TSTB
0A00معدل العائد على الاستثمارأدر إلى اليمين:C ← S0; S0-14 ← S1-15; S15 ← C
8A00روربقم بتدوير البايت إلى اليمين:C ← S0; S0-6 ← S1-7; S7 ← C
0A40دورأدر إلى اليسار:C ← S15; S1-15 ← S0-14; S0 ← C
8A40رولبتدوير البايت الأيسر:C ← S7; S1-7 ← S0-6; S0 ← C
0B80التعرف التلقائي على الكلامالإزاحة الحسابية إلى اليمين:Dest ← Dest ÷ 2, sign preserved
8B80مجلس تسجيل الجمعيات الأمريكية (ASRB)
0AC0لغة الإشارة الأمريكيةالإزاحة الحسابية إلى اليسار:Dest ← Dest × 2
8AC0ASLB
8D80محول تناظري رقميأضف حملاً:Dest ← Dest + Cflag
8DC0SBCاطرح الحمل:Dest ← Dest - Cflag
0D00IW2قم بزيادة الكلمة بمقدار 2:Dest ← Dest + 2
0DC0TJMPقفزة مُجدولة:PC ← PC + (Dest), PC ← PC + @PC
0D80تيكولمكالمة مؤجلة:-(SP) ← PC, PC ← PC + (Dest), PC ← PC + @PC
0D40SXTتمديد التوقيع:Dest ← 0 - N flag
8D00LSTSحالة معالج التحميل:PSW ← Dest
8D40SSTSحفظ حالة المعالج:Dest ← PSW

تعليمات فورية قصيرة بمعامل واحد

تُحدد البتات السبع العليا والبتات 5 و4 العملية المراد تنفيذها. وتُحدد مجموعة واحدة من ثلاث بتات السجل. ويحتوي حقل العد المكون من أربع بتات على قيمة فورية صغيرة أو عدد. وفي جميع الحالات، يُضاف واحد إلى هذا الحقل، مما يجعل النطاق من 1 إلى 16.

159865430
رمز العمليةسجلعمليةعدد
رمز العمليةذاكريعملية
0800أديأضف على الفور:Reg ← Reg + Count + 1
0810سوبياطرح فوراً:Reg ← Reg - Count - 1
0820بي سي آيواضحٌ بشكلٍ فوري:Reg ← Reg ∧ (-1 - (Count+1))
0830فيلمتحرك فوراً:Reg ← Count + 1
8800SSRRتدوير اليمين عدة مرات:Reg:C-flag ← Rotate-right(Reg:C-flag, Count+1)
8810SSLRتدوير يساري متعدد:C-flag:Reg ← Rotate-left(C-flag:Reg, Count+1)
8820SSRAمضاعف الإزاحة الحسابية لليمين:Reg:C-flag ← Arithmetic-shift-right(Reg, Count+1)
8830SSLAمضاعفات الإزاحة الحسابية إلى اليسار:C-flag:Reg ← Arithmetic-shift-left(Reg, Count+1)
8E00SDRRتدوير مزدوج لليمين (33 بت):Reg+1:Reg:C-flag ← Rotate-right(Reg+1:Reg:C-flag, Count+1)
8E10SDLRتدوير مزدوج لليسار (33 بت):C-flag:Reg+1:Reg ← Rotate-left(C-flag:Reg+1:Reg, Count+1)
8E20SDRAعملية إزاحة حسابية مزدوجة لليمين (32 بت):Reg:Reg+1:C-flag ← Arithmetic-shift-right(Reg:Reg+1, Count+1)
8E30SDLAمضاعف الإزاحة الحسابية لليسار المزدوج (32 بت):C-flag:Reg:Reg+1 ← Arithmetic-shift-left(Reg:Reg+1, Count+1)

تعليمات الفاصلة العائمة

تُحدد البتات الثمانية العليا العملية المراد تنفيذها. وتُحدد مجموعتان من أربع بتات نمطَي عنونة المصدر والوجهة والسجل. إذا كان الحقل I = 0، فإن السجل المُحدد يحتوي على عنوان المعامل، وهو ما يُعادل نمط العنونة (Rn). أما إذا كان الحقل I = 1، فإن السجل المُحدد يحتوي على عنوان عنوان المعامل، وهو ما يُعادل نمط العنونة @0(Rn).

158764320
رمز العمليةأناSRegأناDReg
رمز العمليةذاكريعملية
F000موضةإضافة عائمة:Dest ← Dest + Src
F100FSUBطرح عائم:Dest ← Dest - Src
F200FMULالضرب العائم:Dest ← Dest × Src
F300FDIVخط تقسيم عائم:Dest ← Dest ÷ Src
F400شرطة فلوريدا المدنيةمقارنة عائمة:Dest - Src

تُخصص التعليمات البرمجية من F500 إلى FFFF لوحدة معالجة دقيقة رابعة لتنفيذ إحدى عشرة تعليمة إضافية للأعداد العشرية. لا يوجد دليل على إنتاج هذه الوحدة الدقيقة الرابعة. عند تنفيذ معالج WD16 القياسي للتعليمات البرمجية من F500 إلى FFFF، يتم استخدام رمز العملية المحجوز، ويتم تحميل عداد البرنامج (PC) من 001A.

تعليمات نقل الكتلة

تُحدد العشر بتات العليا العملية المراد تنفيذها. وتُحدد مجموعتان من ثلاث بتات سجلي المصدر والوجهة. في جميع الحالات، يحتوي سجل المصدر على عنوان أول كلمة أو بايت من الذاكرة المراد نقلها، بينما يحتوي سجل الوجهة على عنوان أول كلمة أو بايت من الذاكرة التي ستستقبل البيانات المنقولة. ويُخزن عدد الكلمات أو البايتات المنقولة في السجل R0 كعدد صحيح غير مُوقّع، ويتراوح هذا العدد بين 1 و65536. هذه التعليمات قابلة للمقاطعة بالكامل.

1565320
رمز العمليةSRegDReg
رمز العمليةذاكريعملية
0E00نقابة عمال البناء والعمالانقل مجموعة الكلمات إلى الأعلى:(DReg) ← (SReg), SReg ← SReg + 2, DReg ← DReg + 2, R0 ← R0 - 1, until R0 = 0
0E40MBWDانقل مجموعة الكلمات إلى الأسفل:(DReg) ← (SReg), SReg ← SReg - 2, DReg ← DReg - 2, R0 ← R0 - 1, until R0 = 0
0E80MBBUانقل كتلة البايتات للأعلى:(DReg) ← (SReg), SReg ← SReg + 1, DReg ← DReg + 1, R0 ← R0 - 1, until R0 = 0
0EC0MBBDانقل كتلة البايتات إلى الأسفل:(DReg) ← (SReg), SReg ← SReg - 1, DReg ← DReg - 1, R0 ← R0 - 1, until R0 = 0
0F00MBWAانقل مجموعة الكلمات إلى العنوان التالي:(DReg) ← (SReg), SReg ← SReg + 2, R0 ← R0 - 1, until R0 = 0
0F40ماجستير إدارة الأعمالنقل كتلة من البايتات إلى العنوان التالي:(DReg) ← (SReg), SReg ← SReg + 1, R0 ← R0 - 1, until R0 = 0
0F80MABWانقل العنوان إلى كتلة الكلمات:(DReg) ← (SReg), DReg ← DReg + 2, R0 ← R0 - 1, until R0 = 0
0FC0MABBنقل العنوان إلى كتلة من البايتات:(DReg) ← (SReg), DReg ← DReg + 1, R0 ← R0 - 1, until R0 = 0

تعليمات التفرع

يُحدد البايت الأعلى قيمةً في التعليمات العملية. أما البايت الأدنى قيمةً فهو عبارة عن إزاحة بكلمة مُوقّعة نسبةً إلى الموقع الحالي لعداد البرنامج. وهذا يسمح بتنفيذ التفرعات الأمامية والعكسية في الكود. أقصى مدى للتفرع هو +128، -127 كلمة من رمز عملية التفرع.

في معظم تعليمات التفرع، يعتمد تنفيذ التفرع على حالة رموز الحالة. عادةً ما تسبق تعليمة التفرع تعليمة CMP (مقارنة) أو BIT (اختبار بت) ذات معاملين، أو تعليمة TST (اختبار) ذات معامل واحد. كما تُحدد تعليمات الحساب والمنطق رموز الحالة. على عكس معالجات إنتل في بنية x86 ، تُحدد تعليمات MOV هذه الرموز أيضًا، لذا يمكن استخدام تعليمة التفرع للتفرع بناءً على ما إذا كانت القيمة المنقولة صفرًا أم سالبة.

15870
رمز العمليةإزاحة
رمز العمليةذاكريالحالة أو التشغيل
0100BRالفرع دائماًPC ← PC + (2 × Sign-extend(Offset))
0200بريقم بالتفرع إذا لم يكن متساوياًZ = 0
0300BEQتفرع إذا كان متساوياًZ = 1
0400بي جي إيقم بالتفرع إذا كان أكبر من أو يساوي(N ⊻ V) = 0
0500بي إل تيقم بالتفرع إذا كان أقل من(N ⊻ V) = 1
0600برنامج المواهب البريطانية (BGT)قم بالتفرع إذا كان أكبر من(Z ∨ (N ⊻ V)) = 0
0700بلوتوثقم بالتفرع إذا كان أقل من أو يساوي(Z ∨ (N ⊻ V)) = 1
8000BPLافصل إذا كان زائدN = 0
8100مؤشر كتلة الجسمتفرع إذا كان سالبN = 1
8200BHIقم بالتفرع إذا كان أعلى(C ∨ Z) = 0
8300بلوسقم بالتفرع إذا كان الفرع أقل أو متماثلاً(C ∨ Z) = 1
8400بي في سيقم بفصل الفرع إذا كان التدفق زائداًV = 0
8500بي في إسقم بالتفرع إذا تم تعيين تجاوز السعةV = 1
8600BCC أو BHISتفرع إذا كان الممر خالياً، أو تفرع إذا كان أعلى أو مساوياًC = 0
8700BCS أو BLOتفرع إذا تم وضع مجموعة حمل، أو تفرع إذا كان أقلC = 1

بسبب النطاق المحدود لتعليمات التفرع، قد تصبح عناوين الوجهة لبعض التفرعات غير قابلة للوصول مع ازدياد حجم البرنامج. لذا، يقوم المبرمج بتغيير تعليمة Bcc المكونة من كلمة واحدة إلى تعليمة JMP المكونة من كلمتين. ولأن JMP لا تحتوي على صيغ شرطية، يقوم المبرمج بتغيير Bcc إلى عكس معناها للتفرع حول JMP.

1598650
رمز العمليةسجلإزاحة
رمز العمليةذاكريعملية
7600تنهدSubtract One and Branch: Reg ← Reg - 1; if Reg ≠ 0 then PC ← PC - (2 × Offset)

تُعدّ تعليمة SOB (طرح واحد والتفرع) تعليمة تفرع شرطية أخرى. يتم إنقاص قيمة السجل المحدد بمقدار 1، وإذا لم تكن النتيجة صفرًا، يتم اتخاذ تفرع عكسي بناءً على إزاحة الكلمة المكونة من 6 بتات.

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

159865320
رمز العمليةسجلالمصدريسجل
رمز العمليةذاكريعملية
7000JSRانتقل إلى الروتين الفرعي:-(SP) ← Reg; Reg ← PC; PC ← Src

تستدعي تعليمة JSR روتينًا فرعيًا. تحدد مجموعة من ستة بتات نمط العنونة. يمكن لتعليمة JSR حفظ أي سجل في المكدس. تحدد البرامج التي لا تحتاج إلى هذه الميزة عداد البرنامج (PC JSR PC, address) كسجل، ويعود الروتين الفرعي باستخدام RTN PC. إذا تم استدعاء روتين باستخدام، على سبيل المثال JSR R4, address، ، فسيتم حفظ القيمة القديمة لـ R4 في أعلى المكدس، وسيكون عنوان العودة (مباشرةً بعد JSR) في R4. يتيح هذا للروتين الوصول إلى القيم المشفرة مباشرةً بتحديد (R4)+ أو إلى المؤشرات مباشرةً بتحديد @(R4)+. ينتقل الترقيم التلقائي متجاوزًا هذه البيانات، إلى النقطة التي يستأنف عندها رمز البرنامج المستدعي. سيحدد هذا الروتين RTN R4للعودة إلى البرنامج المستدعي.

يمكن استخدام هذا JSR PC,@(SP)+النموذج لتنفيذ الروتينات الفرعية . في البداية، يُوضع عنوان دخول الروتين الفرعي على المكدس، ومن تلك النقطة JSR PC,@(SP)+تُستخدم التعليمة لكلٍ من عبارة الاستدعاء وعبارة الإرجاع. نتيجةً لتعليمة JSR هذه، يتم تبديل محتويات عداد البرنامج (PC) والعنصر العلوي من المكدس، مما يسمح للروتينين بتبديل التحكم واستئناف العمل من حيث توقف كل منهما بسبب التبديل السابق.

15320
رمز العمليةسجل
رمز العمليةذاكريعملية
0018RTNالعودة من الروتين الفرعي:PC ← Reg; Reg ← (SP)+
0028PRTNقم بإزالة المكدس ثم أعده:SP ← SP + (2 × @SP), PC ← Reg; Reg ← (SP)+

تقوم تعليمة PRTN بحذف عدد من المعاملات من المكدس ثم تعود. تُعدّ PRTN ردّ WD16 على تعليمة MARK المعقدة في PDP-11. على عكس MARK، تُنفّذ PRTN في مساحة البرنامج ويمكنها استخدام أي سجل كسجل ربط. في هذا الشرح، سنستخدم R5 كسجل ربط. أولًا، يدفع المُستدعي قيمة R5 إلى المكدس. بعد ذلك، يمكن وضع أي عدد من كلمات الوسائط على المكدس. ثم يضع المُستدعي عدد كلمات الوسائط + 1 في R5. يُنفّذ المُستدعي تعليمة JSR R5,addressتدفع عدد كلمات الوسائط + 1 إلى المكدس، وتضع عنوان العودة في R5، ثم تنتقل إلى الروتين الفرعي. بعد تنفيذ التعليمات، ينتهي الروتين الفرعي بـ PRTN R5. تُضاعف PRTN الرقم الموجود أعلى المكدس وتضيفه إلى SP، مما يؤدي إلى حذف المعاملات. ثم تستمر PRTN بالعودة إلى المُستدعي بما يُعادل RTN R5، وتحميل R5 في PC ثم سحب R5.

تعليمات التسجيل الفردي

تحتوي هذه التعليمات على رمز عملية مكون من 13 بت ووسيط سجل مكون من ثلاثة بتات.

15320
رمز العمليةسجل
رمز العمليةذاكريعملية
٠٠١٠IAKتأكيد المقاطعة:Interrupt acknowledge state code, Reg ← Bus read
٠٠٢٠MSKOارتداء الكمامة:(002E) ← Reg, Mask out state code

تعليمات المعلمات الضمنية

150
رمز العملية
رمز العمليةذاكريعملية
0000برنامج العمل الوطنيلا توجد عملية جراحية:Do nothing
٠٠٠١إعادة ضبطإعادة ضبط:Transmit reset pulse to I/O devices
٠٠٠٢IENتفعيل المقاطعة:I2 ← 1
٠٠٠٣نظام تحديد الهويةتعطيل المقاطعات:I2 ← 0
٠٠٠٤وقفوقف:Executes the selected halt option
٠٠٠٥إكس سي تيتنفيذ تعليمة واحدة:PC ← (SP)+, PS ← (SP)+, set trace flag, execute opcode, -(SP) ← PS, -(SP) ← PC, trace flag reset, If no error PC ← (0020) else PC ← (001E)
٠٠٠٦العلاج الطبيعيفخ نقطة التوقف:-(SP) ← PS, -(SP) ← PC, PC ← (002C)
٠٠٠٧WFIانتظر المقاطعة:Enable interrupts (I2 ← 1). Bus activity ceases.
٠٠٠٨RSVCالرد من مكالمة المشرف (ب أو ج):REST[a], SP ← SP + 2, RTT[b]
٠٠٠٩RRTTاستعادة الوضع والعودة من الفخ:REST[a], RTT[b]
٠٠٠أيحفظحفظ السجلات:-(SP) ← R5, -(SP) ← R4, -(SP) ← R3, -(SP) ← R2, -(SP) ← R1, -(SP) ← R0
000Bسافسحفظ الحالة:SAVE[c], -(SP) ← (002E), (002E) ← (002E) ∨ Mask, MSKO, IEN. Note Mask is stored in the second word of instruction.
000Cاستراحةاستعادة السجلات:R0 ← (SP)+, R1 ← (SP)+, R2 ← (SP)+, R3 ← (SP)+, R4 ← (SP)+, R5 ← (SP)+
000DRRTNاستعادة وإرجاع:REST[a], PC ← (SP)+
000ERSTSاستعادة الحالة:(002E) ← (SP)+, MSKO, REST[a], RTT[b]
000 فهرنهايتRTTالعودة من الفخ:PC ← (SP)+, PS ← (SP)+
  1. ١ ٢ ٣ ٤ راحة: R0 ← (SP)+، R1 ← (SP)+، R2 ← (SP)+، R3 ← (SP)+، R4 ← (SP)+، R5 ← (SP)+
  2. 1 2 3 RTT: PC ← (SP)+, PS ← (SP)+
  3. حفظ: -(SP) ← R5، -(SP) ← R4، -(SP) ← R3، -(SP) ← R2، -(SP) ← R1، -(SP) ← R0

اتصال من المشرف

تُستخدم هذه التعليمات لتنفيذ استدعاءات نظام التشغيل (المشرف). جميعها تحتوي على وسيطة من سجل مكون من ستة بتات. صُممت تعليمات SVCB وSVCC بحيث يمكن للوسيطة المُقدمة لنظام التشغيل استخدام معظم أنماط العنونة التي تدعمها مجموعة التعليمات الأصلية.

15650
رمز العمليةأرج
رمز العمليةذاكريعملية
٠٠٤٠SVCAمكالمة المشرف أ:-(SP) ← PS ,-(SP) ← PC, PC ← (0022) + Arg × 2, PC ← (PC)
0080SVCBاتصل بالمشرف ب:TMPA ← SP, -(SP) ← PS, -(SP) ← PC, TMPB ← SP, -(SP) ← TMPA, SAVE[a], R1 ← TMPB, R5 ← Arg × 2, PC ← (0024)
00C0SVCCرقم مكالمة المشرف ج:TMPA ← SP, -(SP) ← PS, -(SP) ← PC, TMPB ← SP, -(SP) ← TMPA, SAVE[a], R1 ← TMPB, R5 ← Arg × 2, PC ← (0026)
  1. 1 2 حفظ: -(SP) ← R5، -(SP) ← R4، -(SP) ← R3، -(SP) ← R2، -(SP) ← R1، -(SP) ← R0

عمليات رمز الحالة

1543210
رمز العمليةشمالZVج
رمز العمليةذاكريعملية
٠٠٣٠شركة ذات مسؤولية محدودةرموز حالة التحميل:Load according to N, Z, V, C bits

رموز الحالة الأربعة في كلمة حالة المعالج (PSW) هي

المقاطعات

يحتوي معالج WD16 على ثلاثة أنواع من المقاطعات: غير الموجهة، والموجهة، والإيقاف. يتم تفعيل وتعطيل المقاطعات غير الموجهة والموجهة باستخدام IENالتعليمات IDS. أما الإيقاف فلا يمكن تعطيله.

للمقاطعة غير الموجهة (NVI) أولوية على المقاطعات الموجهة. تُستخدم المقاطعة غير الموجهة لغرضين فقط: انقطاع التيار الكهربائي وإشارة الساعة. (إشارة الساعة هي عادةً إشارة دخل بتردد 50 أو 60 هرتز تُستخدم لتقسيم الوقت وحفظه ) . عند استقبال إشارة مقاطعة غير موجهة، يتم دفع كل من PS وPC. يتم التحقق من حالة انقطاع التيار الكهربائي. إذا كان انقطاعًا للتيار الكهربائي، ينتقل WD16 إلى العنوان المخزن في 0014. أما إذا لم يكن انقطاعًا للتيار الكهربائي، فيُفترض وجود نبضة ساعة، وينتقل WD16 إلى العنوان المخزن في 002A.

يدعم النظام ستة عشر متجه مقاطعة . عند استقبال مقاطعة متجهة ، يتم دفع كل من PS وPC. أثناء تأكيد المقاطعة، يستقبل WD16 رقم مقاطعة مكونًا من أربعة بتات من الجهاز المُقاطع. يتم جلب عنوان جدول متجه المقاطعة من 0028، ويُضاف إليه رقم المقاطعة، مشيرًا إلى إحدى الكلمات الست عشرة في الجدول. ثم يتم جلب إزاحة كلمة من الجدول وإضافتها إلى عنوان الجدول الخاص بها. تُحمّل النتيجة في PC، مما يؤدي إلى الانتقال إلى روتين خدمة المقاطعة . يتم تحديد المقاطعات المتزامنة التي يتم أخذها بواسطة قناع أولوية مقاطعة مكون من 16 بتًا، والذي يتم تنفيذه في الغالب باستخدام أجهزة خارجية. يخزن WD16 قناع الأولوية الحالي في 002E، بينما يرسل القناع مباشرةً إلى الأجهزة. يتم التعامل مع القناع باستخدام MSKOالتعليمات SAVSو و RSTS. في حال الحاجة إلى أكثر من 16 مقاطعة متجهة، يمكن بدء هذه المقاطعات من خلال NVI وإرسالها باستخدام IAKالتعليمات .

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

موقع مخصص للذاكرة المنخفضة

مواقع الذاكرة بين 0000 و003F لها وظائف ثابتة محددة من قبل المعالج. جميع العناوين أدناه هي عناوين كلمات. [ 10 ]

متجهحالة
0000-0010R0 - R5، SP، PC، وPS لخيارات التشغيل/الإيقاف
0012خطأ في ناقل الكمبيوتر
0014انقطاع التيار الكهربائي غير الموجه للحاسوب
0016خيار التشغيل/الإيقاف، استعادة الطاقة، الكمبيوتر الشخصي
0018خطأ التكافؤ PC
001Aرمز العملية المحجوز PC
001Cتنسيق رمز العملية غير القانوني للكمبيوتر الشخصي
001Eخطأ XCT في الكمبيوتر الشخصي
٠٠٢٠تتبع XCT PC
0022عنوان جدول SVCA
0024SVCB PC
0026SVCC PC
0028عنوان جدول المقاطعات الموجهة (I0)
002Aعداد البرنامج (PC) للمقاطعة غير الموجهة (I1)
002Cبي بي تي بي سي
002Eقناع مقاطعة أولوية الإدخال/الإخراج
0030-003Cدفتر ملاحظات بنقطة عائمة
003Eخطأ في الفاصلة العائمة

أداء

تختلف سرعة معالج WD16 باختلاف سرعة الساعة، وتكوين الذاكرة، ورمز العملية، وأنماط العنونة. يتكون توقيت التعليمات من ثلاثة عناصر: جلب/تنفيذ التعليمات نفسها، ووقت الوصول إلى المصدر والوجهة. يعتمد العنصران الأخيران على نمط العنونة. على سبيل المثال، عند سرعة 3.3  ميجاهرتز، تستغرق تعليمة من الشكل ADD x (R m ), y (R n ) وقت جلب/تنفيذ يبلغ 3.3 ميكروثانية، بالإضافة إلى وقت المصدر البالغ 2.7 ميكروثانية، ووقت الوجهة البالغ 3.0 ميكروثانية، ليصبح إجمالي وقت التعليمة 9.0 ميكروثانية. يتم تنفيذ تعليمة ADD R m ,R n من سجل إلى سجل في 3.3 ميكروثانية. أما العمليات الحسابية ذات الفاصلة العائمة فهي أبطأ بكثير. يتراوح وقت تنفيذ تعليمة الجمع ذات الفاصلة العائمة بدقة 48 بت (دقة مفردة ونصف) عادةً بين 54 و126 ميكروثانية. تمثل دقة معالج WD16 حلاً وسطاً بين دقة الفاصلة العائمة التقليدية (مفردة ومزدوجة). [ 10 ] 

على النقيض، كان أسرع حاسوب PDP-11 في ذلك الوقت هو PDP-11/70. تستغرق تعليمة من نوع ADD x (R m ), y (R n ) زمن جلب/تنفيذ يبلغ 1.35 ميكروثانية، بالإضافة إلى زمنَي المصدر والوجهة، كل منهما 0.6 ميكروثانية، ليصبح إجمالي زمن التعليمة 2.55 ميكروثانية. في حال عدم وجود الذاكرة المُعنونة في الذاكرة المخبئية، يُضاف 1.02 ميكروثانية. يمكن تنفيذ تعليمة ADD R m ,R n من المسجلات مباشرةً من الذاكرة المخبئية في 0.3 ميكروثانية. [ 14 ] أما تعليمة الجمع العائم أحادي الدقة التي يُنفذها المعالج المساعد FP11-C، فيتراوح زمنها بين 0.9 و2.5 ميكروثانية، بالإضافة إلى زمن جلب المعاملات الذي قد يصل إلى 4.2 ميكروثانية. [ 15 ] 

تُضاعف تعليمات نقل الكتل في معالج WD16 سرعة عمليات النقل والإدخال/الإخراج للكتل تقريبًا. MOV (R1)+,(R2)+, SOB R0,loopتستغرق عملية نقل كلمة واحدة باستخدام هذه التعليمات 9.6 ميكروثانية لكل تكرار، بينما MBWU R1,R2تستغرق العملية المكافئة 4.8 ميكروثانية لكل تكرار.

أجرت جمعية مستخدمي الحاسوب سلسلة من الاختبارات المعيارية على جهاز ألفا مايكروسيستمز AM-100T، الذي يعمل بمعالج WD16، ويبلغ سعره 35,680 دولارًا أمريكيًا ( ما يعادل 139,420 دولارًا أمريكيًا في عام 2025 ). ووجدوا أن الاختبار المعياري الذي يعتمد على وحدة المعالجة المركزية استغرق 31.4 ثانية على جهاز AM-100T، مقارنةً بـ 218 ثانية لمتوسط ​​أجهزة المستخدم الواحد التي تتراوح أسعارها بين 15,000 و25,000 دولارًا أمريكيًا. [ 16 ] وفي مجموعة من أجهزة الحاسوب متعددة المستخدمين التي تتراوح أسعارها بين 25,000 و50,000 دولارًا أمريكيًا، كان أداء جهاز AM-100T ضمن الثلث الأعلى من حيث السرعة. [ 17 ]

أظهر اختبار Creative Computing Benchmark الصادر في مايو 1984 أن جهاز WD16 (في تطبيق AM-100T) احتل المرتبة 34 من بين 183 جهازًا تم اختبارها. بلغ زمن الاختبار 10 ثوانٍ، مقارنةً بـ 24 ثانية لجهاز IBM PC . [ 18 ]

منافس

Virtual Alpha Micro هو برنامج محاكاة مفتوح المصدر لمعالج WD16. كُتب بلغة C، ويحاكي معالج WD16 وبيئة أجهزة Alpha Micro AM-100. يدّعي مطوّره أنه يعمل على أنظمة Linux (بما في ذلك Raspberry Pi ) وWindows وMacintosh المكتبية، مع العلم أنه لا يتم توفير أي ملفات تنفيذية. يدعم البرنامج تشغيل نظام التشغيل Alpha Micro (AMOS) وجميع البرامج المرتبطة به. في عام 2002، منحت شركة Alpha Micro ترخيصًا محدودًا لتوزيع ملفات AMOS التنفيذية 4.x أو 5.0، بما في ذلك الأدلة، للاستخدام الشخصي فقط. [ 19 ]

انظر أيضاً

مراجع

  1. ^ دانيال فليسترا (أبريل 1977). “نظام الهواة الجديد يدعم المشاركة بالوقت” (PDF) . بايت . 2 (4): 142 – 144 . تم الاسترجاع في 21 نوفمبر 2022 .
  2. ويلكوكس، ديك (يناير 1977). "معالج دقيق 16 بت شبيه بمعالج PDP-11 لحافلة S-100" . مجلة دكتور دوبس لتمارين الحاسوب وتقويم الأسنان . 2 (1): 3-7 . تاريخ الاسترجاع: 14 يونيو 2022 .
  3. "مجموعة معالجات 16 بت، NMOS، MCP-1600/WD-16" (ملف PDF) . التصميم الإلكتروني . 25 (21): 174. 11 أكتوبر 1977. تاريخ الاسترجاع: 6 مايو 2025 .
  4. دليل مستخدم المعالج الدقيق MCP-1600 (ملف PDF) . ويسترن ديجيتال. 1975. تم الاطلاع عليه بتاريخ 28 أبريل 2022 .
  5. ستان، فييت (مايو 1983). "معركة أنظمة تشغيل الأقراص" (ملف PDF) . الحواسيب والإلكترونيات . 21 (5): 19. تم الاطلاع عليه في 8 يونيو 2023 .
  6. كريج، جون (أبريل 1977). "حول الصناعة" (ملف PDF) . كيلوبود: مجلة الحواسيب الصغيرة (4): 10. تم الاطلاع عليه بتاريخ 23 نوفمبر 2022 .
  7. 1 2 كي، هانك (أغسطس 1981). "إعادة النظر في نظام ألفا المصغر" (ملف PDF) . الأنظمة المصغرة . 2 (4): 26. تم الاطلاع عليه في 1 مارس 2022 .
  8. فوكس، توم (يناير 1982). "أنظمة الأعمال لعام 1982" . مجلة Interface Age . 7 (1): 75. تم الاطلاع عليه في 3 نوفمبر 2022 .
  9. "شركة ألفا مايكروسيستمز تحقق مبيعات قياسية" . إنفوورلد . 4 (44): 11. 8 نوفمبر 1982. تم الاطلاع عليه في 3 نوفمبر 2022 .
  10. 1 2 3 4 5 6 ويلكوكس، ديك (4 أكتوبر 1976). دليل مرجعي لمبرمج الحاسوب الصغير WD16 (ملف PDF) . ويسترن ديجيتال . تم الاطلاع عليه في 21 أغسطس 2025 .
  11. "الدليل الفني لجهاز AM-100" (ملف PDF) . شركة ألفا مايكروسيستمز . تم الاطلاع عليه بتاريخ 19 ديسمبر 2021 .
  12. "Alpha Micro AM100" . متحف الحواسيب القديمة . تم الاطلاع عليه بتاريخ 19 ديسمبر 2021 .
  13. إدارة الذاكرة باستخدام وحدة تحكم تقسيم الذاكرة (ملف PDF) (الطبعة A01 ). ألفا مايكرو. أكتوبر 1981. الصفحات 139-155 . تم الاطلاع عليه في 14 يونيو 2022 .  
  14. دليل معالج PDP-11/70 (PDF) . ديسمبر 1976. الملحق ج، توقيت التعليمات.
  15. دليل معالج DEC PDP-11، 1975، الصفحات 379-391، توقيت تعليمات FP11-C
  16. "Alpha Micro AM-100T" . تقرير معياري صادر عن جمعية مستخدمي الحاسوب . 3.2 (6): 9. نوفمبر 1980. تم الاطلاع عليه في 3 نوفمبر 2022 .
  17. "ملخص العدد 12" . رابطة مستخدمي الحاسوب: تقرير معياري . 3.2 (14): 4. يونيو 1982. تم الاطلاع عليه في 3 نوفمبر 2022 .
  18. أهل، ديفيد هـ. (مايو 1984). "معيار الحوسبة الإبداعية" . مجلة الحوسبة الإبداعية . 10 (5): 6. تم الاطلاع عليه في 2 نوفمبر 2022 .
  19. نويل، مايك. "VAM Virtual Alpha Micro" . تم الاسترجاع في 13 يوليو 2022 .