מפתח תשובות · יחידה 3
איך מחשב מריץ תוכנית.
שאלות התרגול של כל שיעור, התשובות הנכונות שלהן והטעויות שהן מזהות. תשובות שנקראות מהסצנה משתמשות באותה הגדרה שהלומדים רואים.
מפתח תשובות 4
שיעור 1 מתוך 4 · כ־20 דקות
זיכרון וכתובות
מה יש בתוך מחשב לפני שהוא עושה משהו: תאי זיכרון ממוספרים, בית של שמונה סיביות, כתובות שאפיק של ארבעה חוטים יכול לתת, ותוכנית שהיא בסך הכול מספרים בזיכרון.
5 השלבים והתשובות שלהם
תרגול · בחרו
השאלה
אפיק הכתובות של השבב הוא ארבעה נתיבים, וכל נתיב נושא סיבית אחת. לכמה תאי זיכרון שונים אפשר לתת כתובת?
התשובה הנכונה
נכונה
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- רכיבים
האפשרויות
מוצגות בסדר אקראי.
נכונה
שגויה , תא לכל נתיב
משוב מהקטלוג
כל נתיב נוסף באפיק הכתובות מכפיל את מספר הכתובות, ולא מוסיף להן. נתיב אחד נותן שתי כתובות, 0 ו־1; שני נתיבים נותנים ארבע,
00עד11; וארבעה נתיבים נותנים כתובות, מ־0000עד1111. נתיב אחד לכל תא היה דורש שישה־עשר חוטים.שגויה , שניים לכל נתיב
משוב מהקטלוג
כל נתיב נוסף באפיק הכתובות מכפיל את מספר הכתובות, ולא מוסיף להן. נתיב אחד נותן שתי כתובות, 0 ו־1; שני נתיבים נותנים ארבע,
00עד11; וארבעה נתיבים נותנים כתובות, מ־0000עד1111. נתיב אחד לכל תא היה דורש שישה־עשר חוטים.שגויה
משוב מהקטלוג
במחשב סופרים מאפס. הכתובות הן 0 עד 15, ולכן יש שישה־עשר תאים, לא חמישה־עשר. באותו אופן הפעימה הראשונה היא פעימה 0, ולכן עד סוף פעימה 11 רצו שתים־עשרה פעימות. כשהמספור מתחיל באפס, הכמות היא המספר האחרון ועוד אחד.
משוב לתשובה נכונה
: כל נתיב יכול להיות 0 או 1, וכל נתיב נוסף מכפיל את מספר הצירופים. אלה בדיוק שישה־עשר התאים שבזיכרון, כתובות 0 עד 15.
רמז
כמה צירופים שונים יש לשתי סיביות? ולשלוש?
פתרון מלא
- כל נתיב נושא סיבית אחת: 0 או 1.
- לנתיב אחד שתי אפשרויות; לכל נתיב נוסף שתי אפשרויות לכל אחת מהקודמות, ולכן מספר הצירופים מוכפל.
- ארבעה נתיבים: כתובות, מ־
0000עד1111.
אם בחרתם או , חיברתם במקום לכפול. אם בחרתם , זו הכתובת הגדולה ביותר, אבל הספירה מתחילה ב־0.
תרגול · חשבו
השאלה
תא בזיכרון, כמו כל אוגר בשבב, הוא בית אחד: שמונה סיביות. מה המספר הגדול ביותר שבית אחד יכול להחזיק?
התשובה הנכונה
255 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- רכיבים
- מתקבלת בטווח
- ± 0.01
- ערך קבוע בשאלה
תשובות שגויות שהשאלה מזהה
256 ± 0.01
טעות נפוצה: Takes the largest number n bits can hold to be 2ⁿ (256 for a byte) rather than 2ⁿ − 1 (255).
משוב מהקטלוג
שמונה סיביות נותנות צירופים שונים, אבל אחד מהם הוא אפס,
00000000. לכן המספרים הם 0 עד 255, והגדול ביותר הוא ,11111111. כדי לכתוב 256 צריך סיבית תשיעית.
משוב לתשובה נכונה
11111111הוא , שהם . בבית יש 256 ערכים שונים, 0 עד 255.רמז
חברו את ערכי המקומות של כל שמונה הסיביות.
פתרון מלא
- הדליקו את כל שמונה הסיביות:
11111111. - ערכי המקומות הם .
- הסכום: , כלומר .
אם עניתם , ספרתם את מספר הערכים, , ולא את הגדול שבהם: אחד הערכים הוא אפס.
תרגול · חשבו
השאלה
הבית בכתובת 0 הוא
0001 1110. המכסה סגור. אם קוראים את הבית הזה כמספר ולא כהוראה, מהו?התשובה הנכונה
30 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0קבוע
- המספר הראשון
- 28
- המספר השני
- 14
- שבב / טרנזיסטורים
- שבבקבוע
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- The byte in the instruction register after this tick (opcode in the high four bits)
/nodes/cpu/outputs/instructionRegister
תשובות שגויות שהשאלה מזהה
14 ± 0.01
טעות נפוצה: Reads a byte as two separate numbers, its high and low four bits, instead of one eight-bit number.
משוב מהקטלוג
כשקוראים בית כמספר, כל שמונה הסיביות הן מספר אחד. ערכי המקומות, מימין לשמאל, הם 1, 2, 4, 8, 16, 32, 64, 128. ב־
0001 1110דולקות הסיביות של 16, 8, 4 ו־2, ולכן הוא . החלוקה לשני חצאים, קוד פעולה וכתובת, נכונה רק כשקוראים את הבית כהוראה.15 ± 0.01
טעות נפוצה: Reads a byte as two separate numbers, its high and low four bits, instead of one eight-bit number.
משוב מהקטלוג
כשקוראים בית כמספר, כל שמונה הסיביות הן מספר אחד. ערכי המקומות, מימין לשמאל, הם 1, 2, 4, 8, 16, 32, 64, 128. ב־
0001 1110דולקות הסיביות של 16, 8, 4 ו־2, ולכן הוא . החלוקה לשני חצאים, קוד פעולה וכתובת, נכונה רק כשקוראים את הבית כהוראה.
משוב לתשובה נכונה
. אותו בית, כשהוא נוחת באוגר ההוראה, הוא
LDA 14: השבב לא יודע מה הוא מה, רק איך משתמשים בו.רמז
לסיבית החמישית מימין יש ערך מקום .
פתרון מלא
- ערכי המקומות של שמונה הסיביות, משמאל לימין: .
- ב־
0001 1110דולקות הסיביות של , , ו־. - הסכום: .
אם עניתם , קראתם רק את ארבע הסיביות הימניות, הכתובת. אם עניתם , חיברתם את שני החצאים, : כמספר, שמונה הסיביות הן מספר אחד.
תרגול · בחרו
השאלה
בכתובת 3 שמור הבית
0101 1101. קוד הפעולה0101הואSTA, “שמור את A”. מה ההוראה עושה?התשובה הנכונה
נכונה כותבת את מה שבאוגר A לתא 13
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- רכיבים
האפשרויות
מוצגות בסדר אקראי.
נכונה כותבת את מה שבאוגר A לתא 13
שגויה כותבת את מה שבאוגר A לתא 5
משוב
0101, החצי השמאלי, הוא קוד הפעולה. הכתובת היא החצי הימני,1101.שגויה כותבת את המספר 13 לאוגר A
טעות נפוצה: Confuses an address, the number that names a memory cell, with the value stored in that cell.
משוב מהקטלוג
כתובת היא השם של תא, כמו מספר של בית ברחוב; התוכן הוא מה שגר בו. בתא שכתובתו 14 שמור המספר 28.
LDA 14פירושו “טענו ל־A את מה שבתא 14”, כלומר 28, ולא את המספר 14 עצמו.שגויה טוענת לאוגר A את מה שבתא 13
משוב
טעינה לאוגר A היא קוד הפעולה
0001,LDA.STAהולכת לכיוון ההפוך: מהאוגר לזיכרון.
משוב לתשובה נכונה
1101הוא , ולכן זוSTA 13: הסכום שב־A נכתב לתא 13. זו ההוראה הרביעית של התוכנית.פתרון מלא
- החצי השמאלי,
0101, הוא קוד הפעולה: ,STA. - החצי הימני,
1101, הוא הכתובת: . - ביחד:
STA 13, כתבו את A לתא 13.
הכתובת בהוראה היא שם של תא, לא מספר שנכנס לאוגר.
תרגול · נבאו, ואז הסתכלו
השאלה
בתא 14 שמור 28. בפעימה 2 מתבצעת
LDA 14. מה יישאר בתא 14 אחרי הפעימה?התשובה הנכונה
נכונה עדיין 28
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 1קבוע
- המספר הראשון
- 28
- המספר השני
- 14
- שבב / טרנזיסטורים
- רכיבים
- הגדרות נוספות
- Watch address
/nodes/cpu/props/watchAddress= 14
האפשרויות
נכונה עדיין 28
שגויה 0: המספר עבר לאוגר A
טעות נפוצה: Thinks loading a number into a register takes it out of memory, leaving the cell empty.
משוב מהקטלוג
טעינה מעתיקה. הזיכרון שולח על אפיק הנתונים את המתחים של הסיביות שבתא, והאוגר קולט אותם, אבל התא עצמו לא משתנה. אחרי
LDA 14המספר 28 נמצא גם באוגר A וגם בתא 14. רק כתיבה,STA, משנה תא בזיכרון.שגויה 14
טעות נפוצה: Confuses an address, the number that names a memory cell, with the value stored in that cell.
משוב מהקטלוג
כתובת היא השם של תא, כמו מספר של בית ברחוב; התוכן הוא מה שגר בו. בתא שכתובתו 14 שמור המספר 28.
LDA 14פירושו “טענו ל־A את מה שבתא 14”, כלומר 28, ולא את המספר 14 עצמו.
אחרי נעילת הניבוי הסצנה משתנה
- פעימת שעון
- 2קבוע
- שבב / טרנזיסטורים
- רכיבים
ואז הסצנה מראה: 28 · The byte in memory cell watchAddress after this tick
/nodes/cpu/outputs/watchedניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
עדיין 28, ועכשיו גם באוגר A יש 28. טעינה מעתיקה: הזיכרון רק שולח את הסיביות שלו על אפיק הנתונים.
פתרון מלא
LDA 14שולחת את הכתובת 14 לזיכרון ומדליקה את קו קריאת זיכרון.- הזיכרון שם על אפיק הנתונים את מה שבתא 14, 28, ואוגר A קולט אותו.
- קריאה לא משנה את התא, ולכן בתא 14 נשאר 28.
רק
STA, עם קו כתיבת זיכרון, משנה תא.
שיעור 2 מתוך 4 · כ־25 דקות
הבאה, פענוח, ביצוע
הלולאה שכל מעבד חוזר עליה: מביאים הוראה מהזיכרון, מפענחים את קוד הפעולה ומבצעים אותה, פעימת שעון אחת לכל שלב. מונה התוכנית, אוגר ההוראה, ויחידת הבקרה שמחליטה מה זז לאן.
5 השלבים והתשובות שלהם
תרגול · בחרו
השאלה
בפעימת פענוח, מה קורה?
התשובה הנכונה
נכונה יחידת הבקרה קוראת את קוד הפעולה ובוחרת אילו קווי בקרה להדליק; שום אוגר לא משתנה
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- רכיבים
האפשרויות
מוצגות בסדר אקראי.
נכונה יחידת הבקרה קוראת את קוד הפעולה ובוחרת אילו קווי בקרה להדליק; שום אוגר לא משתנה
שגויה ה־ALU מחשבת את התשובה, ואוגר A קולט אותה
משוב
זה קורה בפעימת ביצוע. בפענוח רק מחליטים מה יקרה בביצוע.
שגויה ההוראה מגיעה מהזיכרון לאוגר ההוראה
משוב
זו הבאה, הפעימה שלפני הפענוח.
שגויה מונה התוכנית עולה באחד
משוב מהקטלוג
מונה התוכנית מתקדם כבר בפעימת ההבאה: באותה פעימה שבה ההוראה נוחתת באוגר ההוראה, המונה עולה באחד. לכן בזמן הפענוח והביצוע הוא כבר מצביע על ההוראה הבאה. בזמן ש־
LDB 15מכתובת 1 מתבצעת, המונה מחזיק 2.
משוב לתשובה נכונה
פענוח הוא חיווט: ארבע הסיביות של קוד הפעולה נכנסות ליחידת הבקרה, והיא מדליקה קבוצה קבועה של קווים, למשל פלט ALU וקלט A בשביל
ADD. הערכים באוגרים לא זזים.פתרון מלא
- הבאה: ההוראה נכנסת לאוגר ההוראה, והמונה עולה באחד.
- פענוח: קוד הפעולה עובר ליחידת הבקרה, והיא בוחרת קווי בקרה. אף ערך לא נשמר.
- ביצוע: הקווים פותחים מסלול אחד, ורכיב אחד קולט ערך.
קדמו את פעימת שעון בין 6 ל־7 ובדקו: באוגרים לא משתנה דבר.
תרגול · נבאו, ואז הסתכלו
השאלה
פעימה 2 ביצעה את
LDA 14, שהגיעה מכתובת 0. בפעימה 3 המעבד מביא את ההוראה מכתובת 1. מה יהיה במונה התוכנית בסוף פעימה 3?התשובה הנכונה
נכונה 2
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 2קבוע
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- רכיבים
האפשרויות
נכונה 2
שגויה 1, הכתובת של ההוראה שהובאה
משוב מהקטלוג
מונה התוכנית מתקדם כבר בפעימת ההבאה: באותה פעימה שבה ההוראה נוחתת באוגר ההוראה, המונה עולה באחד. לכן בזמן הפענוח והביצוע הוא כבר מצביע על ההוראה הבאה. בזמן ש־
LDB 15מכתובת 1 מתבצעת, המונה מחזיק 2.שגויה 3, מספר הפעימה
משוב
המונה סופר הוראות בזיכרון, לא פעימות. הוא עולה באחד רק בפעימת הבאה, פעם אחת בכל שלוש פעימות.
אחרי נעילת הניבוי הסצנה משתנה
- פעימת שעון
- 3קבוע
- שבב / טרנזיסטורים
- רכיבים
ואז הסצנה מראה: 2 · The program counter after this tick: the address of the next instruction to fetch
/nodes/cpu/outputs/programCounterניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
2. בפעימת ההבאה המונה שולח את 1 לזיכרון, ומיד עולה ל־2. בזמן ש־
LDB 15מתפענחת ומתבצעת, המונה כבר מצביע על ההוראה הבאה.פתרון מלא
- בתחילת פעימה 3 המונה מחזיק 1, הכתובת של ההוראה הבאה.
- הבאה: הכתובת 1 יוצאת על אפיק הכתובות, והבית שבה,
LDB 15, נוחת באוגר ההוראה. - באותה פעימה המונה עולה באחד: .
אם בחרתם 1, חשבתם שהמונה מחזיק את ההוראה שרצה עכשיו; הוא תמיד צעד אחד לפניה.
תרגול · הגיעו למטרה
השאלה
הזיזו את פעימת שעון אל הפעימה שבה יחידת הבקרה מפענחת את
ADD, ההוראה שבכתובת 2, ולחצו על בדיקה.המטרה
3 ± 0.01
בתחילת השלב: 1
1 ± 0.01
בתחילת השלב: 0
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- רכיבים
- נקרא מהסצנה בנקודה
- The high four bits of the instruction register: 1 LDA, 2 LDB, 3 ADD, 4 SUB, 5 STA, 6 JMP, 7 JZ, 15 HLT
/nodes/cpu/outputs/opcode - נקרא מהסצנה בנקודה
- What this tick does: 0 fetch, 1 decode, 2 execute, 3 halted
/nodes/cpu/outputs/phase
הגדרה אחת שמגיעה למטרה
- פעימת שעון
- 7
- המספר הראשון
- 0
- המספר השני
- 0
משוב לתשובה נכונה
פעימה 7. ההוראה השלישית מתחילה בפעימה 6 בהבאה, ופעימה 7 היא הפענוח שלה. יחידת הבקרה מראה
ADDומדליקה פלט ALU וקלט A.משוב לתשובה שגויה
עוד לא. מצאו את ההבאה של
ADDולכו פעימה אחת קדימה.רמז
הוראה מכתובת מתחילה בפעימה .
פתרון מלא
- כל הוראה תופסת שלוש פעימות, והראשונה מתחילה בפעימה 0.
ADDבכתובת 2 היא ההוראה השלישית, ולכן היא מתחילה בפעימה .- ההבאה בפעימה 6, הפענוח בפעימה 7, הביצוע בפעימה 8.
בפעימה 6 ההוראה כבר באוגר ההוראה, אבל זו עוד ההבאה.
תרגול · חשבו
השאלה
המעבד מתחיל מאיפוס בפעימה 0. ההוראה הרביעית,
STA 13, כותבת את הסכום לתא 13. כמה פעימות שעון רצות, מהראשונה ועד זו שבה הסכום נכתב, כולל שתיהן?התשובה הנכונה
12 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- רכיבים
- מתקבלת בטווח
- ± 0.01
- ערך קבוע בשאלה
תשובות שגויות שהשאלה מזהה
11 ± 0.01
משוב מהקטלוג
במחשב סופרים מאפס. הכתובות הן 0 עד 15, ולכן יש שישה־עשר תאים, לא חמישה־עשר. באותו אופן הפעימה הראשונה היא פעימה 0, ולכן עד סוף פעימה 11 רצו שתים־עשרה פעימות. כשהמספור מתחיל באפס, הכמות היא המספר האחרון ועוד אחד.
4 ± 0.01
טעות נפוצה: Takes one clock tick to run one whole instruction, forgetting the separate fetch, decode and execute ticks.
משוב מהקטלוג
בשבב הזה כל הוראה לוקחת שלוש פעימות: הבאה, פענוח וביצוע. ארבע הוראות הן שתים־עשרה פעימות, ושעון של 1000 פעימות בשנייה מריץ רק כ־333 הוראות בשנייה. גם במעבדים אמיתיים הוראה אחת לוקחת בדרך כלל כמה פעימות, אף שהם מחפים הוראות זו על זו.
משוב לתשובה נכונה
ארבע הוראות כפול שלוש פעימות: . הכתיבה קורה בפעימה 11, הפעימה השתים־עשרה, כי הספירה מתחילה ב־0.
רמז
כמה הוראות רצות עד הכתיבה, וכמה פעימות לוקחת כל אחת?
פתרון מלא
STA 13היא ההוראה הרביעית:LDA,LDB,ADD,STA.- כל הוראה לוקחת שלוש פעימות: הבאה, פענוח, ביצוע.
- פעימות: פעימות 0 עד 11.
אם עניתם , קראתם את מספר הפעימה האחרונה; כשמתחילים מ־0, יש אחת יותר. אם עניתם , ספרתם פעימה אחת להוראה.
תרגול · חשבו
השאלה
פעימת שעון עומדת על 9, והמכסה סגור. כמה הוראות הסתיימו לגמרי, כולל הביצוע שלהן, בסוף הפעימה הזאת?
התשובה הנכונה
3 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 9קבוע
- המספר הראשון
- 28ברירת מחדל
- המספר השני
- 14ברירת מחדל
- שבב / טרנזיסטורים
- שבבקבוע
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- Instructions executed once this tick ends (three ticks each; none after HLT)
/nodes/cpu/outputs/instructions
תשובות שגויות שהשאלה מזהה
10 ± 0.01
טעות נפוצה: Takes one clock tick to run one whole instruction, forgetting the separate fetch, decode and execute ticks.
משוב מהקטלוג
בשבב הזה כל הוראה לוקחת שלוש פעימות: הבאה, פענוח וביצוע. ארבע הוראות הן שתים־עשרה פעימות, ושעון של 1000 פעימות בשנייה מריץ רק כ־333 הוראות בשנייה. גם במעבדים אמיתיים הוראה אחת לוקחת בדרך כלל כמה פעימות, אף שהם מחפים הוראות זו על זו.
4 ± 0.01
טעות נפוצה: Takes one clock tick to run one whole instruction, forgetting the separate fetch, decode and execute ticks.
משוב
ההוראה הרביעית רק הובאה בפעימה 9; הפענוח והביצוע שלה עוד לפניה.
משוב לתשובה נכונה
שלוש. פעימות 0 עד 8 הן שלוש הוראות שלמות, ופעימה 9 היא רק ההבאה של הרביעית,
STA 13.פתרון מלא
- עד סוף פעימה 9 רצו פעימות.
- כל הוראה לוקחת שלוש: .
- שלוש הוראות הושלמו, והפעימה הנותרת היא הבאה של הרביעית.
אם עניתם , ספרתם פעימה אחת להוראה. אם עניתם , ספרתם גם את ההוראה שרק הובאה.
שיעור 3 מתוך 4 · כ־25 דקות
אוגרים וה־ALU
איפה המעבד באמת מחשב: שני אוגרים של שמונה סיביות, ALU שמחברת ומחסרת, סכום שגדול מ־255 ומתגלגל מעבר לאפס, חיסור שיורד מתחת לאפס, ודגלים שזוכרים מה קרה.
6 השלבים והתשובות שלהם
תרגול · נבאו, ואז הסתכלו
השאלה
המספר הראשון הוא 100 והמספר השני 50, ושניהם כבר נטענו לאוגרים. מה יהיה באוגר A אחרי שה־
ADDיתבצע, בפעימה 8?התשובה הנכונה
150 ± 0.01
ניבוי מספרי נחשב נכון בטווח ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 5קבוע
- המספר הראשון
- 100קבוע
- המספר השני
- 50קבוע
- שבב / טרנזיסטורים
- רכיבים
אחרי נעילת הניבוי הסצנה משתנה
- פעימת שעון
- 8קבוע
- שבב / טרנזיסטורים
- רכיבים
ואז הסצנה מראה: 150 · Register A after this tick
/nodes/cpu/outputs/registerAניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
150. ה־ALU מחברת את A ו־B, והסכום חוזר על אפיק הנתונים אל A, במקום המספר הראשון.
פתרון מלא
- אחרי פעימה 5: A מחזיק 100, ו־B מחזיק 50.
- בביצוע של
ADDה־ALU מחשבת . - קווי הבקרה פלט ALU וקלט A שולחים את התשובה ל־A, ולכן A מחזיק 150.
150 קטן מ־255, ולכן הוא נכנס בשמונה סיביות.
תרגול · נבאו, ואז הסתכלו
השאלה
עכשיו המספר הראשון הוא 200 והמספר השני 100. מה יהיה באוגר A אחרי ה־
ADD?התשובה הנכונה
נכונה 44
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 5קבוע
- המספר הראשון
- 200קבוע
- המספר השני
- 100קבוע
- שבב / טרנזיסטורים
- רכיבים
האפשרויות
נכונה 44
שגויה 300
טעות נפוצה: Thinks an eight-bit register can hold any whole number, so 200 + 100 gives 300.
משוב מהקטלוג
לאוגר יש בדיוק שמונה סיביות, ולכן הוא מחזיק רק 0 עד 255. 300 צריך תשע סיביות,
1 0010 1100. הסיבית התשיעית לא נכנסת ל־A: היא נדלקת כדגל הנשא, ובאוגר נשארות שמונה הסיביות התחתונות, .שגויה 255, הגדול ביותר שנכנס
טעות נפוצה: Thinks a sum too big for eight bits stops at the largest value, 255, instead of wrapping round past zero.
משוב מהקטלוג
המסכם לא יודע שיש תקרה: הוא מחבר סיבית אחר סיבית, והנשא מהסיבית העליונה פשוט לא נכנס לאוגר. לכן הסכום מתגלגל מעבר לאפס, כמו מד מרחק במכונית ישנה: 255 + 1 נותן 0, ו־250 + 10 נותן . דגל הנשא מסמן שזה קרה.
שגויה 0, כי החישוב נכשל
משוב
שום דבר לא נכשל: המסכם תמיד מוציא שמונה סיביות. הוא פשוט מאבד את התשיעית.
אחרי נעילת הניבוי הסצנה משתנה
- פעימת שעון
- 8קבוע
- שבב / טרנזיסטורים
- רכיבים
ואז הסצנה מראה: 44 · Register A after this tick
/nodes/cpu/outputs/registerAניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
44, ודגל הנשא דולק. , שהם
1 0010 1100: תשע סיביות. A שומר רק את שמונה התחתונות, .פתרון מלא
- הסכום האמיתי: .
- בשמונה סיביות יש מקום רק עד 255; 300 צריך סיבית תשיעית, ששווה 256.
- הסיבית התשיעית יוצאת לדגל הנשא, ובאוגר נשאר .
הסכום לא נתקע ב־255: הוא מתגלגל מעבר לאפס.
תרגול · חשבו
השאלה
המספר הראשון הוא 250 והמספר השני 10. המכסה סגור, ופעימת שעון עומדת על 8, הביצוע של
ADD. מה יש באוגר A?התשובה הנכונה
4 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 8קבוע
- המספר הראשון
- 250קבוע
- המספר השני
- 10קבוע
- שבב / טרנזיסטורים
- שבבקבוע
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- Register A after this tick
/nodes/cpu/outputs/registerA
תשובות שגויות שהשאלה מזהה
260 ± 0.01
טעות נפוצה: Thinks an eight-bit register can hold any whole number, so 200 + 100 gives 300.
משוב מהקטלוג
לאוגר יש בדיוק שמונה סיביות, ולכן הוא מחזיק רק 0 עד 255. 300 צריך תשע סיביות,
1 0010 1100. הסיבית התשיעית לא נכנסת ל־A: היא נדלקת כדגל הנשא, ובאוגר נשארות שמונה הסיביות התחתונות, .255 ± 0.01
טעות נפוצה: Thinks a sum too big for eight bits stops at the largest value, 255, instead of wrapping round past zero.
משוב מהקטלוג
המסכם לא יודע שיש תקרה: הוא מחבר סיבית אחר סיבית, והנשא מהסיבית העליונה פשוט לא נכנס לאוגר. לכן הסכום מתגלגל מעבר לאפס, כמו מד מרחק במכונית ישנה: 255 + 1 נותן 0, ו־250 + 10 נותן . דגל הנשא מסמן שזה קרה.
משוב לתשובה נכונה
, ובשמונה סיביות . דגל הנשא דולק ומסמן את ה־256 שלא נכנס.
רמז
כמה מעל 255 הסכום?
פתרון מלא
- הסכום האמיתי: .
- גדול מ־255, ולכן הסיבית התשיעית, ששווה 256, נשמטת.
- באוגר A נשאר .
אם עניתם , שכחתם שלאוגר יש רק שמונה סיביות. אם עניתם , עצרתם בתקרה; המסכם מתגלגל מעבר לה.
תרגול · נבאו, ואז הסתכלו
השאלה
בזיכרון נטענה תוכנית אחרת: בכתובת 2 יש עכשיו
SUB, שמחסרת את B מ־A. המספר הראשון הוא 90 והמספר השני 25. מה יהיה ב־A אחרי פעימה 8?התשובה הנכונה
65 ± 0.01
ניבוי מספרי נחשב נכון בטווח ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 5קבוע
- המספר הראשון
- 90קבוע
- המספר השני
- 25קבוע
- שבב / טרנזיסטורים
- רכיבים
- הגדרות נוספות
- Memory
/nodes/cpu/props/memory= [30,47,64,93,100,0,0,0,0,0,0,0,0,0,9,4]
אחרי נעילת הניבוי הסצנה משתנה
- פעימת שעון
- 8קבוע
- שבב / טרנזיסטורים
- רכיבים
ואז הסצנה מראה: 65 · Register A after this tick
/nodes/cpu/outputs/registerAניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
65. ה־ALU מחסרת בעזרת אותו מסכם: היא הופכת את הסיביות של B, מוסיפה 1 ומחברת. כך , ובשמונה סיביות .
פתרון מלא
- A מחזיק 90, ו־B מחזיק 25.
SUBמחשבת .- התשובה חוזרת ל־A.
בתוך ה־ALU זה חיבור: , והסיבית התשיעית נשמטת. לכן דגל הנשא דולק כאן, וזה מסמן שלא היה צורך “ללוות”.
תרגול · חשבו
השאלה
אותה תוכנית חיסור. המספר הראשון הוא 5 והמספר השני 8. המכסה סגור, ופעימת שעון עומדת על 8. מה יש באוגר A?
התשובה הנכונה
253 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 8קבוע
- המספר הראשון
- 5קבוע
- המספר השני
- 8קבוע
- שבב / טרנזיסטורים
- שבבקבוע
- הגדרות נוספות
- Memory
/nodes/cpu/props/memory= [30,47,64,93,100,0,0,0,0,0,0,0,0,0,9,4]
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- Register A after this tick
/nodes/cpu/outputs/registerA
תשובות שגויות שהשאלה מזהה
-3 ± 0.01
טעות נפוצה: Expects a register to store a negative result with a minus sign, as −3.
משוב מהקטלוג
באוגר יש רק שמונה סיביות, ואין בו מקום לסימן מינוס. כשמחסרים מספר גדול ממספר קטן, החשבון מתגלגל לאחור מעבר לאפס: נותן ,
1111 1101. מחשבים מפרשים תבנית כזו כ־−3 כשמחליטים שהסיבית העליונה היא סימן (שיטת המשלים ל־2), אבל בשבב עצמו נשאר 253.3 ± 0.01
טעות נפוצה: Expects a register to store a negative result with a minus sign, as −3.
משוב
SUBמחשבת תמיד , כאן , ולא את ההפרש החיובי.
משוב לתשובה נכונה
253,
1111 1101. יורד שלושה צעדים מתחת לאפס ומתגלגל לאחור: .רמז
צעד אחד מתחת לאפס, בשמונה סיביות, הוא 255.
פתרון מלא
- החשבון הרגיל: .
- באוגר אין סימן מינוס, ושמונה סיביות מתגלגלות כמו מד מרחק: צעד אחד מתחת ל־0 הוא 255.
- שלושה צעדים מתחת לאפס: .
אם עניתם , ציפיתם לסימן מינוס באוגר. אם עניתם , חיסרתם את הקטן מהגדול;
SUBתמיד מחשבת .תרגול · נבאו, ואז הסתכלו
השאלה
בתוכנית החיסור, המספר הראשון והמספר השני שניהם 37. מה יקרה כשה־
SUBיתבצע?התשובה הנכונה
נכונה A יחזיק 0, ודגל האפס יידלק
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 5קבוע
- המספר הראשון
- 37קבוע
- המספר השני
- 37קבוע
- שבב / טרנזיסטורים
- רכיבים
- הגדרות נוספות
- Memory
/nodes/cpu/props/memory= [30,47,64,93,100,0,0,0,0,0,0,0,0,0,9,4]
האפשרויות
נכונה A יחזיק 0, ודגל האפס יידלק
שגויה A יחזיק 0, ושום דגל לא יידלק
משוב
דגל האפס נדלק בדיוק כשהתשובה של ה־ALU היא 0. בשבילו הוא קיים: כדי שהוראה אחרת תוכל לשאול עליו.
שגויה A יחזיק 74
משוב
הוא חיבור. כאן בכתובת 2 יש
SUB.
אחרי נעילת הניבוי הסצנה משתנה
- פעימת שעון
- 8קבוע
- שבב / טרנזיסטורים
- רכיבים
ואז הסצנה מראה: 1 · 1 when the last ADD or SUB gave 0, else 0
/nodes/cpu/outputs/zeroFlagניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
: A מחזיק 0, ודגל האפס דולק. בשיעור הבא הוראת קפיצה תשתמש בדגל הזה כדי להחליט אם לצאת מלולאה.
פתרון מלא
SUBמחשבת .- A קולט את 0.
- כל
ADDאוSUBגם מעדכנת את הדגלים: התשובה 0, ולכן דגל האפס נדלק.
שיעור 4 מתוך 4 · כ־30 דקות
קפיצות, לולאות ומהירות שעון
איך מעבד שיודע רק לחבר כופל: קפיצה שמחזירה את מונה התוכנית אחורה, קפיצה מותנית שיוצאת מהלולאה בזמן, ספירה של הוראות ופעימות, ומהירות השעון שהופכת פעימות לשניות.
7 השלבים והתשובות שלהם
תרגול · נבאו, ואז הסתכלו
השאלה
בכתובת 9 שמורה
JMP 0. בפעימה 27 היא הובאה, ומונה התוכנית עלה ל־10. מה יהיה במונה אחרי הביצוע שלה, בפעימה 29?התשובה הנכונה
0 ± 0.01
ניבוי מספרי נחשב נכון בטווח ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 27קבוע
- סבבים
- 4
- מהירות השעון
- 1000 Hz
- שבב / טרנזיסטורים
- רכיבים
אחרי נעילת הניבוי הסצנה משתנה
- פעימת שעון
- 29קבוע
- שבב / טרנזיסטורים
- רכיבים
ואז הסצנה מראה: 0 · The program counter after this tick: the address of the next instruction to fetch
/nodes/cpu/outputs/programCounterניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
0. קפיצה לא עושה חשבון: היא כותבת את הכתובת שבהוראה ישר לתוך מונה התוכנית. ההבאה הבאה, בפעימה 30, מביאה שוב את
LDA 13מראש התוכנית.פתרון מלא
- אחרי ההבאה בפעימה 27 המונה מחזיק 10.
- בביצוע של
JMP 0הכתובת 0 עוברת מאוגר ההוראה אל המונה, במקום 10. - לכן אחרי פעימה 29 המונה מחזיק 0, והסבב הבא מתחיל.
תרגול · בחרו
השאלה
בכתובת 8 שמורה
JZ 10, “קפוץ ל־10 אם אפס”. מתי היא קופצת?התשובה הנכונה
נכונה כשדגל האפס דולק: ה־
SUBהאחרונה הורידה את מספר הסבבים שנותרו לאפס
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 26
- סבבים
- 4
- מהירות השעון
- 1000 Hz
- שבב / טרנזיסטורים
- רכיבים
האפשרויות
מוצגות בסדר אקראי.
נכונה כשדגל האפס דולק: ה־
SUBהאחרונה הורידה את מספר הסבבים שנותרו לאפסשגויה תמיד, כמו
JMPמשוב
אז התוכנית הייתה מדלגת ל־
HLTכבר בסבב הראשון.JZהיא קפיצה מותנית.שגויה כשבתא 10 יש 0
טעות נפוצה: Confuses an address, the number that names a memory cell, with the value stored in that cell.
משוב מהקטלוג
כתובת היא השם של תא, כמו מספר של בית ברחוב; התוכן הוא מה שגר בו. בתא שכתובתו 14 שמור המספר 28.
LDA 14פירושו “טענו ל־A את מה שבתא 14”, כלומר 28, ולא את המספר 14 עצמו.שגויה אף פעם:
JMP 0שאחריה תמיד מחזירה למעלהטעות נפוצה: Reads a program top to bottom once, as if a jump back did not make the same instructions run again.
משוב מהקטלוג
קפיצה מחזירה את מונה התוכנית לכתובת מוקדמת, והמעבד פשוט ממשיך להביא משם: אותן הוראות רצות שוב, סבב אחר סבב, עד שקפיצה מותנית יוצאת מהלולאה. בתוכנית הכפל כל סבב מוסיף את המספר לסכום פעם אחת, ולכן ארבעה סבבים של 6 נותנים 24, לא 6.
משוב לתשובה נכונה
JZבודקת את דגל האפס, שנקבע ב־SUBשל הסבב. כל עוד נותרו סבבים, הדגל כבוי, והמעבד ממשיך ל־JMP 0. כשהמספר מגיע ל־0 הדגל נדלק, והקפיצה ל־10 יוצאת מהלולאה אלHLT.פתרון מלא
- בכתובות 4 עד 7 התוכנית טוענת את מספר הסבבים, מחסרת 1 ושומרת אותו.
- ה־
SUBמדליקה את דגל האפס רק כשהתשובה 0. JZ 10קופצת רק כשהדגל דולק; אחרת המונה ממשיך כרגיל ל־9.
הכתובת 10 שבהוראה היא לאן לקפוץ, לא תא שבודקים.
תרגול · חשבו
השאלה
המספר שכופלים הוא עכשיו 6, וסבבים עומד על 4. המכסה סגור, והתוכנית כבר עצרה. מה יש בתא 13?
התשובה הנכונה
24 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 239קבוע
- סבבים
- 4קבוע
- מהירות השעון
- 1000 Hz
- שבב / טרנזיסטורים
- שבבקבוע
- הגדרות נוספות
- Cell14
/nodes/cpu/props/cell14= 6
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- The byte in memory cell watchAddress after this tick
/nodes/cpu/outputs/watched
תשובות שגויות שהשאלה מזהה
6 ± 0.01
טעות נפוצה: Reads a program top to bottom once, as if a jump back did not make the same instructions run again.
משוב מהקטלוג
קפיצה מחזירה את מונה התוכנית לכתובת מוקדמת, והמעבד פשוט ממשיך להביא משם: אותן הוראות רצות שוב, סבב אחר סבב, עד שקפיצה מותנית יוצאת מהלולאה. בתוכנית הכפל כל סבב מוסיף את המספר לסכום פעם אחת, ולכן ארבעה סבבים של 6 נותנים 24, לא 6.
10 ± 0.01
טעות נפוצה: Reads a program top to bottom once, as if a jump back did not make the same instructions run again.
משוב
מחבר את שני המספרים. הלולאה מוסיפה את 6 שוב ושוב, פעם בכל סבב.
משוב לתשובה נכונה
24. בכל סבב התוכנית מוסיפה 6 לתא 13: 6, 12, 18, 24. כך מעבד שיודע רק לחבר כופל: הוא ארבע פעמים 6.
רמז
כמה מוסיף כל סבב לתא 13, וכמה סבבים יש?
פתרון מלא
- בתחילה בתא 13 יש 0.
- כל סבב, בכתובות 0 עד 3, טוען את התא, מוסיף 6 ושומר בחזרה.
- הלולאה רצה ארבעה סבבים, ולכן .
אם עניתם , קראתם את התוכנית פעם אחת מלמעלה למטה;
JMP 0מחזירה אותה להתחלה עוד שלוש פעמים.תרגול · חשבו
השאלה
סבבים עומד על 3. בתוכנית אחת־עשרה הוראות, בכתובות 0 עד 10. כמה הוראות המעבד מבצע מהאיפוס ועד שהוא עוצר, כולל ה־
HLT?התשובה הנכונה
30 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 239קבוע
- סבבים
- 3קבוע
- מהירות השעון
- 1000 Hz
- שבב / טרנזיסטורים
- שבבקבוע
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- Instructions executed once this tick ends (three ticks each; none after HLT)
/nodes/cpu/outputs/instructions
תשובות שגויות שהשאלה מזהה
11 ± 0.01
טעות נפוצה: Reads a program top to bottom once, as if a jump back did not make the same instructions run again.
משוב מהקטלוג
קפיצה מחזירה את מונה התוכנית לכתובת מוקדמת, והמעבד פשוט ממשיך להביא משם: אותן הוראות רצות שוב, סבב אחר סבב, עד שקפיצה מותנית יוצאת מהלולאה. בתוכנית הכפל כל סבב מוסיף את המספר לסכום פעם אחת, ולכן ארבעה סבבים של 6 נותנים 24, לא 6.
33 ± 0.01
טעות נפוצה: Reads a program top to bottom once, as if a jump back did not make the same instructions run again.
משוב
HLTרצה רק פעם אחת, בסוף, ובכל סבב חוץ מהאחרון רצות עשר הוראות.
משוב לתשובה נכונה
30. כל סבב מבצע את עשר ההוראות שבכתובות 0 עד 9, חוץ מהאחרון, שקופץ מ־
JZישר ל־HLT: .רמז
כמה הוראות רצות בסבב אחד, ומה שונה בסבב האחרון?
פתרון מלא
- סבב רגיל: עשר הוראות, כתובות 0 עד 9, כולל
JMP 0. - בסבב האחרון
JZ 10קופצת, ולכןJMP 0לא רצה: תשע הוראות, ואזHLT. - שלושה סבבים: , כלומר עשר הוראות לכל סבב.
אם עניתם , ספרתם את ההוראות שבזיכרון, כאילו כל אחת רצה פעם אחת. אם עניתם , ספרתם את כל אחת־עשרה ההוראות בכל סבב.
תרגול · חשבו
השאלה
סבבים עומד על 4, ומהירות השעון היא 1000 Hz: אלף פעימות בשנייה. כמה זמן לוקחת התוכנית כולה, מהאיפוס עד שה־
HLTמתבצעת?התשובה הנכונה
0.12 s ± 1%
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- סבבים
- 4קבוע
- מהירות השעון
- 1000 Hzקבוע
- שבב / טרנזיסטורים
- רכיבים
- מתקבלת בטווח
- ± 1%
- מחושבת מהסצנה בהגדרה של השלב
- How long the whole program takes at clockHz: ticksToHalt / clockHz
/nodes/cpu/outputs/timeToHalt
כל יחידה של אותו גודל מתקבלת; התשובה מומרת לפני הבדיקה.
תשובות שגויות שהשאלה מזהה
0.04 s ± 1%
משוב מהקטלוג
מהירות השעון סופרת פעימות בשנייה, לא הוראות. כאן כל הוראה לוקחת שלוש פעימות, ולכן הזמן הוא מספר הפעימות חלקי מהירות השעון: 40 הוראות הן 120 פעימות, ובשעון של 1000 Hz הן לוקחות 0.12 s, לא 0.04 s.
משוב לתשובה נכונה
הוראות כפול פעימות הן פעימות, ו־: כלומר 0.12 s, או 120 ms.
רמז
כמה פעימות לוקחת התוכנית? חלקו במספר הפעימות בשנייה.
פתרון מלא
- ארבעה סבבים של עשר הוראות: הוראות, כולל ה־
HLT. - כל הוראה שלוש פעימות: פעימות.
- הזמן הוא הפעימות חלקי מהירות השעון: .
אם עניתם 0.04 s, חילקתם הוראות ולא פעימות במהירות השעון.
תרגול · הגיעו למטרה
השאלה
סבבים קבוע על 4, כך שהתוכנית לוקחת 120 פעימות. שנו את מהירות השעון עד שהתוכנית כולה לוקחת 0.03 s, ולחצו על בדיקה.
המטרה
0.03 s ± 0.0005 s
בתחילת השלב: 0.12 s
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0קבוע
- סבבים
- 4קבוע
- מהירות השעון
- 1000 Hz
- שבב / טרנזיסטורים
- רכיבים
- נקרא מהסצנה בנקודה
- How long the whole program takes at clockHz: ticksToHalt / clockHz
/nodes/cpu/outputs/timeToHalt
הגדרה אחת שמגיעה למטרה
- מהירות השעון
- 4000 Hz
משוב לתשובה נכונה
4000 Hz: . שעון מהיר פי ארבעה מריץ את אותן 120 פעימות ברבע מהזמן. התוכנית לא השתנתה, רק הקצב.
משוב לתשובה שגויה
עוד לא. חלקו את 120 הפעימות ב־0.03 s.
רמז
פי כמה צריך לקצר את הזמן?
פתרון מלא
- הזמן: , כש־ מספר הפעימות, ולכן .
- הצבה: .
- קבעו את מהירות השעון על 4000 Hz.
ב־1000 Hz התוכנית לוקחת 0.12 s: פי ארבעה יותר זמן.
תרגול · בחרו
השאלה
למעבד אמיתי יש שעון של 3 GHz: שלושה מיליארד פעימות בשנייה. אילו כל הוראה בו הייתה לוקחת שלוש פעימות, כמו בשבב שלנו, כמה הוראות היה מבצע בשנייה?
התשובה הנכונה
נכונה מיליארד
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- פעימת שעון
- 0
- סבבים
- 4
- מהירות השעון
- 1000 Hz
- שבב / טרנזיסטורים
- רכיבים
האפשרויות
מוצגות בסדר אקראי.
נכונה מיליארד
שגויה שלושה מיליארד
משוב מהקטלוג
מהירות השעון סופרת פעימות בשנייה, לא הוראות. כאן כל הוראה לוקחת שלוש פעימות, ולכן הזמן הוא מספר הפעימות חלקי מהירות השעון: 40 הוראות הן 120 פעימות, ובשעון של 1000 Hz הן לוקחות 0.12 s, לא 0.04 s.
שגויה תשעה מיליארד
משוב
שלוש פעימות להוראה פירושן פחות הוראות מפעימות, לא יותר: מחלקים בשלוש, לא כופלים.
משוב לתשובה נכונה
: מיליארד הוראות בשנייה. מעבדים אמיתיים מגיעים ליותר, כי הם מחפים הוראות ומריצים כמה בבת אחת, אבל השעון עדיין סופר פעימות, לא הוראות.
פתרון מלא
- 3 GHz הם פעימות בשנייה.
- כל הוראה לוקחת שלוש פעימות.
- הוראות בשנייה: , מיליארד.
אם בחרתם שלושה מיליארד, הנחתם שכל פעימה מסיימת הוראה.
בכל היחידה · 13 טעויות נפוצות
קטלוג הטעויות הנפוצות
כל טעות נפוצה שהיחידה מזהה, בכמה מילים. פתחו טעות כדי לראות מה הלומדים קוראים כשהתשובה מתאימה לה, ואיפה היא נשאלת.
Thinks each extra address line adds a fixed number of cells (four lines name 4 or 8 cells), instead of doubling them: 2⁴ = 16.
- הלומדים קוראים
כל נתיב נוסף באפיק הכתובות מכפיל את מספר הכתובות, ולא מוסיף להן. נתיב אחד נותן שתי כתובות, 0 ו־1; שני נתיבים נותנים ארבע,
00עד11; וארבעה נתיבים נותנים כתובות, מ־0000עד1111. נתיב אחד לכל תא היה דורש שישה־עשר חוטים.- מזוהה בשאלות
Forgets that counting starts at 0: takes the largest address, 15, as the number of cells, or tick 11 as the eleventh tick.
- הלומדים קוראים
במחשב סופרים מאפס. הכתובות הן 0 עד 15, ולכן יש שישה־עשר תאים, לא חמישה־עשר. באותו אופן הפעימה הראשונה היא פעימה 0, ולכן עד סוף פעימה 11 רצו שתים־עשרה פעימות. כשהמספור מתחיל באפס, הכמות היא המספר האחרון ועוד אחד.
Takes the largest number n bits can hold to be 2ⁿ (256 for a byte) rather than 2ⁿ − 1 (255).
- הלומדים קוראים
שמונה סיביות נותנות צירופים שונים, אבל אחד מהם הוא אפס,
00000000. לכן המספרים הם 0 עד 255, והגדול ביותר הוא ,11111111. כדי לכתוב 256 צריך סיבית תשיעית.- מזוהה בשאלות
Reads a byte as two separate numbers, its high and low four bits, instead of one eight-bit number.
- הלומדים קוראים
כשקוראים בית כמספר, כל שמונה הסיביות הן מספר אחד. ערכי המקומות, מימין לשמאל, הם 1, 2, 4, 8, 16, 32, 64, 128. ב־
0001 1110דולקות הסיביות של 16, 8, 4 ו־2, ולכן הוא . החלוקה לשני חצאים, קוד פעולה וכתובת, נכונה רק כשקוראים את הבית כהוראה.- מזוהה בשאלות
Confuses an address, the number that names a memory cell, with the value stored in that cell.
- הלומדים קוראים
כתובת היא השם של תא, כמו מספר של בית ברחוב; התוכן הוא מה שגר בו. בתא שכתובתו 14 שמור המספר 28.
LDA 14פירושו “טענו ל־A את מה שבתא 14”, כלומר 28, ולא את המספר 14 עצמו.
Thinks loading a number into a register takes it out of memory, leaving the cell empty.
- הלומדים קוראים
טעינה מעתיקה. הזיכרון שולח על אפיק הנתונים את המתחים של הסיביות שבתא, והאוגר קולט אותם, אבל התא עצמו לא משתנה. אחרי
LDA 14המספר 28 נמצא גם באוגר A וגם בתא 14. רק כתיבה,STA, משנה תא בזיכרון.- מזוהה בשאלות
Thinks the program counter holds the address of the instruction being carried out, rather than the next one to fetch.
- הלומדים קוראים
מונה התוכנית מתקדם כבר בפעימת ההבאה: באותה פעימה שבה ההוראה נוחתת באוגר ההוראה, המונה עולה באחד. לכן בזמן הפענוח והביצוע הוא כבר מצביע על ההוראה הבאה. בזמן ש־
LDB 15מכתובת 1 מתבצעת, המונה מחזיק 2.
Takes one clock tick to run one whole instruction, forgetting the separate fetch, decode and execute ticks.
- הלומדים קוראים
בשבב הזה כל הוראה לוקחת שלוש פעימות: הבאה, פענוח וביצוע. ארבע הוראות הן שתים־עשרה פעימות, ושעון של 1000 פעימות בשנייה מריץ רק כ־333 הוראות בשנייה. גם במעבדים אמיתיים הוראה אחת לוקחת בדרך כלל כמה פעימות, אף שהם מחפים הוראות זו על זו.
Thinks an eight-bit register can hold any whole number, so 200 + 100 gives 300.
- הלומדים קוראים
לאוגר יש בדיוק שמונה סיביות, ולכן הוא מחזיק רק 0 עד 255. 300 צריך תשע סיביות,
1 0010 1100. הסיבית התשיעית לא נכנסת ל־A: היא נדלקת כדגל הנשא, ובאוגר נשארות שמונה הסיביות התחתונות, .
Thinks a sum too big for eight bits stops at the largest value, 255, instead of wrapping round past zero.
- הלומדים קוראים
המסכם לא יודע שיש תקרה: הוא מחבר סיבית אחר סיבית, והנשא מהסיבית העליונה פשוט לא נכנס לאוגר. לכן הסכום מתגלגל מעבר לאפס, כמו מד מרחק במכונית ישנה: 255 + 1 נותן 0, ו־250 + 10 נותן . דגל הנשא מסמן שזה קרה.
Expects a register to store a negative result with a minus sign, as −3.
- הלומדים קוראים
באוגר יש רק שמונה סיביות, ואין בו מקום לסימן מינוס. כשמחסרים מספר גדול ממספר קטן, החשבון מתגלגל לאחור מעבר לאפס: נותן ,
1111 1101. מחשבים מפרשים תבנית כזו כ־−3 כשמחליטים שהסיבית העליונה היא סימן (שיטת המשלים ל־2), אבל בשבב עצמו נשאר 253.- מזוהה בשאלות
Reads a program top to bottom once, as if a jump back did not make the same instructions run again.
- הלומדים קוראים
קפיצה מחזירה את מונה התוכנית לכתובת מוקדמת, והמעבד פשוט ממשיך להביא משם: אותן הוראות רצות שוב, סבב אחר סבב, עד שקפיצה מותנית יוצאת מהלולאה. בתוכנית הכפל כל סבב מוסיף את המספר לסכום פעם אחת, ולכן ארבעה סבבים של 6 נותנים 24, לא 6.
Takes the clock rate as the number of instructions run per second, forgetting that an instruction takes several ticks.
- הלומדים קוראים
מהירות השעון סופרת פעימות בשנייה, לא הוראות. כאן כל הוראה לוקחת שלוש פעימות, ולכן הזמן הוא מספר הפעימות חלקי מהירות השעון: 40 הוראות הן 120 פעימות, ובשעון של 1000 Hz הן לוקחות 0.12 s, לא 0.04 s.