وحدة النقطة العائمة

وحدة النقطة العائمة ( FPU )، وحدة المعالجة الرقمية ( NPU )، [1] أو معالج الرياضيات العامي ، هي جزء من نظام كمبيوتر مصمم خصيصًا لإجراء عمليات على أرقام النقطة العائمة . [2] العمليات النموذجية هي الجمع والطرح والضرب والقسمة والجذر التربيعي . يمكن لبعض وحدات النقطة العائمة أيضًا إجراء وظائف متسامية مختلفة مثل الحسابات الأسية أو المثلثية ، ولكن الدقة يمكن أن تكون منخفضة، [3] [4] لذلك تفضل بعض الأنظمة حساب هذه الوظائف في البرامج.
في بنيات الكمبيوتر للأغراض العامة ، قد يتم دمج وحدة معالجة عائمة واحدة أو أكثر كوحدات تنفيذ داخل وحدة المعالجة المركزية ؛ ومع ذلك، فإن العديد من المعالجات المضمنة لا تحتوي على دعم مادي لعمليات النقطة العائمة (بينما يتوفر لديها بشكل متزايد كمعيار).
عندما تقوم وحدة المعالجة المركزية بتنفيذ برنامج يستدعي عملية فاصلة عائمة، فهناك ثلاث طرق لتنفيذها:
- محاكي وحدة النقطة العائمة (مكتبة النقطة العائمة في البرنامج)
- أجهزة FPU الإضافية
- وحدة النقطة العائمة المتكاملة (في الأجهزة)
تاريخ
في عام 1954، كان الحساب بالفاصلة العائمة ميزة قياسية في جهاز IBM 704 ، وهو أحد التحسينات الرئيسية التي أدخلت على الجهاز السابق IBM 701. وقد تم نقل هذه الميزة إلى أجهزة IBM 709 و7090 و7094 التي خلفته.
في عام 1963، أعلنت شركة Digital عن PDP-6 ، الذي كان يحتوي على الفاصلة العائمة كميزة قياسية. [5]
في عام 1963، تميز جهاز GE-235 بـ "وحدة حسابية مساعدة" للحسابات ذات الفاصلة العائمة والدقة المزدوجة. [6]
تاريخيًا، طبقت بعض الأنظمة الفاصلة العائمة باستخدام معالج مساعد بدلاً من كونها وحدة متكاملة (ولكن الآن بالإضافة إلى وحدة المعالجة المركزية، على سبيل المثال، وحدات معالجة الرسوميات - التي تعد معالجات مساعدة لا يتم دمجها دائمًا في وحدة المعالجة المركزية - تحتوي على وحدات معالجة عائمة كقاعدة عامة، في حين لم تكن الأجيال الأولى من وحدات معالجة الرسوميات تحتوي على وحدات معالجة عائمة). يمكن أن يكون هذا عبارة عن دائرة متكاملة واحدة أو لوحة دوائر كهربائية كاملة أو خزانة. عندما لا يتم توفير أجهزة حساب الفاصلة العائمة، يتم إجراء حسابات الفاصلة العائمة في البرنامج، مما يستغرق وقتًا أطول للمعالج، ولكنه يتجنب تكلفة الأجهزة الإضافية. بالنسبة لهندسة كمبيوتر معينة، يمكن محاكاة تعليمات وحدة الفاصلة العائمة بواسطة مكتبة من وظائف البرنامج؛ قد يسمح هذا بتشغيل نفس كود الكائن على أنظمة بها أو بدون أجهزة فاصلة عائمة. يمكن تنفيذ المحاكاة على أي من المستويات العديدة: في وحدة المعالجة المركزية ككود صغير ، أو كوظيفة نظام تشغيل ، أو في كود مساحة المستخدم . عندما تكون وظيفة الأعداد الصحيحة فقط متاحة، تُستخدم طرق CORDIC بشكل شائع لتقييم الوظيفة المتسامية . [ بحاجة لمصدر ]
في أغلب بنيات الحاسب الحديثة، يوجد تقسيم ما بين عمليات الفاصلة العائمة وعمليات الأعداد الصحيحة . ويختلف هذا التقسيم بشكل كبير حسب البنية؛ فبعضها يحتوي على سجلات فاصلة عائمة مخصصة، بينما يصل البعض الآخر، مثل Intel x86 ، إلى حد أنظمة التوقيت المستقلة. [7]
تم تنفيذ روتينات CORDIC في معالجات Intel x87 المساعدة ( 8087 ، [8] [9] [10] [11] [12] 80287، [12] [13] 80387 [12] [13] ) حتى سلسلة المعالجات الدقيقة 80486 [8] ، وكذلك في Motorola 68881 [8] [9] و68882 لبعض أنواع تعليمات النقطة العائمة، بشكل أساسي كطريقة لتقليل عدد البوابات (وتعقيد) نظام FPU الفرعي.
غالبًا ما يتم نقل العمليات ذات النقطة العائمة في خط أنابيب . في البنيات الفائقة السابقة التي لا تتطلب تنفيذًا خارج الترتيب العام ، كانت عمليات النقطة العائمة أحيانًا يتم نقلها في خط أنابيب منفصلًا عن عمليات الأعداد الصحيحة.
تستخدم الهندسة المعمارية المعيارية للمعالج الصغير Bulldozer وحدة معالجة عائمة خاصة تسمى FlexFPU، والتي تستخدم تعدد الخيوط المتزامن . كل نواة عدد صحيح فيزيائي، اثنتان لكل وحدة، تكون ذات خيط واحد، على النقيض من Hyperthreading من Intel ، حيث تتقاسم خيطان افتراضيان متزامنان موارد نواة فيزيائية واحدة. [14] [15]
مكتبة النقطة العائمة
بعض أجهزة النقطة العائمة تدعم العمليات البسيطة فقط: الجمع والطرح والضرب. ولكن حتى أجهزة النقطة العائمة الأكثر تعقيدًا لديها عدد محدود من العمليات التي يمكنها دعمها - على سبيل المثال، لا تدعم وحدات النقطة العائمة العمليات الحسابية ذات الدقة التعسفية بشكل مباشر .
عندما تقوم وحدة المعالجة المركزية بتنفيذ برنامج يستدعي عملية ذات فاصلة عائمة لا يدعمها الجهاز بشكل مباشر، تستخدم وحدة المعالجة المركزية سلسلة من عمليات الفاصلة العائمة الأكثر بساطة. في الأنظمة التي لا تحتوي على أي أجهزة ذات فاصلة عائمة، تحاكي وحدة المعالجة المركزية هذه العمليات باستخدام سلسلة من العمليات الحسابية الأكثر بساطة ذات الفاصلة الثابتة والتي تعمل على وحدة المنطق الحسابي الصحيحة .
غالبًا ما يتم تضمين البرنامج الذي يسرد سلسلة العمليات اللازمة لمحاكاة عمليات الفاصلة العائمة في مكتبة الفاصلة العائمة .
وحدات النقطة العائمة المتكاملة
في بعض الحالات، قد تكون وحدات النقطة العائمة متخصصة، ومقسمة بين عمليات النقطة العائمة البسيطة (الجمع والضرب بشكل أساسي) والعمليات الأكثر تعقيدًا، مثل القسمة. في بعض الحالات، قد يتم تنفيذ العمليات البسيطة فقط في الأجهزة أو التعليمات البرمجية الدقيقة ، بينما يتم تنفيذ العمليات الأكثر تعقيدًا كبرمجيات.
في بعض البنيات الحالية، يتم دمج وظيفة FPU مع وحدات SIMD لإجراء حسابات SIMD؛ ومن الأمثلة على ذلك توسيع مجموعة تعليمات x87 بمجموعة تعليمات SSE في بنية x86-64 المستخدمة في معالجات Intel وAMD الأحدث.
وحدات النقطة العائمة الإضافية
تدعم العديد من نماذج PDP-11 ، مثل PDP-11/45، [16] وPDP-11/34a، [17] : 184–185 وPDP-11/44، [17] : 195، 211 وPDP-11/70 ، [ 17] : 277، 286–287 وحدة فاصلة عائمة إضافية لدعم تعليمات الفاصلة العائمة. يمكن لـ PDP-11/60، [17] : 261 و MicroPDP-11/23 [18] والعديد من نماذج VAX [19] [20] تنفيذ تعليمات فاصلة عائمة بدون وحدة فاصلة عائمة إضافية (تطلب MicroPDP-11/23 خيارًا إضافيًا للرمز الصغير)، [18] وعرضت مسرعات إضافية لتسريع تنفيذ هذه التعليمات بشكل أكبر.
في ثمانينيات القرن العشرين، كان من الشائع في أجهزة الكمبيوتر الشخصية المتوافقة مع IBM أن تكون وحدة FPU منفصلة تمامًا عن وحدة المعالجة المركزية ، وعادةً ما يتم بيعها كإضافة اختيارية. ولا يتم شراؤها إلا إذا لزم الأمر لتسريع أو تمكين البرامج التي تتطلب الكثير من الرياضيات.
كان لدى IBM PC و XT ومعظم الأجهزة المتوافقة القائمة على 8088 أو 8086 مقبس لمعالج 8087 المساعد الاختياري. كانت الأنظمة القائمة على AT و 80286 مقابس بشكل عام للأجهزة القائمة على 80287 و 80386/80386SX - للأجهزة القائمة على 80387 و 80387SX على التوالي، على الرغم من أن الأجهزة المبكرة كانت مقابس لـ 80287، حيث لم يكن 80387 موجودًا بعد. قامت شركات أخرى بتصنيع معالجات مساعدة لسلسلة Intel x86. وشملت هذه Cyrix و Weitek . اختارت Acorn Computers WE32206 لتقديم دقة مفردة ومزدوجة وممتدة [21] لمجموعة Archimedes التي تعمل بنظام ARM ، حيث قدمت مجموعة بوابات لربط معالج ARM2 مع WE32206 لدعم تعليمات النقطة العائمة ARM الإضافية. [22] عرضت شركة Acorn لاحقًا معالج FPA10 المساعد، الذي طورته شركة ARM، للعديد من الأجهزة المجهزة بمعالج ARM3. [23]
كانت المعالجات المساعدة متاحة لعائلة Motorola 68000 ، 68881 و68882 . كانت شائعة في محطات العمل التي تعتمد على Motorola 68020 / 68030 ، مثل سلسلة Sun-3 . كما تمت إضافتها بشكل شائع إلى الطرز الأعلى مستوى من سلسلة Apple Macintosh وCommodore Amiga ، ولكن على عكس الأنظمة المتوافقة مع IBM PC، لم تكن مقابس إضافة المعالج المساعد شائعة في الأنظمة الأقل مستوى.
توجد أيضًا وحدات معالجة مساعدة إضافية لوحدات المتحكم الدقيق (MCUs/μCs)/ الكمبيوتر أحادي اللوحة (SBCs)، والتي تعمل على توفير القدرة على إجراء العمليات الحسابية ذات الفاصلة العائمة . هذه الوحدات المساعدة مستقلة عن المعالج المضيف، وتمتلك متطلبات برمجة خاصة بها ( عمليات ، مجموعات تعليمات ، إلخ) وغالبًا ما يتم تزويدها ببيئات تطوير متكاملة (IDEs) خاصة بها.
انظر أيضا
- وحدة الحساب والمنطق (ALU)
- وحدة توليد العناوين (AGU)
- وحدة التحميل والتخزين
- يتم استخدام روتينات CORDIC في العديد من وحدات FPU لتنفيذ الوظائف ولكنها لا تزيد عدد البوابات بشكل كبير
- وحدة التنفيذ
- معيار الفاصلة العائمة IEEE 754
- نظام النقطة العائمة السداسية عشر من IBM
- وحدة معالجة الرسوميات
- عملية الضرب والتجميع
مراجع
- ^ https://www.computinghistory.org.uk/det/35216/Intel-80287XL-Numeric-Processing-Unit/
- ^ أندرسون، ستانلي ف.؛ إيرل، جون ج.؛ جولدشميت، روبرت إليوت؛ باورز، دون م. (يناير 1967). "نموذج IBM System/360 91: وحدة تنفيذ النقطة العائمة". مجلة IBM للبحث والتطوير . 11 (1): 34-53. doi :10.1147/rd.111.0034. ISSN 0018-8646.
- ^ داوسون، بروس (2014-10-09). "إنتل تقلل من تقدير حدود الخطأ بمقدار 1.3 كوينتيليون". randomascii.wordpress.com . تم الاسترجاع في 2020-01-16 .
- ^ "تحسينات توثيق FSIN في "دليل مطوري برامج معماريات Intel® 64 وIA-32"". intel.com . 2014-10-09. مؤرشف من الأصل في 2020-01-16 . تم الاسترجاع في 2020-01-16 .
- ^ "PDP-6 Handbook" (PDF) . www.bitsavers.org . مؤرشف من الأصل (PDF) في 2022-10-09.
- ^ "مستندات GE-2xx". www.bitsavers.org . CPB-267_GE-235-SystemManual_1963.pdf، ص. IV-4.
- ^ "عائلة Intel 80287". www.cpu-world.com . تم الاسترجاع في 2019-01-15 .
- ^ abc Muller, Jean-Michel (2006). Elementary Functions: Algorithms and Implementation (الطبعة الثانية). بوسطن، ماساتشوستس: بيركهاوزر . ص. 134. ISBN 978-0-8176-4372-0. LCCN 2005048094 . تم الاسترجاع في 2015-12-01 .
- ^ بالمر، جون ف.؛ مورس، ستيفن بول (1984). The 8087 Primer (الطبعة الأولى). John Wiley & Sons Australia, Limited . ISBN 0471875694. 9780471875697 . تم الاسترجاع في 2016-01-02 .
- ^ جلاس، ل. برينت (يناير 1990). "معالجات الرياضيات المساعدة : نظرة على ما تفعله وكيف تفعله". بايت 15 (1): 337-348. ISSN 0360-5280.
- ^ abc Jarvis, Pitts (1990-10-01). "تنفيذ خوارزميات CORDIC – روتين مضغوط واحد لحساب الدوال المتسامية". مجلة الدكتور دوب : 152–156 . تم الاسترجاع في 2016-01-02 .
- ^ ab Yuen, AK (1988). "معالجات النقطة العائمة من Intel". سجل مؤتمر Electro/88 : 48/5/1–7.
- ^ "AMD Steamroller vs Bulldozer". WCCFtech . مؤرشف من الأصل في 9 مايو 2015 . تم الاسترجاع في 14 مارس 2022 .
- ^ Halfacree, Gareth (28 أكتوبر 2010). "AMD تكشف عن Flex FP". bit-tech.net . مؤرشف من الأصل في 22 مارس 2017 . تم الاسترجاع 29 مارس 2018 .
{{cite web}}:CS1 maint: عنوان URL غير مناسب ( الرابط ) - ^ PDP-11/45 دليل المعالج (PDF) . شركة المعدات الرقمية . 1973. الفصل 7 "معالج النقطة العائمة".
- ^ دليل معالج PDP-11 (PDF) . شركة Digital Equipment Corporation . 1979.
- ^ ab MICRO/PDP-11 Handbook (PDF) . Digital Equipment Corporation . 1983. ص. 33.
- ^ VAX – Hardware Handbook Volume I – 1986 (PDF) . شركة المعدات الرقمية . 1985.
- ^ VAX – Hardware Handbook Volume II – 1986 (PDF) . شركة المعدات الرقمية . 1986.
- ^ "معالج مساعد Western Electric 32206". www.cpu-world.com . تم الاسترجاع في 2021-11-06 .
- ^ Fellows, Paul (مارس 1990). "برمجة ARM: المعالج المساعد للنقطة العائمة". A&B Computing . ص 43-44.
- ^ "Acorn Releases Floating Point Accelerator" (بيان صحفي). Acorn Computers Limited. 5 يوليو 1993. تم الاسترجاع في 7 أبريل 2021 .
قراءة إضافية
- فيلياترولت، رايموند (2003). "ببساطة FPU".
