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

ملف:KL Intel C80287.jpg
معالج إنتل 80287

وحدة الفاصلة العائمة (ويرمز لها بـ FPU وتسمى بالعامية الإنجليزيةالمعالج الإضافي المساعد) هي جزء من نظام الحاسوب المصمم خصيصا لتنفيذ عمليات على أعداد الفاصلة العائمة؛ وتعتبر عمليات الجمع والطرح والضرب والقسمة والجذر التربيعي مثالا نموذجيا على هذه العمليات. يمكن لبعض الأنظمة (وخصوصا معماريات الحاسوب التي تعتمد على الشيفرة الدقيقة) أن تؤدي وظائف متسامية مختلفة مثل حسابات الدوال الأسيّة أو حساب المثلثات برغم أن معظم المعالجات الحديثة تؤدي هذه الحسابات بواسطة مكتبة البرامج الروتينية.

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

قامت بعض الأنظمة في الماضي بتنفيذ عمليات الفاصلة العائمة باستخدام معالج إضافي مساعد بدلا من الوحدات المتكاملة، غالبا ما كانت وحدة الفاصلة العائمة في حقبة الحاسوب الدقيق عبارة عن دارة متكاملة منفردة فيما يمكن أن تكون عبارة عن لوحة دارات مطبوعة كاملة أو حجيرة صغيرة في الأنظمة القديمة.

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

يوجد بعض الاختلاف بين عمليات الفاصلة العائمة وبين نظيرتها في الأعداد الصحيحة في معظم معماريات الحاسوب الحديثة، فبعض المعماريات مثل إنتل x86 قد خصصت سجلات معالج للفاصلة العائمة بينما طور البعض الآخر مخططات مستقلة لإشارة نبضات الساعة.

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

عندما تقوم وحدة المعالجة المركزية بتنفيذ برنامج يستدعي عملية الفاصلة العائمة فإنه توجد 3 طرق لتنفيذه:

  • محاكي وحدة الفاصلة العائمة (مكتبة الفاصلة العائمة)
  • إضافات وحدة الفاصلة العائمة
  • وحدة الفاصلة العائمة المدمجة

مكتبة الفاصلة العائمة

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

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

غالبا ما يتم حزم سلسلة العمليات الضرورية لمحاكاة عمليات الفاصلة العائمة في مكتبة برمجية خاصة بها.

وحدات الفاصلة العائمة المتكاملة

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

في بعض المعماريات الحديثة، يتم دمج وظيفة الفاصلة العائمة مع وحدات لتنفيذ حساب سيمد، ويمكن اعتبار استبدال مجموعة تعليمات x87 بأخرى من جيل ثان من الامتدادات الفائقة في معمارية x86-64 المستخدمة في معالجات إنتل وAMD الحديثة مثالا على ذلك.

إضافات وحدات الفاصلة العائمة

طالع أيضاً: معالج إضافي

كان من الشائع في ثمانينات القرن الماضي أن تكون وحدات الفاصلة العائمة الموجودة في الحواسيب الدقيقة المتوافقة مع حاسبات آي بي إم الشخصية منفصلة تماما عن وحدة المعالجة المركزية كما وكانت تباع كإضافة زائدة في العادة.

تحوي حواسيب آي بي إم الشخصية وحواسيب XT ومعظم الأجهزة المتوافقة التي تعتمد على معالجات 80286 مقبسا لمعالج 8087 الإضافي المساعد. غالبا ما كانت تتم إضافة مقبس مخصص للأجهزة المعتمدة على معالجات 80287 و80386/80386SX إلى الحواسيب الشخصية من نوع AT أو التي تعتمد على معالج 80286 ، برغم أنه قد تمت إضافة المقبس إلى الأجهزة الأولى منها بغرض التوافق مع أجهزة المعالج 80287 بما أن أجهزة المعالج 80387 لم تكن قد ظهرت بعد.

تم دمج وحدة الفاصلة العائمة مع وحدة المعالجة المركزية في رقاقات معالج x86 بدءا من معالجات 80486 وطبق هذا الدمج تقريبا في جميع معماريات معالجات x86 التي تلتها لاحقا. يمكن اعتبار معالج 80486SX استثناء ملحوظا لهذه الحالة من حيث خروجه على النمط السائد فلم يكن يحتوي على معالج إضافي مساعد، في حين كان معالج 80487 عبارة عن وحدة معالجة مركزية كاملة تحوي وحدة فاصلة عائمة مدمجة في المعالج؛ وكان يتم تعطيل معالج 80486SX الأصلي عند تثبيت معالج 80487.

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

توافرت وحدات الفاصلة العائمة كمعالجات إضافية في عائلة معالجات موتورولا 68000 إضافة إلى معماريات إنتل. شاع استخدام وحدات FPU من نوع 68881 و68882 في حواسيب محطات العمل التي تعتمد على عائلة موتورولا 68020/ 68030 مثل سلسلة Sun-3؛ كما وتمت إضافة هذه الوحدات إلى نماذج ماكنتوش المتفوقة وسلسلة أميغا التي تنتجها شركة كومودور. على النقيض من الأنظمة المتوافقة مع حواسيب IBM الشخصية، لم يكن استخدام المقابس اللازمة لإضافة المعالج الإضافي أمرا شائعا في الأنظمة الأقل تطورا. عندما قامت شركة موتورلا بتطوير معالجها رقم 68040 فإنها دمجت وحدة الفاصلة العائمة مع وحدة المعالجة المركزية ولكن بعكس سلسلة x86، فإن معالج 68LC040 الذي لا يحوي وحدة فاصلة عائمة مدمجة كان متوافرا أيضا وبسعر أقل.

توجد أيضا معالجات FPU مساعدة لوحدات المتحكم الدقيق (MCUs/µCs) – كمبيوتر اللوح الواحد (SBCs) الذي يعمل على توفير قدرات تدعم حسابيات الفاصلة العائمة في الأنظمة التي قد لا تكون لها وظيفة محددة. تختلف هذه المعالجات المساعدة عن بعضها عند مقارنتها مع معالجات الفاصلة العائمة المساعدة الأكثر تقليدية مثل سلسلة 80x87 في أن هذه الوحدات المستقلة عن المعالج المضيف تمتلك متطلبات برمجية خاصة بها وغالبا ما يكون لها بيئة تطوير متكاملة (IDE) خاصة بها.

انظر أيضا

مراجع

ca:FPU cs:Matematický koprocesor de:Gleitkommaeinheit el:Μονάδα Κινητής Υποδιαστολής Floating-point unit]] es:Unidad de coma flotante fa:واحد ممیز شناور fr:Unité de calcul en virgule flottante hu:FPU id:Unit titik mengambang it:Unità di calcolo in virgola mobile ja:FPU ko:부동 소수점 장치 nl:Floating-point unit pl:Koprocesor pt:Unidade de ponto flutuante ru:Математический сопроцессор simple:Floating point unit sk:Matematický koprocesor sl:Koprocesor sv:Flyttalsprocessor zh:浮点运算器