יחידת נקודה צפה

אוסף מעבדי עזר מתמטיים של אינטל ממשפחת x87
יחידת נקודה צפה (באנגלית: Floating-point unit; בראשי תיבות: FPU, נקרא גם מעבד עזר מתמטי) היא רכיב ממוחשב שתוכנן במיוחד לביצוע פעולות על מספרים ממשיים בייצוג נקודה צפה. פעולות אופייניות הן חיבור, חיסור, כפל, חילוק, ושורש ריבועי. חלק ממעבדי העזר המתמטיים יכולים לבצע גם פונקציות טרנסצנדנטיות שונות כמו חישובים אקספוננציאליים או טריגונומטריים, אך הדיוק בדרך כלל יהיה נמוך מאוד, ולפיכך מערכות מסוימות מעדיפות לחשב את הפונקציות הללו בעזרת מימוש תוכנתי.

במעבדים לא ייעודים, מעבד עזר מתמטי אחד או יותר עשוי להיות משולב בתוך יחידת העיבוד המרכזית. עם זאת, במעבדים ייעודיים במערכות משובצות מחשב לרוב אין תמיכה חומרתית בנקודה צפה (אך זה נעשה מקובל יותר ויותר).

כאשר מעבד מפעיל תוכנית שקוראת לפעולה על נקודה צפה, ישנן שלוש דרכים לבצע את הפעולה:
* אמולטור של נקודה צפה.
* תוסף של מעבד עזר מתמטי חיצוני.
* מעבד עזר מתמטי משולב בתוך המעבד.

== היסטוריה ==
בשנת 1954, חברת IBM החלה למכור מעבד שכלל תמיכה בנקודה צפה. צעד זה נחשב לשדרוג משמעותי ביחס לדגמים קודמים, ונשאר גם בדגמים הבאים. בשנת 1963, חברת DEC הכריזה על ה-PDP-6, מחשב שכלל יכולות חישוב של נקודה צפה. בנוסף בשנה זו, חברת ג'נרל אלקטריק הציגה "יחידת עזר אריתמטית" לחישובי נקודה צפה.

מבחינה היסטורית, חלק מהמערכות מימשו את יכולות החישוב של נקודה צפה במעבד עזר ולא במעגל משולב בתוך המעבד הראשי (בדומה למעבד גרפי למשל). המימוש היה בעזרת מעגל משולב יחיד, מעגל מודפס או רכיב נפרד. כאשר לא היה מימוש חומרתי, נעשה שימוש בחישוב תוכנתי שאמנם לוקח למעבד זמן רב יותר, אך זול ולא דורש התערבות חומרתית. ניתן להשתמש באמולציה עבור ארכיטקטורת מעבד כך שקוד מכונה עבור מעבד מסוים יוכל לעבוד גם במימושים שאינם כוללים מימוש חומרתי ברמת המעבד.

במערכת בה אין מימוש חומרתי ניתן ליישם אמולציה של נקודה צפה בכמה רמות: במעבד כמיקרוקוד (לא נפוץ), כפונקציה של מערכת הפעלה או בקוד במרחב משתמש כספריה נפרדת. החישוב נעשה לרוב בעזרת אלגוריתם CORDIC.

ברוב הארכיטקטורות המודרניות, ישנה הפרדה בין פעולות נקודה צפה לפעולות על מספרים שלמים. ההפרדה ממומשת באופן שונה בכל ארכיטקטורה; בחלק מהארכיטקטורות יש אוגרי נקודה צפה ייעודיים, בעוד שחלקם, כמו אינטל x86, ההפרדה מוחלטת עד כדי שיש אותות שעון נפרדים.

פעולות נקודה צפה מבוצעות לרוב בצינור עיבוד נתונים. במעבדים סופר-סקלריים לפעמים פעולות של נקודה צפה התרחשו בנפרד מפעולות על מספרים שלמים. בנוסף יש מעבדי עזר מתמטיים שתומכים ברמת החומרה בריבוי תהליכונים.

== ספריית נקודה צפה ==
חלק מהמימושים החומרתיים של נקודה צפה תומכים רק בפעולות הפשוטות ביותר: חיבור, חיסור וכפל. אבל אפילו לחומרה המורכבת ביותר יש מספר סופי של פעולות שהיא יכולה לתמוך בה – לדוגמה אין מעבדים התומכים ברמת דיוק אינסופית.

כאשר מעבד מבצע תוכנית שקוראת לפעולת נקודה צפה שאינה נתמכת ישירות על ידי החומרה, המעבד משתמש בסדרה של פעולות נקודה צפה פשוטות יותר על מנת לדמות את הפעולה. במערכות ללא חומרה של נקודה צפה כלל, המעבד מחקה את הפעולה באמצעות סדרה של פעולות פשוטות ושימוש בנקודה קבועה בעזרת יחידת החישוב המרכזית.

האלגוריתם התוכנתי הכולל את סדרת הפעולות הנחוצות כדי לחקות פעולות נקודה צפה ארוז לרוב בספריית נקודה צפה.

== מעבד עזר מתמטי משולב ==
במקרים מסוימים, מעבדי עזר מתמטיים עשויים להיות מעבדים ייעודיים בעל יכולת לבצע פעולות פשוטות יותר של נקודה צפה (בעיקר חיבור וכפל) ולא בהכרח פעולות מסובכות יותר (כמו חלוקה). במקרים בהם ניתן ליישם רק את הפעולות הפשוטות בחומרה או במיקרוקוד, הפעולות המורכבות יותר מיושמות בתוכנה.

בחלק מהארכיטקטורות המודרניות, מעבדי עזר מתמטיים משולבים עם יחידות SIMD.

== מעבד עזר מתמטי נפרד ==
בשנות ה-80, היה נפוץ במחשבי PC ומיקרו-מחשבים תואמים שמעבד העזר היה נפרד לחלוטין מהמעבד הראשי, ונמכר בדרך כלל כתוספת אופציונלית. המעבד היה נרכש במידת הצורך כדי להאיץ או לאפשר תוכניות עתירות חישובים מתמטיים.

היו כמה אופציות חיבור שהשתנו ממחשב למחשב, ובנוסף היו מעבדי עזר מתמטיים שונים למחשבים ומיקרו-מחשבים מסוגים שונים.
== ראו גם ==
* יחידה לוגית אריתמטית (ALU)
* נקודה צפה
* שגרות CORDIC
* יחידה לעיבוד גרפי
* נקודה קבועה
==קישורים חיצוניים==

קטגוריה:מעבד