ضارب ثنائي
الضارب الثنائي هو ما يستخدم لتنفيذ عملية الضرب للأعداد الثنائية.
- في أي عملية ضرب ثنائية كانت أو عشرية، فإن عدد الخانات في الناتج يساوي ،إما مجموع عدد خانات العدد المضروب وخانات العدد المضروب به، أو ذلك المجموع ناقصاً واحد.لنفترض أن الجدول (الذاكرة الدائمة Rom)يحتوي على كل الجداءات المحتملة لعددين بطول(4)خانات لذا سيلزمنا أربعة خطوط دخل لكل عدد مطلوب ضربه ،أو ثمانية دخل للعددين.[1][2]
- إن هذه الخطوط الثمانية تحمل تركيب مختلف من الأشارات الثنائية، وكل تركيب يمثل عنون لكلمة واحدة في الذاكرة. - إن استطاعة الذاكرة اللازمة لإجراء الجداء المذكور ستكون (2048 bits) لأن ناتج جداء عددين بطول(4)خانات يمكن أن يكون بطول (8)خانات.(الشكل المجاور يبين ذلك).
إن هذه الجداول (up table- Look)جيدة كأي طريقة أخرى لإنجاز عملية ضرب عددين بطول(4)خانات، ولكن إذا كان طول العدد أكبر من (4)خانات ،فإن حجم الذاكرة المطلوبة سينمو بشكل سريع ،فمن أجل ضرب عددين بطول (5) فإن خانات عدد الكلمات يكون Word) (،وبما أن طول الخرج عشر خانات تكون سعة الذاكرة المطلوبة (1024x10=10240) خانة ،أما من أجل جداء أعداد بأطوال (8)خانات فإن سعة الذاكرة الازمة ستتجاوز المليون خانة، ولا توجد حتى الآن شريحة تحتوي على مليون خانة وإذا وصلت عدة ذاكرات صغيرة لتعطي السعة المطلوبة فإن ثمنها سيكون مرتفع جداً وتكون العملية غير اقتصادية.
- الشكل السابق يبين مخطط دارة جداء (Multiplier)لعددين بطول ثماني خانات
إن كل ذاكرة من الذاكرات المستخدمة ذات ثمانية مداخل وثمانية مخارج ،لكن المخارج الثمانية في كل ذاكرة وزعت إلى مجموعتين، مكل مجموعة من هذه المجموعات تطابق أربع خانات من خانات الناتج الستة عشر. إذا رقمنا خانات الناتج من 0 وحتى 15 بحيث تكون الخانة ذات الدلالة الصغرى (Least Significant) في أقصى اليمين، تكون مجموعات الخرج موزعة كما يلي(0 - 3, 4 - 7, 8 – 11, 12 - 15) إن الذاكرة ذات المداخل 4(B∆) و 4(A∆) لا علاقة لها با لأ صفار الخلفية ،لذا فإن مخارجها تساهم في خانات المجموعتين (0 - 3, 4 - 7) ،و بما أن أياً من الذكرات الأخرى لن تساهم في المجموعة (0 -3) ،لذلك فلا حاجة لدارة جمع للحصول على الخرج في هذه المجموعة. بما أن الأربعة أصفار الخلفية في الذاكرتين المتوسطتين تشارك في الدخل، وهذه ا أصفار الأربعة غير موصلة للذاكرة، ولكنها تطابق المجموعة(0 - 3) لهذا فإن المخارج الحقيقية للذاكرتين تطابق الخانات (4 – 7, 8 - 11)وتساهم الذاكرات الثلاث التي تحوي دخل(∆)واحد على الأقل في المجموعة (4 -7)،و تجمع الزمر الثلاث الذاكرات الثلاث السابقة بواسطة دارتي جمع لتعطي الخانات (4 -7)من ناتج الجمع. وأخيرًا تحتوي الذاكرة الأخيرة على ثمانية أصفار ناتجة عن المدخلين (A4)و(B4) وهذه الأصفار تطابق الخانات (0-7) ،لهذا فإن مخارج هذه الذاكرة تشارك في الخانات (11-15)كماتوجد ثلاث ذاكرات مخارجها تطابق الخانات (8-11) 0 - لتجميع الثلاث زمر الناتجة عن الذاكرات الثلاث نستخدم دارتي جمع بأربع خانات للحصول على الخانات (8-11)في الناتج 0 - إن المخارج الأربعة الباقية من الذاكرة الأخيرة سوف تعطي وحدها الخانات (12-15)للناتج ،وذلك إذا لم يحصل انزياح (Carry)، من دارات الجمع السابقة، وبفرض أن هذا الانزياح قد حصل فإننا نحتاج إلى دارة جمع خامسة لأخذ هذا الانزياح بعين الاعتبار وبالطبع فإن دارة الجمع هذه كغيرها من الدارات السابقة بأربع خانات ومدخل للانزياح وقد وصل بالشكل المبين لأخذ الانزياحات من المراحل السابقة بعين الاعتبار.
المراجع
- "The Evolution of Forth" by Elizabeth D. Rather et al. نسخة محفوظة 18 أبريل 2016 على موقع واي باك مشين.
- "Interfacing a hardware multiplier to a general-purpose microprocessor" نسخة محفوظة 26 مايو 2020 على موقع واي باك مشين.
- كتاب الآلات الحاسبة لد. سعيد كريّم.