الرئيسيةبحث

وحدة الحساب والمنطق

فهرس

مقدمة عن وحدة الحساب والمنطق

إن وحدة الحساب والمنطق ALU هي اختصار لكلمة Arithmetic and Logic Unit وهي دارة رقمية موجودة داخل المعالج مسؤولة عن اجراء كافة العمليات الحسابية (كالجمع والطرح) والعمليات المنطقية (مثل OR,AND,XOR ) في الحواسب، كما تقوم بعمليات المقارنة لمعرفة نتيجة المقارنات المنطقية وهي : ( أكبر من وأصغر من ويساوي ولا يساوي) ومشتقات هذه المقارنات ، وكذلك فهي توفر امكانية تخزين المعلومات بشكل مؤقت بالاضافة إلى امكانية معالجة المعلومات. فهي تعطي خرجها بالاعتماد على قرار متخذ بداخلها .

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

وفي الشكل المقابل فان A و B هما المعاملان ، R هو الخرج ، F هو الدخل من وحدة التحكم ، D هي حالة الخرج.


مما يتألف المعالح؟ يتألف المعالج عادة من وحدتين هما:

-وحدة التنفيذ Execution Unit ومهمتها تنفيذ التعليمات .

-وحدة ملائمة الممر Bus Interface Unit لنقل البيانات.

وتعتبر وحدة الحساب والمنطق كوحدة تنفيذ Execution Unit . فهي تتلقى الأوامر من وحدة التحكم Control Unit لتنفيذ التعليمة المخزنة في مسجل التعليمة Instruction Register فتقوم بتنفيذها ثم تعطي النتيجة التي تخزن عادة في الذاكرة الرئيسية RAM وتستعين هي الأخرى بالمسجلات لإتمام عملها.

أقسامها:

تنقسم وحدة الحساب والمنطق إلى ثلاث وحدات:

-وحدة الفاصلة العائمة :

