Menu
Coddy logo textTech

אוגרים לעומת זיכרון

חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 3 מתוך 45.

כעת למדת על שני מקומות שבהם נתונים יכולים להימצא בתוך מחשב:

  • אוגרים: תיבות אחסון זעירות בתוך המעבד
  • זיכרון (RAM): רשת ענקית של תאים ממוספרים מחוץ למעבד

אבל למה יש שני מקומות? למה המעבד לא יכול פשוט לעבוד ישירות עם הזיכרון?

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

השוואה זו לצד זו:

מאפייןאוגריםזיכרון (RAM)
מיקוםבתוך ה-CPUמחוץ ל-CPU
מהירותמהיר במיוחד (מחזור אחד)איטי יותר (מחזורים רבים)
מספר חריצי האחסוןמעטים מאוד (16-32 ב-x86-64)מיליונים או מיליארדים
גודל כל חריץ8 בתים (64 ביטים)בית אחד
איך ניגשים אליהםלפי שם (rax, rbx, rcx...)לפי כתובת (1000, msg, buffer)
נדיפים?כן (נמחקים כשהחשמל כבוי)כן (נמחקים כשהחשמל כבוי)

הכלל החשוב ביותר באסמבלי:

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

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

התבנית בת שלושת השלבים שתשתמש בה ללא הרף:

שלבמה קורהדוגמה
1. LOADהעתקת נתונים מהזיכרון לאוגרmov rax, [count]
2. WORKביצוע פעולה עם האוגרadd rax, 5
3. STOREהעתקת התוצאה בחזרה לזיכרון (אם יש צורך)mov [result], rax

מה קורה אם שוכחים את הכלל הזה?

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

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Assembly אונליין