דרך פעולתו של המעבד
לא נוכל להסביר בדיוק מה קורה בדיוק בתוך כל אחד מחלקי המעבד, מה שמעניין אותנו היא העובדה שלכל אחד מהם יש כניסת קלט(אחת או יותר) ויציאת פלט(אחת או יותר), את כל העבודה על התהליך בתוך הרכיב שמרתי למהנדסים שתיכננו אותו כי זה קצת מסובך(בכל זאת יש שם מיליונים רבים של שערים). בכל אופן העקרון מובן וזה מה שחשוב להמשך.
בסך הכל מהמצאת המיקרו מעבד הראשון, אופן הפעולה של המעבד לא השתנה הרבה: המהירויות גדלות, נפחי האיכסון גדלים ונוספים מאפיינים חדשים, אבל העקרון נשאר בדיוק אותו דבר.
תפקידו של המיקרו מעבד הוא להריץ אוסף פקודות מכונה הכתובות באסמבלר(Assembler) שאומרות לו מה לעשות. בהתבסס על פקודות אלו המעבד עושה שלושה דברים עיקריים:
1 – בעזרת ה-ALU(Arithmetic/Logic Unit) שלו, מעבד יכול לבצע חישובים מתמטיים כמו חיבור, חיסור, כפל וחילוק. המעבדים בימינו כוללים יחידות עיבוד מתקדמות שמסוגלות לבצע חישובים מורכבים על מספרי נקודה צפה עצומים.
2 – מעבד יכול לכתוב, לקרוא ולהזיז מידע ממקום למקום בזיכרון.
3 – מעבד יכול "להחליט" החלטות ולקפוץ לסט פקודות חדש המבוסס על ההחלטות הללו.
מעבדים היום עושים עוד הרבה דברים מתוחכמים, אבל אילו שלושת הפעולות הבסיסיות שכל מעבד ישן כחדש חייב לעשות.
מסע אל ליבת המעבד
על מנת שנבין איך מעבד עובד, חשוב להבין את הלוגיקה שעומדת מאחורי דרך פעולתו.
המעבד מתפקד כ"מוח" החושב של המחשב כולו ונושא את החלק הארי של נטל העבודה.
מתוקף תפקידו המעבד הופך בעצם ל"תחנת רכבת" שהמידע עובר דרכה כל הזמן, המידע מגיע בצורת פקודות למעבד מהזיכרון, המקלדת, הכוננים ושאר התקני הקלט. אחרי שהוא מחשב את המידע המעבד שולח את המידע חזרה לזכרון וההתקנים השונים.
המעבד באופן מתמיד מקבל פקודות לביצוע, כל אחת מהפקודות הללו כוללת שלב ביצוע אחד (מעבדים היום מבצעים מיליארדי פקודות כאלו בשניה), העבודה עצמה מורכבת בעיקר מחישובים מתמטיים ותעבורת מידע.
לפניכם הצורה הפשוטה ביותר שבה בנוי מעבד, נעבור על השלבים אחד אחד וננסה להבין איך פקודת מכונה הכתובה באסמבלר(השפה הטבעית של המעבד) יוצאת מהכורך אל הפועל.
ראשית כל בואו נבאר פה כמה מושגים:
Address Bus – תפקידו לשלוח כתובות לזיכרון (התקשורת יכולה להתבצע ברוחב פס של:8, 16 או 32Bit נכון להיום).
Data Bus – שעל אופן פעולתו למדנו בדוגמה על הנהר. מורכב משני חלקים ששולחים ומקבלים מידע ממקטעי זיכרון על פי הכתובות הנשלחות מה-Address Bus (גם תקשורת זו יכולה להתבצע ברוחב פס של:8, 16 או 32Bit).
RD(Read line)/WR(Write line) – מתזמנים את הקריאה והכתיבה לזיכרון.
Clock Line – "המטרונום" של המעבד. מכאן נכנס פולס חשמלי שמתחיל את התהליך, כל פעם מחדש, מיליוני פעמים בשניה.
Reset Line – מחזיר לאפס את מונה התוכנות (Program Counter) לפני כל מחזור חדש של פעילות המעבד.
בואו ננסה להבין את חלקי המעבד הפשוט הזה:
נניח שהמעבד המתמטי בדוגמה יכול לבצע פעולות מתמטיות כמו: חיבור, חיסור, כפל וחילוק על מספרים בגודל 32Bit (בדיוק כמו במעבדים היום). כמו כן בעזרת ה-Test Register הוא יכול להשוות בין שני מספרים.
ה-Test Register מחזיק ערכים להשוואה עבור ה-ALU, בתוך ה-ALU מתבצעות השוואות בין מספרים, אם מספר אחד גדול מהשני הוא נשמר ב-Test עבור ה-Instruction Decoder כדי שיחליט מה לעשות הלאה.
Register A, B and C הם בעצם "מאכסנים" זמניים של המידע שמופעלים על ידי פקודה.
בדיוק כמו הרג'יסרים רק שה-Address Latch לוקח חלק בהרכבת כתובות הזכרון.
גם כן מאכסן זמני שיכול להעלות ערך מתי שאומרים לו וגם להתאפס על פי פקודה מה-Reset Line.
ה-3-State Buffer יכול להעביר דרכו 0, 1 ואפילו לנתק לגמרי את יציאות הפלט שלו, משתמשים בו כדי לחבר כמה חוטים ביחד לפלט אחד וה-3-State "יודע" לאיזה מהם להעביר את הביטים. שמים 3-state בכל מקום שבו מגיעים מספר רב של גשרים כמו ב-Data Bus. בשל העובדה שהוא "מכיר" שלושה מצבים(0, 1 וניתוק), הוא קיבל את שמו המיוחד.
בעזרת ה-Instruction Register כל הרכיבים האחרים מקבלים פקודות לביצוע, הצמד "מנצח" ביחד על כל התזמורת.
ה-Instruction Decoder יכול לחלק פקודות לכל הרכיבים האחרים:
1- לפקוד על Register A, B, C לאכסן ערך שמגיע כרגע מה-Data Bus.
2- לפקוד על ה-Program Counter לאכסן ערך שמגיע כרגע מה-Data Bus.
3- לפקוד על ה-Address Register לאכסן ערך שמגיע כרגע מה-Data Bus.
4- לפקוד על ה- Instruction Registerלאכסן ערך שמגיע כרגע מה-Data Bus.
5- לפקוד על ה- Program Counterלהגדיל את הערך המאוכסן בו ב-1.
6- לפקוד על ה-Program Counter לאפס את הערך המאוכסן בו, כלומר 0.
7- להפעיל כל אחד מהפלטים של כל אחד מה-3-States.
8- לפקוד על ה-Test Register לאכסן ערך מה-ALU.
9- להגיד ל-ALU איזו פעולה מתמטית לבצע על ערכים בכל אחד מהמאכסנים הזמניים.
10- לתזמן את הכתיבה לזיכרון דרך ה-Write Line.
11- לתזמן את הקריאה מהזיכרון דרך ה-Read Line.
אדיר כל הכבוד
תודה על ההשקעה למרות שעברו כמעט 10 שנים מהכתיבה עד לתגובה הראשונה
מדהים, סוף סוף הבנתי
מדהים, סוף סוף הבנתי
יניב שיחקת אותה
אני הולך לעבור עכשיו על כל החומר הזה.
טוב שיש אנשים כמוך
יפה
פשוט ומובן.
מעניין מאוד!!!
כל הכבוד על ההשקעה!
הסבר נהדר אבל אני צריך עזרה
אני מעוניין ליצור מיתוג עם טרנזיסטור,
יש לי מתח DC של 12 וולט ואני מעוניין למשל להפעיל לד, אשמח אם מישהו יוכל להסביר לי או לשלוח לי שרטוט מפורט במייל: [email protected]