من الصعوبة على المعالج أن يقوم بحساب أعداد الفاصلة العائمة ( وهي الأعداد التي بها فاصلة عشرية ومن أمثلتها ( 2.5565 و 8856.36532 و 0.220003 ) لأنه في هذه الحالة سوف يستهلك الكثير من قوة المعالجة في حساب عملية واحدة . ووحدة الفاصلة العائمة متخصصة في العمليات الحسابية الخاصة بالفاصلة العائمة. وتلعب هذه الوحدة دورا رئيسيا في سرعة تشغيل البرامج التي تعتمد بشكل كبير على الأعداد العشرية وهي في الغالب الألعاب الثلاثية الأبعاد وبرامج الرسم الهندسي. تساعد قوة وحدة الفاصلة العائمة الكبيرة في تسريع الألعاب الثلاثية الأبعاد ، مع أن دور المعالج قد قل من هذه الناحية بفضل دخول البطاقات الرسومية المسرعةAGP بقوتها العالية مما قلل من الاعتماد على المعالج المركزي في هذا المجال . توجد وحدة الفاصلة العائمة في المعالجات 486 فما أحدث داخل المعالج ، وقد كانت توضع في المعالجات386 وما قبله خارج المعالج مما يجعل عملها أبطأ.

-وحدة الأعداد الصحيحة :

و تختص هذه الوحدة بالقيام بحسابات الأعداد الصحيحة ، وتستعمل الأرقام الصحيحة في التطبيقات ثنائية الأبعاد كالوورد Word وإكسل Excel وبرامج الرسم الثنائية الأبعاد . وتعتبر وحدة الأعداد الصحيحة مهمة لأن معظم البرامج التي نستخدمها تعتمد على هذه الوحدة. IUOPYD QWSZ ZSAW HGFLI

-المسجلات:

المسجلات هي عبارة ذاكرة سريعة تستخدم لكي يخزن فيها المعالج الأرقام التي يريد أن يجري عليها حساباته ، فوحدة الحساب والمنطق لا يمكنها تنفيذ أي عملية حسابية إلا بعد أن تجلب الأرقام المراد إجراء العمليات عليها إلى المسجلات. حيث أن حجم المسجلات مهم لأنه يحدد حجم البيانات التي يستطيع الحاسب إجراء الحسابات عليها.


*ماذا نعني بقولنا عند تسمية المعالج بمعالج ذو 32bits او 64bits؟

الأساس في ذلك هو وحدة الحساب والمنطق ALU ومسجلاتها وبالتحديد طول "بتات" الأعداد الصحيحة التي من الممكن التعامل معها داخل المعالج. ففي معالج 32bits مثلا ستكون وحدة الحساب والمنطق قادرة على إجراء العمليات الحسابية والمنطقية على أعداد بطول 32bits ، وبما أن وحدة الحساب والمنطق تعمل بشكل عام مع المسجلات فمن الطبيعي أن تكون المسجلات بنفس الحجم.

بناء وحدة حساب ومنطق:

بناء الوحدات العملياتية المستخدمة في تمثيل ممر المعطيات:

يمكن ان تستخدم وحدات عملياتية منفصلة تؤدي كل منها عملية محددة لتشكيل ممر المعطيات مثل استخدام الجوامع بأنواعها والضوارب وباقي العمليات الرياضية. العمليات التي تجريها وحدة الحساب والمنطق تتعلق بالبنية الداخلية لهذه الوحدة وبشكل عام هناك نوعان أساسيان لبناء الوحدات العملياتية:

1.البنية من نوع CISC :

في هذا النوع تحتوي وحدة الحساب والمنطق على أجزاء بنيوية تقوم بإنجاز التعليمات الحسابية المعقدة وتنعكس هذه التعليمات الحسابية المعقدة برمجيا على شكل تعليمة في لغة الآلة الخاصة بهذا المعالج، وهذه التعليمات تثقل العبئ على المعالج.

2.البنية من نوع RISC :

وفي هذا النوع تحتوي وحدة الحساب والمنطق على التعليمات الحسابية والمنطقية الأساسية ( Add, Sub, Not, Or, And) . ولا تحتوي هذه الوحدة على بنية hardware لانجاز التعليمات الحسابية المعقدة ( كالضرب أو التقسيم أو الرفع إلى قوة ) وإنما يتم انجاز هذه العمليات المعقدة باستخدام مجموعة من التعليمات الأساسية، مثلا... تحول عملية الضرب إلى جمع متكرر. البنية من نوع RISC تعتبر أسهل في التصميم وتعطي مجموعة أبسط من التعليمات ويمكن تعقيد هذا النوع من الوحدات في تمثيل التعليمات المعقدة إما بشكل بنيوي وذلك بتطوير وحدة التحكم وإضافة مسجلات على بنية المعالج، أو ان يتم ذلك بشكل برمجي باستخدام خوارزميات متطورة.

بناء وحدة ALU من نوع RISC:

يتم انجاز كافة العمليات داخل ALU ثم يتم اختيار عملية معينة...


مثلا تحتوي هذه الخلية في الشكل السابق على عمليتين منطقيتين وعملية جمع/طرح ومدخل less . يطبق الدخل الرئيسي لهذه الوحدة على مداخل كافة العمليات الداخلية وتختارالعملية المطلوبة عبر الناخب. يتحكم بالناخب الأول المدخل Binvert الذي يكون عمله كالتالي :

Binvert=0 ← فالعملية جمع

Binvert=1 ← فالعملية طرح

أما بالنسبة للناخب الآخر:

Operation=00 ← فالعملية AND

Operation=01 ← فالعملية OR

Operation=10 ← فالعملية إما جمع أو طرح

Operation=11 ← فالعملية " Less"

فإذا أردنا تنفيذ عملية ما فيتم إعطاء رقم العملية عن طريق المداخل Operation و Binvert من وحدة التحكم"كما ذُكر سابقا" فتفهم وحدة الحساب والمنطق العملية المطلوبة منها.

والمخرج Set هو عبارة عن خط يعطي نتيجة الجامع الكامل مهما كانت حالة العملية Operation ، أما المخرج "العلم" OverFlow فيتحسس في حال حدوث طفحان.

كما يمكن وضع عدد أكبر من العمليات وبذلك يزيد عدد مداخل النواخب وعدد خانات Operation .


وصل مجموعة من ALU:

في الشكل السابق لدينا دارة وحدة حساب ومنطق على 32bits، حيث يتم أخد الحمل Carry Out في كل مرة وإدخاله إلى المدخل Carry In للدارة التالية لها مباشرة.. وبالتالي نكون قد حصلنا على دارة تقوم بتنفيذ مجموعة من العمليات على عددين مؤلفين من 32bits باستخدام ALU.

إن العملية "Set On Less" هي عملية مقارنة، وعملها كالتالي :

A<B فالناتج ← 1…0000

A≥B فالناتج ← 0…0000

وبمعني آخر فهي تنفذ A-B. فإذا كانت نتيجة الطرح سالبة يوضع واحد "1" في الخانة Result0 من الناتج وباقي الخانات أصفار. أما اذا كانت نتيجة الطرح موجبة فيوضع صفر "0" في كل خانات الناتج . ولتحقيق ذلك، ففي دارة ALU31 "الأخيرة" أخذنا خط Set إلى المدخل Less في دارة ALU0 "الأولى" ويمكن ان تكون صفر أو واحد وذلك حسب حالة الجامع الكامل.

كذلك يمكن وصل جميع المخارج Results إلى البوابة NOR بحيث يتحسس علم الصفر Zero Flag عندما تكون قيم جميع المخارج هي صفر منطقي.

وكذلك الحال يمكن معرفة حالة باقي الأعلام بتصميم الدارة الخاصة بكل علم.

المراجع:

- المحاضرات الجامعية لمادة بنية الحاسب1 كلية الهندسة الكهربائية جامعة حلب

- http://cs.gmu.edu/~rsingh9/365/alu/z.pdf

- http://en.wikipedia.org/wiki/Arithmetic_logic_unit