English (United Kingdom) Hebrew

קורס:"מבוא לתכנות"

שיעור 1: מבנה המחשב

[ תוכן עניינים ] [ הבא >>> ]



מתוך הספר: C - מדריך מקצועי       C - מדריך מקצועי
תוכן עניינים


מערכת המחשב

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

העיבוד במחשב מבוצע ע"י תכניות הכתובות בשפה המובנת על ידו.

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

התוכנה במחשב כוללת את מערכת ההפעלה ותוכניות משתמש. מערכת ההפעלה היא תוכנה המנהלת את החומרה ומספקת ממשק לתפעול המחשב בכללותו. תוכניות המשתמש על סוגיהן מורצות מעל מערכת ההפעלה:

חומרת המחשב

המחשב כולל מספר יחידות חומרה:

  • מעבד
  • זיכרון ראשי
  • כונן קשיח (דיסק), כונן תקליטורים, כונני דיסקטים
  • מסך
  • מקלדת, עכבר
  • מודם
  • מדפסת
  תרשים פיזי של דוגמת מערכת מחשב:


תרשים לוגי:

כפי שניתן לראות בתרשים, המעבד מתקשר עם רכיבי החומרה באמצעות אפיק הכתובות (Address Bus) ואפיק הנתונים (Data Bus).

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

על מנת להפעיל את היחידות הנ"ל ולארגן אותן לפעול במשולב מכיל המחשב בנוסף:

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

מערכת ההפעלה

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

התרשים הלוגי הבא מתאר את מיקומה ותפקידה של מערכת ההפעלה במחשב:

מרכיבי מערכת ההפעלה

  • מערכת קבצים - מערכת המאפשרת שמירת מידע בכונן הקשיח כך שישמרו גם לאחר כיבוי המחשב.
  • תמיכה בחומרה - הגדרת מנהלי התקנים לרכיבי חומרה.
  • בקרת תכניות / תהליכים - ניהול ובקרת התוכנות הרצות במחשב, חלוקת משאבים ביניהן, הגנה על מרחבי הזיכרון שלהן.
  • ניהול זיכרון - טיפול בניהול הזיכרון במחשב ובהקצאת זיכרון ליישומים.
  • ממשק מערכת ההפעלה למשתמש - ממשק גרפי או טקסטואלי, תכניות שרות.
  • ממשק מערכת ההפעלה למתכנת (API = Application Programmer Interface).
  • מאפיינים נוספים: תמיכה ברשתות, תמיכה במערכות מרובות מעבדים.

מבנה המעבד (CPU)

המעבד הוא שם מקוצר ליחידת העיבוד המרכזית (CPU, Central Processing Unit) המפעילה ומנהלת את מכלול החומרה שבמחשב:

המעבד מורכב ממספר יחידות בסיסיות:

  • יחידה חשבונית-לוגית (ALU)
  • אוגרים כלליים
  • אוגר מצב (SR)
  • מצביע הפקודה (IP)
  • יחידת בקרה

כפי שצוין קודם, אפיק הכתובות (Address Bus) ואפיק הנתונים (Data Bus) ביחד עם קווי הבקרה הם הקשר של המעבד לעולם החיצון, כלומר, לרכיבי החומרה שבמערכת.

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

יחידה חשבונית-לוגית (ALU)

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

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

מעבדים מודרניים כוללים כיום תתי-יחידות המבצעות פעולות חשבוניות הן בשלמים והן בממשיים. לדוגמא, מסכם (Adder) היא תת-יחידה המבצעת חיבור של שני מספרים, ומכפל (Multiplier) היא תת-יחידה במעבד המבצעת כפל בין שני מספרים.

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

מבנה המסכם (Adder)

המסכם מקבל בשתי כניסותיו שני מספרים, מחשב את סכומם ומציב אותו באוגר תוצאה במוצא שלו:

               

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

  • חיסור:                למימוש Y - X מבצעים   X + (-Y).
  • כפל :                  למימוש X Y מבצעים Y + Y במסכם  X פעמים.

אוגרים (Registers)

אוגרים כלליים (General Purpose Registers)

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

כל אוגר מכיל מספר מסוים של סיביות שתלוי בסוג המחשב. לדוגמא, מערכת הכוללת 4 רגיסטרים -  A,B,C,D:

               

ערכה של כל אחת מסיביותיו של כל רגיסטר יכול להיות "0" או "1".

אוגר מצב (Status Register)

באוגר זה מוצב בכל רגע נתון מצב המעבד לאחר הפעולה החשבונית/לוגית האחרונה:

........

C

N

Z

SR

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

  • הסיבית (Zero) Z היא בעלת ערך 1 אם תוצאת המסכם בפעולה האחרונה שהתבצעה הייתה 0, אחרת ערך הסיבית 0.
  • הסיבית (Negative) N היא בעלת ערך 1 אם התוצאה הייתה שלילית, 0 אחרת.
  • הסיבית C (Carry) בעלת ערך 1 אם לתוצאת הפעולה האחרונה יש נשא (שארית).


