
מיקרוקוד ונתיב נתונים של חיבור וחיסור נקודה צפה ב-Intel 8087
שבב ה-Intel 8087 האיץ חיבור נקודה צפה פי כמעט 100 והשתמש במיקרוקוד, מחבר מספרים שלמים, מסיט, לוגיקת מעריכים ותבנית זמנית ממשית של 80 סיביות לצורך חיבור וחיסור.
למה ה-8087 היה חשוב
חברת Intel הציגה את ה-8087 בשנת 1980 כדי להאיץ פעולות נקודה צפה במידה רבה ב-IBM PC ובמערכות אחרות. השבב תמך בפעולות מתקדמות כגון טנגנסים, שורשים ריבועיים ולוגריתמים, אך חיבור וחיסור מדגימים כיצד נתיב הנתונים פעל. ה-8087 האיץ חיבור בפקטור של כמעט 100 בהשוואה למעבד 8086, ופעולות מורכבות שיפרו את הביצועים אף יותר.
בתוך השבב, רום המיקרוקוד החזיק 1648 מיקרו הוראות. החלק התחתון של השבב היה נתיב הנתונים, שם עובדו ערכים של 80 סיביות. הבלוק המרכזי היה מחבר המספרים השלמים של 69 סיביות ליד המרכז. הוא קיבל ארגומנט אחד מרגיסטר B ואחר מבלוקים כגון רגיסטרים זמניים או רגיסטרי מחסנית, ואז שלח את התוצאה לרגיסטר הסכום.
רכיבי נתיב נתונים לחשבון בסיסי
חיבור נקודה צפה מתחיל ביישור נקודות בינאריות על ידי הסטת הערך בעל המעריך הקטן יותר עד שהמעריכים תואמים. לאחר שהמנות נחברו כמספרים שלמים, ייתכן שהתוצאה תזדקק לנרמול כך שהמנה תתחיל בסיבית 1. אם חיבור הפיק סיבית גבוהה נוספת, הערך הוסט ימינה והמעריך הוגבר. חיסור יכול להפיק תוצאה חיובית, שלילית או אפס, ונרמול עשוי לדרוש הסטה גדולה שמאלה. מנה שלילית הפכה לחיובית והסימן התהפך; תוצאת אפס החזירה אפס חיובי או שלילי בהתאם.
המסיט הזיז ערך של 68 סיביות במספר שרירותי של מיקומים שמאלה או ימין, ותפס שטח גדול בשבב כי הסטות היו חייבות להיות מהירות. מעגל אפסים מובילים ספר סיביות או בתים אפסים משמאל כדי שאפשר יהיה להסיטם הצידה. ממיר מעריכים עיבד מעריכים וזיהה גלישה מעלה וגלישה מטה. ליישור, תת הפרוצדורה CREATE_DENORM הסיטה את הארגומנט השני לפי הפרש המעריכים שהועבר ברגיסטר הסכום.
רגיסטרים, זרימת מיקרוקוד וערכים מיוחדים
באופן פנימי ה-8087 השתמש בתבנית ממשית זמנית של 80 סיביות עם סיבית סימן, מעריך של 15 סיביות בעל היסט של 16383 ומנה של 64 סיביות. שמונה רגיסטרים יצרו מחסנית, ולכל ערך הייתה תגית של אפס, חוקי, מיוחד או ריק. רגיסטרים זמניים פנימיים כללו את tmpA ו-tmpB, וכן tmpC עם מנה של 68 סיביות וסיביות guard, round ו-sticky.
פעולות חשבון בסיסיות התחילו בכתובת מיקרוקוד 0001, העבירו את שני הארגומנטים ל-tmpA ול-tmpB, ואז קראו ליעד שנבחר לפי סוג ההוראה. חיבור וחיסור רצו מכתובת 0232. המיקרוקוד טיפל במקרי אפס, השווה מעריכים, החליף ארגומנטים כשנדרש ועקב אחר שינויי סימן במנעול הסימן. לאחר מכן הוא בחר בחיבור לא סימני או בחיסור לא סימני על בסיס סימני המופעלים והפעולה.
בנתיב החיבור הלא סימני, המנות המיושרות נחברו, נשא גרם להסטה של סיבית אחת ימינה ולהתאמת מעריך, הדיוק נקטם עבור ערכים של 80, 64 או 32 סיביות, והמעריך נבדק לגלישה מעלה או מטה. בחיסור לא סימני, המחבר חישב tmpA מינוס tmpB, סיביות עיגול יכלו לקבוע סיבית תוצאה נמוכה, וטיפול באפסים מובילים הפיק הסטות בתים וסיביות. הקוד המשותף טיפל גם באינסופים, ערכי לא מספר, דנורמלים, אפסים, התנהגות שליפה מהמחסנית ופסיקות עבור ערכים מדונרמלים.
מקורות: righto.com
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.