אוגר (מחשבים)
מתוך ויקיפדיה, האנציקלופדיה החופשית
אוגר (באנגלית, Register או "רגיסטר") הוא סוג של זיכרון פנימי מהיר ביותר הנמצא לרוב בתוך יחידת העיבוד המרכזית של מחשב אשר מאפשר אכסון ערכים, בדרך כלל זמנית, עבור פעולות בסיסיות שונות מסט הפקודות של המעבד (חיבור, כפל, וכו'). חלק מהאוגרים של המעבד מוקדשים למטלות ספציפיות, אחרים זמינים לשימושם הכללי של התוכנות המורצות.
סט הפקודות השכיח ביותר, זה של ה-x86, מגדיר קבוצה של אוגרים בעלי 32-סיביות. מעבד המיישם את הסט הפקודות הזה יכיל כמות גדולה יותר של אוגרים פנימיים.
תוכן עניינים |
[עריכה] השימוש באוגרים
אוגרים מאפשרים להגביר את מהירות הביצוע של תוכנות מחשב על ידי אכסנה קרובה של ערכים הנמצאים בשימוש תדיר, במקום לגשת בכל פעם אל זיכרון ה-RAM המרוחק יותר. במרבית המעבדים אך מספר מועט של פעולות ניתנות לביצוע ישירות על הנתונים שבזיכרון של המחשב, ולשם ביצוע פעולה על נתון מסוים יש להביאו תחילה מהזיכרון אל האוגר, לבצע את הפעולה (למשל להוסיף לאוגר נתון שנמצא באוגר אחר או בזיכרון) ולהחזיר את התוצאה לזיכרון.
חשיבות הכנסת ערכים אשר בשימוש תכוף לתוך אוגרים היא גבוהה מאוד לביצועיה של תוכנה. פעולת ייעול זו, הקצאת אוגרים לערכים, נעשית על ידי מהדר בשלב יצירת הקוד.
[עריכה] תכונות
את גודלם של האוגרים של מעבד בדרך כלל מודדים בסיביות, ואלו משקפים את כמות המידע המקסימלי אשר המעבד יכול לחשב בפעולה יחידה. כך למשל "מעבד 32-ביט" יתייחס למעבד בעל אוגרים בגודל 32 סיביות, בעוד ש"מעבד 64-ביט" יהיה בעל אוגרים בגודל 64 סיביות. יש להדגיש כי השימוש במושגים אלה לעתים לא עקבי, כאשר יש המשתמשים בו לתיאור רוחב אפיק הנתונים של המעבד.
קיימים מספר סוגים של אוגרים:
- אוגר נתונים - משמש לאחסון נתון מספרי שלם, לשם ביצוע פעולות אריתמטיות עליו.
- אוגר כתובת - מאחסן כתובת זיכרון במטרה לגשת לאזור בזיכרון המחשב עליו יש לפעול.
- אוגר רב-תכליתי - מהווה שילוב של אוגר נתונים ואוגר כתובת.
- אוגר נקודה צפה - משמש לאחסון מספר בנקודה צפה, לשם ביצוע פעולות אריתמטיות עליו.
- אוגר קבוע - מכיל ערך לקריאה בלבד (למשל ערך הפאי).
- אוגר וקטורי - משמש לאחסון נתונים לעיבוד וקטורי בעזרת פקודות SIMD.
- אוגרים מיוחדים - כמו למשל האוגר המצביע למיקום בקוד, האוגר המתאר את מצב המערכת, המצביע למחסנית.
- אוגר פקודות - מאחסן את הפקודה המבוצעת באותו הרגע.
- אוגר אינדקס - משמש לשינוי כתובת יחידת הנתונים עליה יש לבצע פעולה.
- אוגר מותאם - אלה הם אוגרים המותאמים למערכות מסוימות לשימושים ספציפיים אחרים.
- אוגר חומרה - אוגר היושב מחוץ למעבד המרכזי, על רכיב חומרה מסוים.
[עריכה] האוגרים בארכיטקטורת x86
ארכיטקטורת x86 מיישמת מספר אוגרים. חלק מהאוגרים מורכב בצורה מבנית מיוחדת כך שכאשר אוגר מסוים, למשל EAX, שווה לערך H 78563412 (ספירה הקסדצימלית), AX ישקף את המילה התחתונה של EAX ויהיה שווה ל-3412, ה-AH (מ-High) ישקף את הבית הגבוה של AX ויהיה שווה ל-34, וה-AL (מ-Low) ישקף את הבית הנמוך של AX ויהיה שווה ל-12:
| 12 | 34 | 56 | 78 |
| AL | AH | - | |
| AX | - | ||
| EAX | |||
להלן האוגרים הקיימים בכל מעבדי אינטל תואמי-x86:
| אוגר | תפקיד | סוג | חלק תחתון | חלק עליון | גרסת 32-סיביות |
|---|---|---|---|---|---|
| AX | צובר - Accumulator | אוגר נתונים | AL | AH | EAX |
| האוגר הפעיל יותר, עליו נערכות הרבה מהפעולות האריתמטיות. | |||||
| BX | בסיס - Base | אוגר רב-תכליתי | BL | BH | EBX |
| משמש לאכסון כללי, אך במיוחד לפנייה לאזורים בזיכרון, כשמקטע ברירת המחדל שלו הוא DS. | |||||
| CX | מונה - Counter | אוגר נתונים | CL | CH | ECX |
| משמש לאכסון כללי, אך במיוחד כמונה חזרות לפקודות מסוימות. | |||||
| DX | נתונים - Data | אוגר נתונים | DL | DH | EDX |
| משמש לאכסון כללי. | |||||
| SI | אינדקס מקור - Source Index | אוגר כתובת | - | - | ESI |
| משמש כמצביע לאזור בזיכרון אשר יהווה מקור לפעולות זיכרון מסוימות. פועל לרוב מול מקטע DS. | |||||
| DI | אינדקס יעד - Destination Index | אוגר כתובת | - | - | EDI |
| משמש כמצביע לאזור בזיכרון אשר יהווה יעד לפעולות זיכרון מסוימות. פועל לרוב מול מקטע ES. | |||||
| BP | מצביע בסיס המחסנית - Stack Frame Base Pointer | אוגר כתובת | - | - | EBP |
| משמש גישה מהירה ומבוקרת למידע הנמצא במחסנית. פועל לרוב מול מקטע SS. | |||||
| SP | מצביע המחסנית - Stack Pointer | אוגר אינדקס | - | - | ESP |
| עוקב אוטומטית אחר המיקום האחרון במחסנית. | |||||
| CS | מקטע הקוד - Code Segment | אוגר אינדקס | - | - | - |
| מצביע למקטע בזיכרון בו נמצא הקוד הנוכחי. עובד מול IP. | |||||
| DS | מקטע הנתונים - Data Segment | אוגר אינדקס | - | - | - |
| מצביע למקטע בזיכרון המכיל את הנתונים של התוכנה. | |||||
| ES | מקטע מוסף - Extra Segment | אוגר אינדקס | - | - | - |
| מצביע מוסף לפנייה לאזורי זיכרון אחרים. | |||||
| SS | מקטע המחסנית - Stack Segment | אוגר אינדקס | - | - | - |
| מצביע למקטע בזיכרון המכיל את המחסנית. | |||||
| IP | המצביע לפקודה - Instruction Pointer | אוגר מיוחד | - | - | EIP |
| מצביע לאזור בזיכרון בו נמצאת הפקודה הבאה לביצוע. לא ניתן לשנות או לקרוא אותו ישירות. | |||||
עם כניסת ה-386 הוספו לארכיטקטורה עוד שני אוגרי מקטע:
| FS | מקטע מוסף | אוגר אינדקס | - | - | - |
| GS | מקטע מוסף | אוגר אינדקס | - | - | - |
[עריכה] ראו גם
[עריכה] קישורים חיצוניים
- פירוט אודות השימוש באוגרים בשפת סף (אנגלית)