דוגמא לתרגום קטע תוכנית במעבד:

if  X==Y

    ...

חישוב ביטוי לוגי

ביטוי לוגי הוא ביטוי שתוצאתו היא "אמת" (True) או "שקר" (False). דוגמאות:

    X < Y                   X קטן מ- Y
    X >= Y                X גדול או שווה ל- Y
    X == Y                X שווה ל- Y


שאלה: כיצד המעבד בודק האם X == Y?

1)  המעבד מבצע חיסור של Y מ- X : (אפשר גם להפך)

2)  המעבד בודק את סיבית Z שבאוגר המצב:

  - אם ערכה 1 אזי X שווה ל- Y וערך הביטוי "אמת".
  - אחרת  ערך הביטוי "שקר", כלומר X > Y או X < Y.


בדומה, הבדיקה האם X > Y מבוצעת כך:

1)  המעבד מבצע חיסור של Y מ- X :

2)  המעבד בודק את סיביות Z ו- N שבאוגר המצב:

  - אם  ערכי שתי הסיביות 0 אזי X גדול מ- Y וערך הביטוי "אמת".
  - אחרת  ערך הביטוי "שקר", כלומר X==Y או X < Y.


תרגיל: כיצד יבדוק המעבד את ערכו של הביטוי  הבוליאני  X >= Y ?

מבנה הוראת מכונה

תכניות מתורגמות ע"י המהדר לשפת מכונה. שפת מכונה מורכבת מסדרת הוראות מכונה המבוצעות בזו אחר זו לפי הסדר המוכתב ע"י התוכנית.

בדוגמאות הבאות נניח שנתון מעבד עם שפת מכונה שבה הוראות בעלות שלושה מרכיבים :

  • 1. קוד הפעולה (opcode) - מספר המציין למעבד מהי הפעולה. (במעבד ניתן קוד לכל פעולה).
  • 2. נתון 1  - האופרנד השמאלי של הפעולה, שבו גם מוצבת תוצאת הפעולה. לכן נתון זה יכול להיות אוגר או תא זיכרון, אך לא מספר.
  • 3. נתון 2  - האופרנד הימני של הפעולה. יכול להיות אוגר, תא זכרון או מספר.

דוגמאות

1. נניח שפעולת החיבור בעלת קוד 5, ונניח שאנו רוצים להוסיף לתוכן אוגר B את הערך 3: B¬B+3. ההוראה בשפת מכונה :

3

B

5

2. נניח שקוד פעולת החיסור הוא 8.  לביצוע 6 - A תבוצע הוראת המכונה:

6

A

8

3. נניח שפעולת ההעתקה/הצבה בעלת קוד 6. אנו רוצים לבצע את הפעולה C¬A

A

C

6

4. נדרש לבצע 2 פקודות:

הוספת 21 לתוכן אוגר A : A¬A + 21.

העתקת תוכן אוגר A לאוגר C : C¬A.

ההוראות:

21

A

5

1.

A

C

6

2.

תרגול

קרא/י סעיף זה בספר “C מדריך מקצועי” ובצע/י את תר' 1-3 שבעמ 9.

אוגר מצביע ההוראות (Instruction Pointer)  

אוגר מצביע ההוראות מציין מהי ההוראה הבאה בתור לביצוע.

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

לדוגמא, נניח שגודל כל הוראה בזיכרון הוא 12 בתים (כלומר 4 בתים לאופקוד, ו- 4 בתים לכל אופרנד).  הוראות שפת המכונה בזיכרון יכולות להיראות כך:

אופרנדים

opcode

ערך מצביע ההוראה (IP)

A , 8

5

1000

A , B

6

1012

D , 2

8

1024

D , C

5

1036

:

:

ה- IP הוא הערך שבעמודה השמאלית, והוא מכיל את כתובות ההוראות בזיכרון. באמצעות ה-IP מיישמים דילוג (jump) לכתובת לא עוקבת.

יחידת הבקרה (Control Unit)

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

               

ביחידת הבקרה נמצא המפענח - אחראי לתרגום פקודת המכונה לרצף של אותות בקרה ליחידות המתאימות במעבד, המחוללים את ביצוע הפקודה בפועל.

הזיכרון (Memory)

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

לכל תא בזיכרון יש כתובת (Address) ודרכה טוענים אותו למעבד.

על מנת לטעון נתון מהזיכרון, המעבד כותב באפיק הכתובות (Address Bus) את כתובתו, וכתוצאה מכך הנתון נטען לאפיק הנתונים (Data Bus):

בדוגמא שבתרשים, ההנחה היא שכל מרכיב בהוראה - קוד ההוראה, הנתון הראשון והנתון השני - הם כל אחד בגודל 4 בתים. לכן כל הוראה תופסת 12 בתים בזיכרון.

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

