ViewWiki

שיעור 1 מתוך 4

זיכרון וכתובות.

כ־20 דקות · 5 שאלות תרגול

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

שלב 1 מתוך 5 · שישה־עשר תאים

שלב 1 מתוך 5

שישה־עשר תאים

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

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

לשאלה

שלב 2 מתוך 5

בית אחד

כל תא בזיכרון הוא בית: שמונה סיביות. כשקוראים את שמונה הסיביות כמספר בבסיס שתיים, לכל סיבית יש ערך מקום, מימין לשמאל: 1,2,4,8,16,32,64,1281, 2, 4, 8, 16, 32, 64, 128⁠. מחברים את ערכי המקומות של הסיביות הדולקות, ומקבלים את המספר. 0001 1100, למשל, הוא 16+8+4=2816 + 8 + 4 = 28⁠, המספר שבתא 14.

גם האוגרים בתוך המעבד, A ו־B, רחבים שמונה סיביות, ולכן גם הם מחזיקים בית אחד.

לשאלה

שלב 3 מתוך 5

בית הוא מספר

הזיכרון לא מחזיק רק נתונים. גם התוכנית יושבת בו: חמשת התאים הראשונים, כתובות 0 עד 4, הם ההוראות שהמעבד יריץ, ושני התאים האחרונים הם המספרים שהתוכנית מחברת. שום דבר בבית לא מסמן אם הוא הוראה או מספר. התוויות על הזיכרון הן בשבילנו; השבב רואה תמיד רק סיביות.

עכשיו המכסה סגור. הבית בכתובת 0 הוא 0001 1110. קראו אותו כמספר.

לשאלה

שלב 4 מתוך 5

קוד פעולה וכתובת

כשאותו בית נקרא כהוראה, הוא מתחלק לשניים. ארבע הסיביות השמאליות הן קוד הפעולה: מה לעשות. ארבע הימניות הן כתובת: על איזה תא לעשות את זה. ארבע סיביות מספיקות בדיוק לשישה־עשר תאים.

לשבב הזה יש שמונה קודי פעולה:

קוד הוראה מה היא עושה
0001 LDA טוענת לאוגר A את מה שבתא
0010 LDB טוענת לאוגר B את מה שבתא
0011 ADD מחברת את A ו־B, והתשובה נכנסת ל־A
0100 SUB מחסרת את B מ־A, והתשובה נכנסת ל־A
0101 STA כותבת את A לתא
0110 JMP קופצת לכתובת
0111 JZ קופצת לכתובת, אם התשובה האחרונה הייתה אפס
1111 HLT עוצרת את המעבד

כך 0001 1110 הוא LDA 14: קוד הפעולה 0001, טען ל־A, והכתובת 1110, כלומר 14. התוכנית שבסצנה היא LDA 14, LDB 15, ADD, STA 13, JMP 4: טען את שני המספרים, חבר אותם, שמור את הסכום בתא 13, ואז קפוץ למקום לנצח.

לשאלה

שלב 5 מתוך 5

מעתיקים, לא מזיזים

פעימת שעון עומדת על 1. ההוראה LDA 14 כבר באוגר ההוראה, ובפעימה הבאה היא תתבצע: הכתובת 14 תצא לזיכרון, והמספר שבתא יגיע לאוגר A. נבאו מה יישאר בתא 14 אחרי זה.

לשאלה

סצנה אינטראקטיבית

הגרסה האינטראקטיבית נטענת…

כל שלב מכין לכם את הסצנה, ובקר שמסומן „קבוע” נשאר במקומו בשלב הזה.

לניסוי

תרגול · בחרו

אפיק הכתובות של השבב הוא ארבעה נתיבים, וכל נתיב נושא סיבית אחת. לכמה תאי זיכרון שונים אפשר לתת כתובת?

לניסוי

תרגול · חשבו

תא בזיכרון, כמו כל אוגר בשבב, הוא בית אחד: שמונה סיביות. מה המספר הגדול ביותר שבית אחד יכול להחזיק?

לניסוי

תרגול · חשבו

הבית בכתובת 0 הוא 0001 1110. המכסה סגור. אם קוראים את הבית הזה כמספר ולא כהוראה, מהו?

לניסוי

תרגול · בחרו

בכתובת 3 שמור הבית 0101 1101. קוד הפעולה 0101 הוא STA, “שמור את A”. מה ההוראה עושה?

לניסוי

תרגול · נבאו, ואז הסתכלו

בתא 14 שמור 28. בפעימה 2 מתבצעת LDA 14. מה יישאר בתא 14 אחרי הפעימה?