وحدة الفاصلة العائمة
وحدة الفاصلة العائمة (ويرمز لها بـ FPU اختصار Floating Point Unit) هي وحدة في الحاسوب مصممة لتنفيذ العمليات الرياضية على أعداد الفاصلة العائمة مثل الجمع والطرح والضرب والقسمة والجذر التربيعي. بعض المعالجات، خصوصاً القديمة منها، تمكّن من إجراء الدوال كحساب الدوال الاجبرية والدوال المثلثية، إلا أن معظم المعالجات الحديثة تفصل هذه الوظائف وتوفرها عن طريق برامج بدلاً من استخدام العتاد في حسابها.
كانت بعض المعالجات توفر وظائف حسابات الفاصلة العائمة عبر معالج مساعد مستقل بدلاً من استخدام الوحدات المتكاملة، ففي المعالجات الحديثة والموجهة للأغراض العامة، تُجرى تلك العمليات في دارة متكاملة صغيرة، بينما في المعالجات القديمة كانت تتلطب دارة على لوحة كبيرة أو حتى حجرة صغيرة في الحاسوب.
في معظم المعماريات الحديثة، هناك وحدة أو أكثر مستقلة لحسابات الفاصلة العائمة في المعالج، إلا أن في بعض المعالجات كالمعالجات البسيطة المضمنة في الأجهزة الصغيرة وبعض المعالجات القديمة لاتدعم حسابات الفاصلة العائمة.
حيث لاتملك جميع المعماريات وحدة لحسابات الفاصلة العائمة وهذا لتقليل تعقيد العتاد ومن ثم تقليل تكلفته، إلا أن العديد من وظائف الفاصلة العائمة يمكن تطبيقها ومحاكتها عبر برامج وخوارزميات وتُوفر سواءً من خلال نظام التشغيل أو من خلال التطبيقات، إلإ أنها عموماً تضل أبطأ من تلك الوظائف التي يوفرها المعالج مباشرة.
يوجد بعض الاختلاف بين عمليات الفاصلة العائمة وبين نظيرتها في الأعداد الصحيحة في معظم معماريات الحاسوب الحديثة، فبعض المعماريات مثل إنتل إكس 86 قد خصصت سجلات معالج للفاصلة العائمة بينما طور البعض الآخر مخططات مستقلة لإشارة نبضات الساعة.
غالبا ما يتم تجزئة عمليات الفاصلة العائمة في خط تجزئة حيث كانت عمليات الفاصلة العائمة تخضع أحيانا للتجزئة بشكل منفصل عن عمليات الأعداد الصحيحة في معماريات التدرج الفائق العامة الخالية من التنفيذ بدون ترتيب. احتوت العديد من معالجات حواسيب سطح المكتب والخوادم على أكثر من وحدة فاصلة عائمة منذ بداية ومنتصف التسعينيات في القرن الماضي.
عندما تقوم وحدة المعالجة المركزية بتنفيذ برنامج يستدعي عملية الفاصلة العائمة فإنه توجد 3 طرق لتنفيذه:
يدعم بعض عتاد الفاصلة العائمة العمليات الحسابية البسيطة جدا مثل الجمع والطرح والضرب. ومع ذلك فإن أكثر العتاد المختص بالفاصلة العائمة تعقيدا لا يدعم إلا عددا محدودا من العمليات الحسابية فقط فلا يدعم أي منها على سبيل المثال الحساب الدقيق الكيفي مباشرة.
تستخدم وحدة المعالجة المركزية سلسلة من عمليات الفاصلة العائمة الأبسط عند تنفيذها لبرنامج يستدعي عمليات فاصلة عائمة لا يدعمها العتاد بشكل مباشر. في أنظمة لا تدعم حساب الفاصلة العائمة؛ تحاكي وحدة المعالجة المركزية عمل هذا العتاد باستخدام سلسلة من عمليات حساب النقطة الثابتة التي تعمل على الأعداد الصحيحة في وحدة الحساب والمنطق.
غالبا ما يتم حزم سلسلة العمليات الضرورية لمحاكاة عمليات الفاصلة العائمة في مكتبة برمجية خاصة بها.
في بعض الحالات، قد يمكن تخصيص وحدات الفاصلة العائمة وتقسيمها بين عمليات الفاصلة العائمة الأكثر بساطة (الجمع والضرب بشكل رئيسي) والعمليات الأكثر تعقيدا مثل القسمة. في بعض الحالات الأخرى، يمكن تنفيذ العمليات الحسابية الأبسط فقط في العتاد مع – أو الشيفرة المصدرية بينما يتم تنفيذ العمليات الأكثر تعقيدا باستخدام روتين لغة الآلة (مثال: تلك المكتوبة بلغة التجميع أو لغة برمجة عالية المستوى).
في بعض المعماريات الحديثة، يتم دمج وظيفة الفاصلة العائمة مع وحدات لتنفيذ حساب سيمد، ويمكن اعتبار استبدال مجموعة تعليمات x87 بأخرى من جيل ثان من الامتدادات الفائقة في معمارية x86-64 المستخدمة في معالجات إنتل وAMD الحديثة مثالا على ذلك.
كان من الشائع في ثمانينات القرن الماضي أن تكون وحدات الفاصلة العائمة الموجودة في الحواسيب الدقيقة المتوافقة مع حاسبات آي بي إم الشخصية منفصلة تماما عن وحدة المعالجة المركزية كما وكانت تباع كإضافة زائدة في العادة.
تحوي حواسيب آي بي إم الشخصية وحواسيب XT ومعظم الأجهزة المتوافقة التي تعتمد على معالجات 80286 مقبسا لمعالج 8087 الإضافي المساعد. غالبا ما كانت تتم إضافة مقبس مخصص للأجهزة المعتمدة على معالجات 80287 و80386/إنتل 80386 إلى الحواسيب الشخصية من نوع AT أو التي تعتمد على معالج 80286 ، برغم أنه قد تمت إضافة المقبس إلى الأجهزة الأولى منها بغرض التوافق مع أجهزة المعالج 80287 بما أن أجهزة المعالج 80387 لم تكن قد ظهرت بعد.
تم دمج وحدة الفاصلة العائمة مع وحدة المعالجة المركزية في رقاقات معالج x86 بدءا من معالجات 80486 وطبق هذا الدمج تقريبا في جميع معماريات معالجات x86 التي تلتها لاحقا. يمكن اعتبار معالج إنتل 80486 استثناء ملحوظا لهذه الحالة من حيث خروجه على النمط السائد فلم يكن يحتوي على معالج إضافي مساعد، في حين كان معالج 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) خاصة بها.