אינטל 8087

אינטל 8087, שהוכרז בשנת 1980, היה מעבד הנקודה הצפה הראשון עבור סדרת המיקרו-מעבדים אינטל 8086. מטרת השבב הייתה להאיץ פעולות אריתמטיות בנקודה צפה, כגון חיבור, חיסור, כפל, חילוק ושורש ריבועי. הוא גם מחשב פונקציות טרנסצנדנטליות כגון פונקציות מעריכיות וחישובים לוגריתמיים וטריגונומטריים. שיפורי הביצועים היו בין כ-20% ליותר מ-500%, בהתאם ליישום הספציפי. ה-8087 יכול היה לבצע כ-50,000 FLOPS תוך שימוש בכ-2.4 ואט.

ה-8087 היה מעגל משולב מתקדם, שדחף את גבולות טכנולוגיית הייצור של התקופה. פעולות בסיסיות ב-8087, כגון חיבור וחיסור יכולות להימשך למעלה מ-100 מחזורי מכונה, וחלק מההוראות עולות על 1,000 מחזורים. השבב אינו כולל פעולת כפל בחומרה והוא מיישם חישובים באמצעות אלגוריתם .

מכירות ה-8087 קיבלו דחיפה משמעותית כאשר שקע מעבד משולב נכלל בלוח האם של IBM PC משנת 1981. פיתוח ה-8087 הוביל לתקן IEEE 754-1985 לאריתמטיקה של נקודה צפה. גרסאות המהירות הזמינות היו 4.77 (5), 8 ו-10 מגה-הרץ. מאוחר יותר היו מעבדי x87 עבור מעבדי 80186, 80286, 80386 ו-80386SX. החל מאינטל 80486DX, מעבדי אינטל x86 כללו מעבדי נקודה צפה משולבים (פונקציות נקודה צפה שולבו עם המעבד). למעבדי 486SX יש יחידת נקודה צפה מושבתת או נעדרת, אך הם מאפשרים יחידת 80487 נפרדת.

תכנון ופיתוח
250px|ממוזער|שמאל|תרשים פשטני של ארכיטקטורת 8087
אינטל ייצרה קודם לכן את יחידת העיבוד האריתמטי 8231 ואת מעבד הנקודה הצפה 8232. אלה תוכננו לשימוש עם מעבדי אינטל 8080 או מעבדים דומים והשתמשו באפיק נתונים של 8 סיביות. הם חוברו למערכת מארחת באמצעות קלט/פלט מתוכנת או בקר גישה ישירה לזיכרון.

ה-8087 תוכנן בתחילה על ידי ביל פולמן, מנהל ההנדסה באינטל שפיקח על פיתוח השבב אינטל 8086. פולמן נקט צעדים כדי לוודא שתכנון ה-8086 יוכל לתמוך בשבב מתמטי שטרם פותח.

בשנת 1977 קיבל פולמן אור ירוק לתכנן את שבב המתמטיקה 8087. ברוס רייבנל מונה כארכיטקט, וג'ון פאלמר נשכר כארכיטקט שותף ומתמטיקאי לפרויקט. השניים הגיעו לעיצוב מהפכני עם 64 סיביות של מנטיסה ו-16 סיביות של אקספוננט עבור המספר הממשי בפורמט הארוך ביותר, עם מעבד בעל ארכיטקטורת מחסנית ושמונה אוגרי מחסנית של 80 סיביות, עם סט פקודות עשיר מבחינה חישובית. העיצוב פתר כמה בעיות ידועות בולטות בחישוב נומרי ובתוכנה נומרית: בעיות שגיאות עיגול בוטלו עבור אופרנדים של 64 סיביות, והמרות מצב נומרי נפתרו עבור כל המספרים של 64 סיביות. פאלמר ייחס השפעה משמעותית על העיצוב לכתביו של  על נקודה צפה.

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

