אוגר (מחשבים)

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
אוגר 8 ביט

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

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

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

תכונות[עריכת קוד מקור | עריכה]

את גודלם של האוגרים של מעבד בדרך כלל מודדים בסיביות, ואלו משקפים את כמות המידע המקסימלי אשר המעבד יכול לחשב בפעולה יחידה. כך למשל "מעבד 32 ביט" יתייחס למעבד בעל אוגרים בגודל 32 סיביות, בעוד ש"מעבד 64 ביט" יהיה בעל אוגרים בגודל 64 סיביות. יש להדגיש כי השימוש במושגים אלה לעתים לא עקבי, כאשר יש המשתמשים בו לתיאור רוחב אפיק הנתונים של המעבד.

קיימים מספר סוגים של אוגרים:

  • אוגר נתונים - משמש לאחסון נתון מספרי שלם, לשם ביצוע פעולות אריתמטיות עליו.
  • אוגר כתובת - מאחסן כתובת זיכרון במטרה לגשת לאזור בזיכרון המחשב עליו יש לפעול.
  • אוגר רב-תכליתי - מהווה שילוב של אוגר נתונים ואוגר כתובת.
  • אוגר נקודה צפה - משמש לאחסון מספר בנקודה צפה, לשם ביצוע פעולות אריתמטיות עליו.
  • אוגר קבוע - מכיל ערך לקריאה בלבד (למשל ערך הפאי).
  • אוגר וקטורי - משמש לאחסון נתונים לעיבוד וקטורי בעזרת פקודות SIMD.
  • אוגרים מיוחדים - כמו למשל האוגר המצביע למיקום בקוד, האוגר המתאר את מצב המערכת, המצביע לערך האחרון במחסנית הקריאות.
    • אוגר פקודות - מאחסן את הפקודה המבוצעת באותו הרגע.
    • אוגר אינדקס - משמש לשינוי כתובת יחידת הנתונים עליה יש לבצע פעולה.
  • אוגר מותאם - אלה הם אוגרים המותאמים למערכות מסוימות לשימושים ספציפיים אחרים.
  • אוגר חומרה - אוגר היושב מחוץ למעבד המרכזי, על רכיב חומרה מסוים.
  • אוגר מונה (counter) - אוגר זה מכיל את הפקודה שצריכה להתבצע על ידי המעבד. כאשר המעבד עובר לפקודה זו הכתובת בתוך המונה תתקדם (פקודת jnz). דוגמה: קפיצה לכתובת מסוימת בעקבות פקודה כלשהי, צבירת מספרים ועוד. אוגרים שימושים בשפת אסמבלר הם (AX,CX,DX).
  • מצביע המחסנית (stack pointer) - מחסנית היא מקום מוגדר בזיכרון לאיחסון זמני של נתונים. שמירת הנתונים במחסנית והוצאותו מתבצעת בשיטת "נכנס אחרון יוצא ראשון" (LIFO), שבה הנתון האחרון שנכנס למחסנית הוא גם הראשון שיוצא ממנה. דוגמה: מתבצעת תוכנית כלשהי כאשר המעבד מגיע לכתובת מסוימת הוא מגלה בה קריאה לפונקציה אחרת. לפני שהמעבד עובר לבצע את הפונקציה האחרת הוא שומר במחסנית את הכתובת של הפקודה שבאה אחרי הקריאה לפונקציה, על-מנת שיוכל לחזור לבצע את התוכנית שקראה לפונקציה, אחרי שהפונקציה תסתיים. בגלל תכונת ה-LIFO השימוש במחסנית לקפיצה לפונקציות וחזרה אל התוכנית הקוראת יכולה להתבצע בצורה רקורסיבית.
  • אוגר ההוראות (ir=instruction register) - האותות אשר מגיעים אל המעבד יכולים להיות מספרים או הוראות כלשהן. אם הגיעה הוראה, אזי היא מופנת לאוגר ההוראות. יחידת הבקרה מפענחת את ההוראה בהתאם לקוד שלה (כפי שרשום באוגר) ומבצעת אותה. יחידת הבקרה של המעבד דואגת לבצע את ההוראות על פי נתונים נוספים המתקבלים במעבד באוגרים אחרים, ופועלת על פי אות שעון שמיוצר על ידי מתנד, שגם את הקצב שלו ניתן לעתים לקבוע על ידי אוגר המיועד לכך.

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]