Menu
CoddyTech

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

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

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

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

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

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

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

מאפייןאוגריםזיכרון (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

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

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

נסו בעצמכם

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

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

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

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

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