אם אתה לא מתעניין במיוחד במחשבים, יסלח לך על ההנחה שצורות הזיכרון היחידות במחשב היו הכונן הקשיח וזיכרון ה-RAM. אלה מכם שמתעניינים במחשבים סביר להניח שידעו שזה לא המקרה, וכי למעבד יש גם קבוצה של מטמונים המשמשים לאחסון נתונים מה-RAM כך שה-CPU יוכל לגשת אליו מהיר יותר. כל אלה הם פיצ'רים מפורסמים, בעיקר בגלל שהמהירות ו/או הקיבולת הם נקודת מכירה ראויה ובדרך כלל משפיעה על רמות הביצועים.
יש למעשה שכבה אחת נוספת של זיכרון. ככל שאתה עשוי לחשוב שהמטמון L1 קרוב ככל האפשר לליבת העיבוד בפועל, יש עוד שכבה גבוהה יותר בהיררכיית הזיכרון. אלו הם אוגרי המעבד. הסיבה שאלו לא ממש מפרסמים או מוזכרים היא שהם לא ממש משתנים בכלל. מבחינה טכנית, הם יכולים להיות, עם זאת, המספר והגודל של רגיסטרים הם למעשה בסיסיים לארכיטקטורה. המשמעות היא שלכל המעבדים x86-64 יש את אותו מספר אוגרים. הם לא משווקים כי הם לא נקודה מתחרה.
מה עושה פנקס?
פנקס הוא מיקום אחסון זמין במהירות עבור המעבד. הגישה לרישום היא מיידית עם אפס חביון, בעוד שאפילו למטמון L1 יש חביון של בערך 4-5 מחזורים במעבדים מודרניים. מיידיות זו של גישה מרמזת על מקרה השימוש לרישומים. רישומים משמשים לאחסון ההוראות המופעלות על ידי ה-CPU. הם גם מאחסנים נקודות נתונים שיש לעבד. רישומים מסוימים הם מטרה כללית, בעוד שלאחרים יש מטרה מאוד ספציפית. דוגמה למאגר למטרות מיוחדות תהיה מונה התוכניות, שבו המעבד עוקב אחר מיקומו ברצף התוכניות שלו.
רישומים רבים נחשבים לנגישים למשתמשים. זה לא אומר שהמשתמש במחשב יכול לבחור איזה ערך לשים בו. זה אומר שהתוכנה הפועלת יכולה לציין נתונים לטעינה לתוך האוגרים האלה. מספר קטן יותר של אוגרים הם פנימיים, כלומר תוכנה אינה יכולה לטפל בהם כלל. פנקס הפקודות, המאחסן את הפקודה המתבצעת כעת, הוא דוגמה לפנקס פנימי.
רישום שינוי שם
בעוד שארכיטקטורת מעבד עשויה לאפשר רק תצורה אחת של אוגרים, למעשה יש בזה קצת ניואנסים. כל המעבדים המודרניים עושים שימוש בשינוי שמות של רישום. זוהי טכניקה שבה אתה יכול לקבל יותר אוגרים פיזיים ולהשתמש בהם כדי לטעון מראש נתונים או לאחסן נתונים הקשורים להוראה לא בסדר שאחרת הייתה נמחקת. כאשר ה-CPU מגיע לנקודה שהוא צריך את הנתונים באוגרים הנוספים, הוא פשוט משנה את שמו כך שיהיה ניתן להתייחסות, במקביל להפיכתו של אוגר שניתן להתייחס אליו בעבר ללא כתובת.
תהליך שינוי שם הרישום יכול להועיל מאוד לביצוע מחוץ לסדר. לדוגמה, אם מיקום זיכרון מתוכנת לקריאה מרגע זה, וההוראות בוצעו בסדר זה, זה בסדר. עם זאת, אם ההוראות מסודרות מחדש לביצוע הכתיבה תחילה, הוראת הקריאה תקבל את הערך השגוי. כדי למנוע זאת, הערך המקורי שיש לקרוא מאוחסן בפנקס שאינו בשימוש אשר לאחר מכן שונה שם כאשר ההוראה הרלוונטית מעובדת.
סיכום
רישומים הם הרמה הגבוהה ביותר בהיררכיית הזיכרון. הם החלק היחיד שניתן להתייחס אליו ישירות על ידי המעבד ואין להם חביון. רישומים משמשים לאחסון הנתונים המבוצעים באופן פעיל על ידי ה-CPU. הם משמשים גם לאחסון נקודות נתונים אחרות כמו מונה התוכניות שעוקב אחרי איזו הוראה היא הבאה שתבוצע. מספר מצומצם מאוד של רגיסטרים זמינים בארכיטקטורת x86-64 הכוללת 16 רגיסטרים לשימוש כללי ו-16 או 32 רגיסטרים של נקודה צפה, תלוי אם AVX-512 נתמך.