המעבד אז קורא את ההוראה מאפיק הנתונים ומבצע אותה.

לדוגמא, נניח שהמעבד סיים לבצע את ההוראה שבכתובת 1012:

B

A

6

בכדי לבצע את ההוראה הבאה, נדרשות 3 טעינות של נתונים מהזיכרון:

הכתובת שמעביר המעבד באפיק הכתובות

הנתון המוחזר מהזיכרון על אפיק הנתונים

1.

1024

8

2.

1028

D

3.

1032

2

ולאחר טעינת כל שלושת מרכיבי ההוראה, המעבד מוכן לבצעה:

2

D

8

מבנה התכנית בזיכרון

קטע הנתונים (Data Segment) וקטע קוד התוכנית  (Code Segment)

תוכניות מחשב מחולקות לשני קטעים עיקריים: קטע הנתונים וקטע קוד התכנית.

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

דוגמא לתכנית:

התכנית כוללת שני משתנים בקטע הנתונים, var1 ו- var2 - אלו הם שני שמות שניתנו ע"י כותב/ת התכנית. הם מייצגים תאים בזיכרון שניתן לכתוב אליהם ולקרוא את ערכם.

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

לדוגמא, בביצוע ההוראה המתחילה מכתובת 1024, המעבד מבצע פעולת החסרה של var1 מ- var2 ומציב את התוצאה ב- var2:

var1

var2

8

לצורך ביצוע הוראה זו, על המעבד ראשית להביא את ערכם של המשתנים var1 ו- var2 מקטע הנתונים שבזיכרון, לבצע את החישוב ולאחר מכן לעדכן את ערכו של var2 ע"י כתיבתו לזיכרון.

סדרת הפעולות הנדרשת היא לכן:

הכתובת שמעביר המעבד באפיק הכתובות

הנתון המועבר על אפיק הנתונים

כתיבה או קריאה של הנתון?

1.

1024

8

קריאה

2.

1028

var2 (744)

קריאה

3.

744

47

קריאה

4.

1032

var1 (740)

קריאה

5.

740

12

קריאה

6.

744

35

כתיבה

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

מכיוון שכך, המעבד מעביר הוראת קריאה נוספת של הנתון עצמו היושב בכתובת 744, הערך 47.

באופן דומה נקרא ערכו של המשתנה var1 מכתובת 740. לאחר השלמת קריאת ערכי האופרנדים של ההוראה, היא מבוצעת: var2¬ var2 - var1, כלומר, var2 מקבל את הערך 35.

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

רכיבי קלט פלט

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

אלו רק שתי דוגמאות להתקני קלט/פלט: מרכיבים שכיחים נוספים הם כונן קשיח, כונן דיסקטים, כונן תקליטורים, מודם:

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

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

באופן דומה, אם כתובת המסך היא 5057, המעבד ידפיס נתון למסך ע"י הצבת הנתון על אפיק הנתונים והצבת הכתובת 5057 על אפיק הכתובות.

תכנית הדוגמא הבאה קוראת מהמקלדת (כתובת 5056) ע"י הוראת קליטה (קוד 30) לרגיסטר A, לאחר מכן מכפילה אותו ב- 2 ע"י הוראת חיבור עצמי (קוד 5), ולבסוף מדפיסה אותו למסך ע"י הוראת הדפסה (קוד 31):

אופרנד 2

אופרנד 1

קוד הוראה

A

keyboard (5056)

30

A

A

5

A

screen (5057)

31

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

המבנה הכולל של המעבד, הזיכרון והתקני הקלט/פלט

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

תרגול

קרא/י סעיף זה בספר “C מדריך מקצועי” ובצע/י את תר' 1-2 שבעמ' 14.

שפת אסמבלר

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

לדוגמא, שפת אסמבלר מתאימה לדוגמאות שלעיל, תספק שמות לפקודות:

שם הפקודה

קוד

משמעות

add

5

חיבור

sub

8

חיסור

move

6

הצבה

in

30

קלט

out

31

פלט

כמו כן, ניתנים שמות להתקני הקלט פלט: לדוגמא, התקן המקלדת ייקרא keyboard והתקן המסך screen. תכנית אסמבלר לדוגמא תראה כך:

_DATA

data1 = 13

data2 = 6

_CODE

add                data2, data1

move            A, data2

in                   keyboard, B

sub                A, B

out                 screen, A

הסבר: בתכנית האסמבלר מוגדרים שני קטעי התכנית - תחילת קטע הנתונים מצוינת ע"י _DATA ותחילת קטע קוד התכנית ע"י _CODE.

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

קרא/י סעיף זה בספר “C מדריך מקצועי” ובצע/י את התרגיל שבעמ' 15.



[ תוכן עניינים ] [ הבא >>> ]