איך מעבד שיודע רק לחבר כופל: קפיצה שמחזירה את מונה התוכנית אחורה, קפיצה מותנית שיוצאת מהלולאה בזמן, ספירה של הוראות ופעימות, ומהירות השעון שהופכת פעימות לשניות.
שלב 1 מתוך 7 · תוכנית עם לולאה
שלב 1 מתוך 7
תוכנית עם לולאה
ל־ALU של השבב אין כפל. כדי לחשב מחברים 3 ארבע פעמים, וכדי לא לכתוב את אותן הוראות ארבע פעמים, כותבים אותן פעם אחת וחוזרים אליהן: לולאה. זו התוכנית שבזיכרון עכשיו:
| כתובת | הוראה | מה היא עושה |
|---|---|---|
| 0 | LDA 13 |
טוענת את הסכום עד עכשיו |
| 1 | LDB 14 |
טוענת את המספר שכופלים |
| 2 | ADD |
מוסיפה אותו לסכום |
| 3 | STA 13 |
שומרת את הסכום |
| 4 | LDA 15 |
טוענת את מספר הסבבים שנותרו |
| 5 | LDB 12 |
טוענת 1 |
| 6 | SUB |
מורידה סבב אחד |
| 7 | STA 15 |
שומרת את מה שנותר |
| 8 | JZ 10 |
אם לא נותרו סבבים, קופצת ל־10 |
| 9 | JMP 0 |
חוזרת לתחילת הלולאה |
| 10 | HLT |
עוצרת |
בתא 12 שמור 1, בתא 13 הסכום, שמתחיל באפס, בתא 14 המספר שכופלים, 3, ובתא 15 מספר הסבבים, שהפרמטר סבבים קובע.
קפיצה היא הוראה שכותבת כתובת חדשה לתוך מונה התוכנית. פעימת שעון עומדת על 27, ההבאה של JMP 0 בסוף הסבב הראשון: המונה כבר עלה ל־10.
שלב 2 מתוך 7
קפיצה מותנית
אילו בסוף הלולאה הייתה רק JMP 0, התוכנית הייתה מסתובבת לנצח. ה־JZ 10 שלפניה היא קפיצה מותנית: היא קופצת רק כשדגל האפס דולק, ואחרת לא עושה דבר, והמעבד ממשיך להוראה הבאה. כך מחשב מקבל החלטות: כל “אם” בתוכנית הוא בסוף קפיצה מותנית.
שלב 3 מתוך 7
לכפול בעזרת חיבור
סבב אחד הוא עשר הוראות, מכתובת 0 עד 9, שהן שלושים פעימות. קדמו את פעימת שעון בקפיצות של שלושים, ועקבו אחרי תא 13 שגדל בכל סבב.
עכשיו המספר שכופלים הוא 6, סבבים עומד על 4, המכסה סגור, והתוכנית כבר עצרה.
שלב 4 מתוך 7
לספור הוראות
כמה זמן תוכנית רצה תלוי לא בכמה הוראות כתובות בה, אלא בכמה הוראות המעבד מבצע בפועל. בלולאה, אותן הוראות רצות שוב בכל סבב.
שלב 5 מתוך 7
מפעימות לשניות
השעון של מעבד פועם בקצב קבוע, התדר שלו, שנמדד בהרץ: פעימות בשנייה. כדי לדעת כמה זמן לוקחת תוכנית, סופרים את הפעימות שלה, , ומחלקים בתדר, :
מהירות השעון של השבב עומדת על 1000 Hz. השבב לא מצייר את השעון; הקצב רק קובע כמה זמן לוקחת כל פעימה.
שלב 6 מתוך 7
שעון מהיר יותר
יש שתי דרכים לקצר את הזמן: לבצע פחות פעימות, או להאיץ את השעון. כאן התוכנית קבועה, ונשאר להאיץ.
שלב 7 מתוך 7
מעבדים אמיתיים
השעון של מעבד במחשב נייד פועם שלושה או ארבעה מיליארד פעמים בשנייה, 3 GHz עד 4 GHz. אבל מהירות השעון לבדה לא אומרת כמה עבודה נעשית: צריך לדעת גם כמה פעימות לוקחת כל הוראה.
הגרסה האינטראקטיבית נטענת…
הגרסה האינטראקטיבית נטענת…
כל שלב מכין לכם את הסצנה, ובקר שמסומן „קבוע” נשאר במקומו בשלב הזה.
תרגול · נבאו, ואז הסתכלו
בכתובת 9 שמורה JMP 0. בפעימה 27 היא הובאה, ומונה התוכנית עלה ל־10. מה יהיה במונה אחרי הביצוע שלה, בפעימה 29?
תרגול · נבאו, ואז הסתכלו
בכתובת 9 שמורה JMP 0. בפעימה 27 היא הובאה, ומונה התוכנית עלה ל־10. מה יהיה במונה אחרי הביצוע שלה, בפעימה 29?
תרגול · בחרו
בכתובת 8 שמורה JZ 10, “קפוץ ל־10 אם אפס”. מתי היא קופצת?
תרגול · בחרו
בכתובת 8 שמורה JZ 10, “קפוץ ל־10 אם אפס”. מתי היא קופצת?
תרגול · חשבו
המספר שכופלים הוא עכשיו 6, וסבבים עומד על 4. המכסה סגור, והתוכנית כבר עצרה. מה יש בתא 13?
תרגול · חשבו
המספר שכופלים הוא עכשיו 6, וסבבים עומד על 4. המכסה סגור, והתוכנית כבר עצרה. מה יש בתא 13?
תרגול · חשבו
סבבים עומד על 3. בתוכנית אחת־עשרה הוראות, בכתובות 0 עד 10. כמה הוראות המעבד מבצע מהאיפוס ועד שהוא עוצר, כולל ה־HLT?
תרגול · חשבו
סבבים עומד על 3. בתוכנית אחת־עשרה הוראות, בכתובות 0 עד 10. כמה הוראות המעבד מבצע מהאיפוס ועד שהוא עוצר, כולל ה־HLT?
תרגול · חשבו
סבבים עומד על 4, ומהירות השעון היא 1000 Hz: אלף פעימות בשנייה. כמה זמן לוקחת התוכנית כולה, מהאיפוס עד שה־HLT מתבצעת?
תרגול · חשבו
סבבים עומד על 4, ומהירות השעון היא 1000 Hz: אלף פעימות בשנייה. כמה זמן לוקחת התוכנית כולה, מהאיפוס עד שה־HLT מתבצעת?
תרגול · הגיעו למטרה
סבבים קבוע על 4, כך שהתוכנית לוקחת 120 פעימות. שנו את מהירות השעון עד שהתוכנית כולה לוקחת 0.03 s, ולחצו על בדיקה.
תרגול · הגיעו למטרה
סבבים קבוע על 4, כך שהתוכנית לוקחת 120 פעימות. שנו את מהירות השעון עד שהתוכנית כולה לוקחת 0.03 s, ולחצו על בדיקה.
תרגול · בחרו
למעבד אמיתי יש שעון של 3 GHz: שלושה מיליארד פעימות בשנייה. אילו כל הוראה בו הייתה לוקחת שלוש פעימות, כמו בשבב שלנו, כמה הוראות היה מבצע בשנייה?
תרגול · בחרו
למעבד אמיתי יש שעון של 3 GHz: שלושה מיליארד פעימות בשנייה. אילו כל הוראה בו הייתה לוקחת שלוש פעימות, כמו בשבב שלנו, כמה הוראות היה מבצע בשנייה?
השיעור הושלם. עניתם על כל שאלות התרגול בו.