ל-8087 היו 65,000 טרנזיסטורים והוא יוצר כמעגל  של 4.5 מיקרון (ואז הצטמק ל-3 מיקרון). הוא עבד במקביל ל-8086 או 8088 והציג כ-60 הוראות חדשות. רוב פקודות שפת הסף של 8087 מתחילות ב-F, כגון FADD, FMUL, FCOM וכן הלאה, מה שהופך אותן למובחנות בקלות מהוראות 8086. הקידוד הבינארי עבור כל הוראות 8087 מתחיל בתבנית הביטים 11011 (מספר עשרוני 27). ה-8087 היה יקר וקשה לייצור עם תפוקות נמוכות. הוא גם התחמם למדי, מה שאילץ את אינטל להשתמש באריזה קרמית יקרה יותר לפיזור חום משופר.

אוגרים
משפחת x87 אינה משתמשת בקבוצת אוגרים הניתנת למיעון ישיר כמו האוגרים הראשיים של מעבדי x86; במקום זאת, אוגרי x87 יוצרים מבנה מחסנית עמוקה בת שמונה רמות הנע בין st0 ל-st7, כאשר st0 הוא החלק העליון. הוראות x87 פועלות על ידי דחיפה, חישוב ושחרור ערכים על מחסנית זו. עם זאת, פעולות דיאדיות כמו FADD, FMUL, FCMP וכן הלאה עשויות להשתמש באופן מרומז ב-st0 וב-st1 העליונים ביותר או להשתמש ב-st0 יחד עם אופרנד זיכרון או אוגר מפורש; לפיכך, אוגר st0 יכול לשמש כאקומולטור (כלומר כאופרנד יעד ואופרנד שמאלי משולב) וניתן גם להחליפו עם כל אחד משמונת אוגרי המחסנית באמצעות הוראה בשם FXCH stX (קודים D9C8–D9CFh). זה הופך את מחסנית x87 לשימושית כשבעה אוגרים הניתנים לכתובת חופשית בתוספת אקומולטור. זה רלוונטי במיוחד במעבדי x86  (פנטיום משנת 1993 ואילך).

תקן IEEE לנקודה צפה
כאשר אינטל עיצבה את ה-8087, היא שאפה ליצור פורמט נקודה צפה סטנדרטי עבור עיצובים עתידיים. היבט חשוב של ה-8087 מנקודת מבט היסטורית היה שהוא הפך לבסיס לתקן הנקודה הצפה IEEE 754. ה-8087 לא יישם את תקן IEEE 754 הסופי בכל פרטיו, מכיוון שהתקן לא הושלם עד 1985, אך ה-80387 כן יישם תקן זה. ה-8087 סיפק שני טיפוסי נתונים בסיסיים של 32/64 סיביות בנקודה צפה ופורמט זמני פנימי מורחב נוסף של 80 סיביות (שיכול להיות מאוחסן גם בזיכרון) כדי לשפר את הדיוק בחישובים גדולים ומורכבים. מלבד זאת, ה-8087 הציע פורמט עשרוני בקידוד בינארי (BCD) ארוז של 80 סיביות/18 ספרות וטיפוסי נתונים שלמים של 16, 32 ו-64 סיביות.
 טיפוסי נתונים ב-808779...71...67...63...50...31...22...15...00 (מיקום הביט) ± מעריך מנטיסה 80 ביט: מספר ממשי בדיוק מורחב  ± מעריך מנטיסה 64 ביט: מספר ממשי בדיוק כפול  ± מעריך מנטיסה 32 ביט: מספר ממשי בדיוק רגיל  ±  מספר שלם עשרוני בקידוד בינארי מספר עשרוני ב-18 ספרות  ± מספר שלם 64 ביט: מספר שלם בינארי  ± מספר שלם 32 ביט: מספר שלם בינארי  ± מספר שלם 16 ביט: מספר שלם בינארי

הוקרה
ב-15 בספטמבר 2025 העניק ארגון IEEE לאינטל ישראל את אות IEEE Milestones על פיתוח המעבד אינטל 8087.

קישורים חיצוניים



הערות שוליים

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