ViewWiki

העולם, קצת יותר מקרוב

איך מעבד עובד.

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

גלו את הסצנה מאמר אינטראקטיבי

01 / הניסוי

פעימה אחת בכל פעם.

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

תמונה של הסצנה התלת־ממדית „איך מעבד עובד”, שעוסקת בשאלה: איך שבב שרק מזיז סיביות ממקום למקום מריץ תוכנית?
סצנה אינטראקטיבית

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

ההסבר שלמטה זמין כבר עכשיו, בזמן שהסצנה נטענת.

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

02 / הוראה אחת

שלוש פעימות לחיבור.

אותו שבב בכל אחת מהפעימות של ADD. רכיבים מוארים פועלים; חוטים מוארים נושאים ערך.

פעימה 1 מתוך 301
PCIRבקרהזיכרוןAALUB

הבאה

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

חוטים בשימוש
אפיק הכתובות ואפיק הנתונים
מה עובר
כתובת 2 יוצאת, ⁦0011 0000⁩ חוזר
מי שומר
אוגר ההוראה
אחר כך
אוגר ההוראה מחזיק ADD, ומונה התוכנית הוא 3
פעימה 2 מתוך 302
PCIRבקרהזיכרוןAALUB

פענוח

קוד הפעולה, ארבע הסיביות הראשונות של ההוראה, עובר ליחידת הבקרה, והיא מעלה את קווי הבקרה שהוראת ADD צריכה.

חוטים בשימוש
קווי קוד הפעולה אל יחידת הבקרה
מה עובר
קוד הפעולה 0011
מי שומר
אף אחד: הקווים נקבעים, שום דבר לא נשמר
אחר כך
הקווים פלט ALU וקלט A עולים
פעימה 3 מתוך 303
PCIRבקרהזיכרוןAALUB

ביצוע

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

חוטים בשימוש
הכניסות של ה־ALU ואפיק הנתונים
מה עובר
28 ו־14 נכנסים, 42 יוצא
מי שומר
אוגר A
אחר כך
אוגר A מחזיק 42
הרעיון הגדול

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

F → D → E

תוכנית היא מספרים בזיכרון

הזיכרון שמימין לשבב מחזיק שישה־עשר בתים. חמישה מהם הם התוכנית, ושלושה הם נתונים: שני מספרים לחיבור ותא ריק לתשובה. שום דבר לא מסמן מה הוא מה. הבית בכתובת 0 הוא 0001 1110. אם קוראים אותו כהוראה, פירושו טען לאוגר A את מה שבכתובת 14: ארבע הסיביות הראשונות, קוד הפעולה, אומרות מה לעשות, וארבע האחרונות אומרות איפה. אם קוראים אותו כמספר, הוא 30. התוויות על הזיכרון הן שלנו; השבב רואה תמיד רק סיביות.

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

הבאה, פענוח, ביצוע

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

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

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

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

נסו: לחצו על הבאה מתחת לפעימת שעון, וצפו בכתובת 2 יוצאת ובהוראת ה־ADD חוזרת. לחצו על פענוח ואז על ביצוע, ועקבו אחרי הסכום מה־ALU אל אוגר A.

חזרה לניסוי

אפיקים נושאים מספרים כמתחים

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

ה־ALU, היחידה האריתמטית-לוגית, היא הרכיב היחיד שמחשב. היא מחברת כל הזמן את מה שיש ב־A וב־B; יחידת הבקרה מחליטה אם התשובה שלה תגיע לאנשהו. שנו את המספר הראשון ואת המספר השני, והסיביות משתנות בכל נתיב. העלו את המספר השני עד 240: 28 + 240 הם 268, גדול מדי לשמונה סיביות, ולכן הסכום חוזר לספור מאפס ומגיע ל־12, ודגל הנשא נדלק. מהסיבית התשיעית הזאת בונה המחשב את המספרים הרחבים יותר שלו.

השעון שומר על כולם באותו קצב

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

עד לטרנזיסטורים

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

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

מה המודל הזה משאיר בחוץ

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

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

מותר לעשות בהם שימוש חוזר, עם קרדיט ל־ViewWiki וקישור לעמוד הזה.

04 / ללמוד את זה בקורס

תרגול, צעד אחר צעד.

5 השיעורים האלה מלמדים את הנושא עם שאלות שנבדקות, לפי סדר הקורס.

  1. מסכם מלא והמעבד מדעי המחשב · שערים לוגיים
  2. זיכרון וכתובות מדעי המחשב · איך מחשב מריץ תוכנית
  3. הבאה, פענוח, ביצוע מדעי המחשב · איך מחשב מריץ תוכנית
  4. אוגרים וה־ALU מדעי המחשב · איך מחשב מריץ תוכנית
  5. קפיצות, לולאות ומהירות שעון מדעי המחשב · איך מחשב מריץ תוכנית