מצגת של PowerPoint

Download Report

Transcript מצגת של PowerPoint

‫מבוא למערכות מחשב ואסמבלי‬
‫מצגת ‪1‬‬
‫תכנית הלימודים ופרק המבוא‬
‫מטח אוגוסט ‪2005‬‬
‫‪1‬‬
‫תכנית הלימודים‬
‫• נושא זה עוסק בעקרונות פיתוח תוכניות בשפת סף‪ ,‬ובהכרת‬
‫הקשר בין המבנה (ארכיטקטורה) של המעבד של המחשב‬
‫האישי לתוכנה‪.‬‬
‫• המטרות העיקריות של המקצוע הם‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫להקנות לתלמיד היכרות עם הארכיטקטורה של המחשב האישי –‬
‫הכרת היחידות הבסיסיות במיקרומחשב והקשר ביניהם‪.‬‬
‫לאפשר היכרות והתנסות בפיתוח תוכניות בשפת סף‪.‬‬
‫להבין כיצד מתבצעת תוכנית בשפת סף במחשב‪.‬‬
‫להכיר את ההתפתחויות שחלו במחשבים מודרניים שנועדו לשפר‬
‫את זמן הריצה של תוכנות מחשב‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪2‬‬
‫ספר הלימוד‪:‬‬
‫פרק ‪1‬‬
‫‪1.1‬‬
‫‪1.2‬‬
‫‪1.3‬‬
‫‪1.4‬‬
‫פרק ‪2‬‬
‫‪2.1‬‬
‫‪2.2‬‬
‫‪2.3‬‬
‫‪2.4‬‬
‫‪2.5‬‬
‫‪2.6‬‬
‫המחשב הדיגיטלי‬
‫מבוא‬
‫מודל מופשט של מחשב‬
‫מבנה מחשב פשוט ואופן ביצוע ההוראות בשפת מכונה‬
‫הקשר בין יחידות המחשב‬
‫ייצוג מידע במחשב‬
‫מבוא‬
‫ייצוג מספרים שלמים‬
‫ייצוג מספרים ממשיים‬
‫ייצוג טקסט‬
‫ייצוג תמונה‬
‫יחידות זיכרון לאחסון מידע במחשב‬
‫מטח אוגוסט ‪2005‬‬
‫‪3‬‬
‫ספר הלימוד (המשך)‪:‬‬
‫פרק ‪3‬‬
‫‪3.1‬‬
‫‪3.2‬‬
‫‪3.3‬‬
‫‪3.4‬‬
‫פעולות אריתמטיות על ייצוג בינארי במחשב‬
‫חיבור וחיסור מספרים בינאריים בלתי מכוונים‬
‫שיטות לייצוג מספרים בינאריים מכוונים‬
‫חיבור וחיסור מספרים בינאריים שלמים מכוונים‬
‫תחום הייצוג של מספרים בינאריים שלמים מכוונים ובלתי מכוונים‬
‫פרק ‪ 4‬שפת אסמבלי והמודל התכנותי של מעבד ‪8086‬‬
‫‪ 4.1‬מבוא‬
‫‪ 4.2‬המודל התכנותי של ה‪8086-‬‬
‫‪ 4.3‬ארגון הזיכרון במעבד ‪8086‬‬
‫‪ 4.4‬כתיבת תכנית בשפת אסמבלי‬
‫‪ 4.5‬הגדרת משתנים בשפת אסמבלי‬
‫נספח – תיאור תהליך הרצת התכנית‬
‫מטח אוגוסט ‪2005‬‬
‫‪4‬‬
‫ספר הלימוד (המשך)‪:‬‬
‫פרק ‪ 5‬תכנות בסיסי בשפת אסמבלי‬
‫מבוא‬
‫‪5.1‬‬
‫הוראות להעברת נתונים‬
‫‪5.2‬‬
‫הוראות אריתמטיות – חיבור וחיסור‬
‫‪5.3‬‬
‫הוראות בקרה‬
‫‪5.4‬‬
‫הוראות כפל וחילוק‬
‫‪5.5‬‬
‫הוראות לוגיות‬
‫‪5.6‬‬
‫הוראות הזזה וסיבוב‬
‫‪5.7‬‬
‫פרק ‪ 6‬שיטות מיעון‪ ,‬מערכים ורשומות‬
‫הצהרה על מערכים ורשומות‬
‫‪6.1‬‬
‫שיטות מיעון‬
‫‪6.2‬‬
‫מיעון מיידי ‪Immediate addressing‬‬
‫‪6.3‬‬
‫מיעון אוגר ‪Register addressing‬‬
‫‪6.4‬‬
‫מיעון ישיר ‪Direct addressing mode‬‬
‫‪6.5‬‬
‫מיעון עקיף בעזרת אוגר ‪Indirect Addressing Register‬‬
‫‪6.6‬‬
‫מיעון אינדקס )‪(Direct Indexed Mode‬‬
‫‪6.7‬‬
‫מיעון בסיס‪Base Relative Addressing‬‬
‫‪6.8‬‬
‫מיעון אינדקס‪-‬בסיס ‪Based Indexed Addressing Modes‬‬
‫‪6.9‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪5‬‬
‫ספר הלימוד (המשך)‪:‬‬
‫פרק ‪7‬‬
‫‪7.1‬‬
‫‪7.2‬‬
‫‪7.3‬‬
‫‪7.4‬‬
‫‪7.5‬‬
‫‪7.6‬‬
‫‪7.7‬‬
‫‪7.8‬‬
‫‪7.9‬‬
‫מחסנית‪ ,‬שגרות ומקרו‬
‫מבוא‬
‫כתיבת פרוצדורה וזימונה‬
‫המחסנית ומצביע המחסנית‬
‫העברת פרמטרים‬
‫מימוש משתנים מקומיים‬
‫העברת מערך כפרמטר לפרוצדורה‬
‫מימוש פונקציות‬
‫פונקציה רקורסיבית‬
‫מקרו‬
‫מטח אוגוסט ‪2005‬‬
‫‪6‬‬
‫ספר הלימוד (המשך)‪:‬‬
‫פרק ‪8‬‬
‫‪8.1‬‬
‫‪8.2‬‬
‫‪8.3‬‬
‫‪8.4‬‬
‫‪8.5‬‬
‫‪8.6‬‬
‫‪8.7‬‬
‫‪8.8‬‬
‫‪8.9‬‬
‫עיבוד מחרוזות ובלוקים של נתונים‬
‫הגדרת מחרוזות בשפת אסמבלי‬
‫מבנה של הוראות מחרוזת‬
‫העתקת מחרוזות – ההוראה ‪MOVS‬‬
‫חזרה על פעולת ההעתקה‬
‫כתיבת תווים במחרוזת – ההוראה ‪(Store a String) STOS‬‬
‫קריאת תו ממחרוזת – ההוראה ‪(Load a String) LODS‬‬
‫השוואת מחרוזות ההוראה ‪(CoMPare String) CMPS‬‬
‫חיפוש תו במחרוזת הוראה ‪(SCAn String) SCAS‬‬
‫טבלאות תרגום וההוראה ‪XLAT‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪7‬‬
‫ספר הלימוד (המשך)‪:‬‬
‫פרק ‪ 9‬פסיקות וקלט‪-‬פלט‬
‫‪ 9.1‬מבוא‬
‫‪ 9.2‬שימוש בשגרת השירות של ‪DOS‬‬
‫‪ 9.3‬מנגנון ביצוע פסיקות במעבד ‪8086‬‬
‫‪ 9.4‬קריאה ושינוי של פסיקה‬
‫‪ 9.5‬הוראות ‪ IN‬ו‪OUT -‬‬
‫פרק ‪ 10‬ארכיטקטורה של מעבדים מתקדמים‬
‫‪ 10.1‬ההשפעה של ההתפתחות הטכנולוגית על מבנה מעבדים מתקדמים‬
‫‪ 10.2‬מבנה האוגרים במעבדים מתקדמים‬
‫‪ 10.3‬ארכיטקטורת "צינור הוראות" )‪(pipelining‬‬
‫‪ 10.4‬ארגון זיכרון‬
‫מטח אוגוסט ‪2005‬‬
‫‪8‬‬
‫פדגוגיה‬
‫• בעיות‪:‬‬
‫– מושגים רבים חדשים‬
‫– שילוב מהיר של התנסות‬
‫– סדר הלימוד‪:‬הצגת חומרה קודם?‬
‫• הצעות‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫מבט‪-‬על מופשט והעמקה בצורה ספירילית‬
‫להציג פרק ‪( 3‬עיבוד על ייצוג בינארי יחד עם פרק ‪)5‬‬
‫שימוש בסימולטור‬
‫קישור לידע קיים במדעי המחשב‬
‫התייחסות לתפישות של תלמידים על המחשב ואופן השימוש בו‬
‫מטח אוגוסט ‪2005‬‬
‫‪9‬‬
‫ספרות‬
‫ הוצאת בי"ס לטכנולוגיה של או"פ‬8086/88 ‫• שפת סף‬
‫• ארגון המחשב ותכנותו – הוצאת או"פ‬
‫ תרגום‬,‫ ג'ון אופנבק‬,8086/88 ‫• משפחת המיקרופרוססרים‬
‫לעברית של או"פ‬
• Computer Organization and Assembly Language
Programming, Thorne M.
• The 80x86 Family, Design, Programming and
Interfacing, Uffenbeck J.
• Structured Computer Organization, by Andrew
Tanenbaum
10
2005 ‫מטח אוגוסט‬
‫פרק ראשון מבוא‬
‫• מטרות‬
‫– הצגת מבט‪-‬על של מחשב ואופן ביצוע תכנית‬
‫– הצגת הסיבות ללימוד המקצוע‬
‫– הכרת המושגים הבאים‪ :‬תכנה‪ ,‬חומרה‪ ,‬ארכיטקטורה‪ ,‬ארגון‪,‬‬
‫מהדר‪/‬מפרש‪ ,‬שפות נמוכות ושפות עיליות‪ ,‬ארכיטקטורת פון‬
‫ניומן‬
‫• תכנים‪:‬‬
‫– ארכיקטורה וארגון של מחשב‬
‫– מחזור הבאה‪-‬ביצוע של הוראות ומבנה מחשב פשוט‬
‫– היסטוריה‪ :‬התפתחות של מחשבים‬
‫מטח אוגוסט ‪2005‬‬
‫‪11‬‬
‫המחשב הדיגיטאלי‬
‫מחשב‬
‫• המחשב דיגיטאלי הוא מכונה המורכבת מרכיבים רבים‬
‫ובאמצעותו‪ ,‬ניתן לפתור בעיות שונות שפתרונן מוגדר‬
‫כתכנה‪.‬‬
‫• חומרה (‪ :)hardware‬אוסף הרכיבים של המחשב החל‬
‫מהתקנים היקפיים(חיצוניים) כמו מקלדת‪ ,‬עכבר‪ ... ,‬וכלה‬
‫ברכיבים הפנימיים כמו מעבד‪ ,‬זיכרון ועוד‪.‬‬
‫– מורכב מאלפי מעגלים אלקטרוניים ורכיבים מכאניים‬
‫מטח אוגוסט ‪2005‬‬
‫‪12‬‬
‫המחשב הדיגיטאלי‬
‫• התכנה (‪ :)software‬הוא מונח המתייחס לאוסף של‬
‫תכניות מחשב המורכבות מהוראות ונתונים‪.‬‬
‫– סוגי תכנה‪:‬‬
‫• אוסף תכניות שמספקות פונקציות שרות כלליות למשתמש‬
‫במחשב‪ ,‬כגון מערכת הפעלה‪ ,‬מהדרים‪... ,‬‬
‫• יישומים מסוגים שונים ‪ -‬נועדו לביצוע משימות מוגדרות‪,‬‬
‫כגון‪ :‬מעבד תמלילים‪ ,‬תכנה לניהול ספרית וידאו‪ ,‬משחק‬
‫מחשב וכדומה‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪13‬‬
‫חמרה ותכנה‬
‫מחשב‬
‫• הפרדה בין חמרה ותכנה‬
‫– הפרדה מאפשרת להתייחס למחשב כאל מכונה למטרות‬
‫כלליות‪ ,‬בו ניתן להריץ מגוון של יישומים שונים על אותה‬
‫החמרה‪ ,‬לדוגמה‪:‬‬
‫• ממעבדי תמלילים‪ ,‬גיליונות אלקטרוניים‪ ,‬מוזיקה‪ ,‬מולטימדיה יישומי‬
‫תקשורת ועוד‪.‬‬
‫• התלות הדדית‪:‬‬
‫– התכנה מגדירה מה המחשב צריך לבצע או את אופן הפעולה‬
‫של החמרה‪ ,‬ומכאן התכנה שולטת בחמרה‪.‬‬
‫– החמרה מגדירה איזה סוג תכנה תוכל לפעול עליה‪ ,‬במלים‬
‫אחרות‪ ,‬אלו הוראות ניתן יהיה לכתוב ואיך תפעל התכנית‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪14‬‬
‫היבטים שונים‬
‫רכיבים‬
‫אלקטרוניים‬
‫טכנולוגיה‬
‫יישומים‬
‫ממשק משתמש‬
‫‪GUI‬‬
‫משתמש‬
‫מחשב‬
‫מהנדס‪/‬ארכיטקט‬
‫מתכנת‬
‫שפות תכנות‬
‫מהדרים‬
‫מטח אוגוסט ‪2005‬‬
‫‪15‬‬
‫שפת המחשב‬
‫שפות נמוכות ‪Low level language‬‬
‫• שפת מכונה )‪(Machine Language‬‬
‫– בשפה בינארית הוראה אוסף ‪ 0‬ו‪1 -‬‬
‫• שפה אסמבלי או שפת סף (‪)Assembly language‬‬
‫– בשפת סף במקום מספרים בינאריים יש קודים מנמוניים‬
‫(‪. )Mnemonic codes‬‬
‫– קוד מנמוני נכתב באותיות לטיניות‪ ,‬והוא מורכב ממילה או‬
‫מקיצור של מילה המייצגת פעולה שיש לבצע‪.‬‬
‫– לדוגמה‪ADD, CMP (CoMPare) :‬‬
‫– לכל הוראה בשפת סף יש הוראה בשפת מכונה‬
‫חסרון – תלות בחומרה ‪ ,‬חוסר ניידות‬
‫מטח אוגוסט ‪2005‬‬
‫‪16‬‬
‫שפת המחשב‬
‫שפות עיליות ‪High level language‬‬
‫איך מתכנת "מתקשר" עם המחשב?‬
‫• שפות עיליות הן מופשטות‬
‫– הוראות בהן דומות לשפה טבעית והן מגדירות פעולות‬
‫בצורה לוגית בלי להתייחס לחמרת המחשב‪.‬‬
‫• לדוגמה‪ ,‬כדי לכתוב הוראת קלט אנו משתמשים במילה‬
‫המציינת פעולת הקריאה (‪ )read‬ורשימה של משתנים בהם‬
‫יאחסנו נתונים‬
‫• אנו לא מתייחסים כלל למקלדת‪ ,‬למבנה‪ ,‬לאופן הפעולה‬
‫והקישור למחשב‬
‫יתרון ‪ -‬אין תלות בחומרה ‪ ,‬ניידות‬
‫מטח אוגוסט ‪2005‬‬
‫‪17‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪18‬‬
‫תיווך בין שפת המכונה לשפה עילית‬
‫קובץ ‪exe‬‬
‫•תרגום משפה עילית לשפת מכונה‪ :‬הידור או פירוש‬
‫•לכל סוג מחשב מהדר או מפרש מתאים‬
‫•להעביר תכנית ממחשב למחשב עם חמרה שונה ‪ -‬מהדרים שוב‬
‫מטח אוגוסט ‪2005‬‬
‫‪19‬‬
‫תפישה* חדשה ב ‪JAVA -‬‬
‫* לא בקורס‬
‫מטח אוגוסט ‪2005‬‬
‫‪20‬‬
‫מודל מכונה וירטואלית‬
‫הנחות‪:‬‬
‫• תיאור מופשט (אבסטרקטי) מאפשר להבין את‬
‫המבנה ועקרונות של הפעולה של המחשב מבלי‬
‫לרדת לפרטים של אופן המימוש‬
‫• רמות הפשטה‪:‬‬
‫– תכנית נכתבת למכונה וירטואלית בשפה ‪L1‬‬
‫– יש אפשרות לתרגם לתכנית בשפה ‪L0‬‬
‫– ‪ L0‬מתבצעת על מכונה ‪M‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪21‬‬
‫תכנה‬
‫חמרה‬
‫מטח אוגוסט ‪2005‬‬
‫‪22‬‬
‫מודל השכבות‬
‫• רמה ‪: 0‬‬
‫– שערים לוגיים ופעולות לוגיות‬
‫– מימוש רכיבים כמו אוגרים‪ ,‬מונים‪ ,‬מסכמים‬
‫– מבוסס על רכיבים אלקטרוניים‬
‫• רמה ‪ :1‬ארכיטקטורה של ארגון של המכונה‬
‫( ‪)HAS -hardware system architecture‬‬
‫– מתאר באופן עקרוני כיצד המחשב פועל כדי לבצע את‬
‫הוראות המכונה‪.‬‬
‫– מהן היחידות העיקריות במחשב ומה הקשר ביניהם‪,‬‬
‫איזה מידע זורם בין היחידות השונות‬
‫מטח אוגוסט ‪2005‬‬
‫‪23‬‬
‫מודל השכבות‬
‫• רמה ‪ :2‬ארכיטקטורה של אוסף הוראות המכונה‬
‫(‪ - Instruction Set Architecture‬ובקיצור ‪)ISA‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫מהן הפעולות שמחשב מסוגל לבצע‪ ,‬למשל‪:‬‬
‫האם כפל היא אחת מפעולות של המחשב או שלביצוע‬
‫הכפל עלינו להשתמש בפעולות חיבור בלבד‬
‫מבנה של הוראה‬
‫סוגי נתונים בהם המחשב מטפל ואופן הגישה אליהם‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪24‬‬
‫מודל השכבות‬
‫• רמה ‪ – 3‬מערכת הפעלה )‪(operating system‬‬
‫– מערכת הפעלה היא תכנה המתווכת בין משתמש מחשב‬
‫(משתמש ביישום או מתכנת) לבין החמרה ומטפלת בהקצאת‬
‫משאבי המחשב ובביצוע פעולות הדרושות להרצת תכנית‪.‬‬
‫– מערכת הפעלה מרחיבה את ‪ ISA‬ומספקת שירותים נוספים‬
‫• לדוגמה‪ ,‬מערכת הפעלה מטפלת בהרצה של תכניות מספר תכניות‬
‫במקביל‬
‫• מערכת הפעלה מספקת שירותים שונים וביניהם טיפול בקבצים‬
‫השמורים על זיכרונות חיצוניים‪ ,‬דיסק קשיח למשל‪ ,‬ובאחזורם‪.‬‬
‫• רמה ‪ – 4‬שפת אסמבלי (מתורגמת לשפת מכונה)‬
‫• רמה ‪ – 5‬שפה עילית (מתורגמת לשפת מכונה)‬
‫בקורס זה אנו מתייחסים בהרחבה לרמות ‪ 1,2‬ו‪4 -‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪25‬‬
‫ארכיטקטורה וארגון המחשב‬
‫ארכיטקטורה (‪:)Architecture‬‬
‫מאפיינים של מחשב מנקודת מבט של מתכנת‪:‬‬
‫פעולות שמחשב מסוגל לבצע‪ ,‬למשל‪ ,‬האם כפל היא אחת‬
‫מפעולות של המחשב או שלביצוע הכפל עלינו להשתמש‬
‫בפעולות חיבור בלבד;‬
‫מבנה של הוראה;‬
‫סוגי נתונים בהם המחשב מטפל ואופן הגישה אליהם‪.‬‬
‫מתייחס לשאלה “מה” המחשב יודע לעשות?‬
‫רמה ‪ – ISA 2‬אוסף הוראות המכונה‪ ,‬רמה ‪HSA - 1‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪26‬‬
‫ארכיטקטורה וארגון המחשב‬
‫ארגון (‪:)Organization‬‬
‫מנקודת מבט של ארכיטקט‪/‬מהנדס‪ ,‬מתאר באופן עקרוני כיצד‬
‫המחשב פועל כדי לבצע את הוראות‪:‬‬
‫• באילו רכיבי חומרה אנו משתמשים בהוראה‪,‬‬
‫• מהן היחידות העיקריות במחשב ומה הקשר ביניהם‪,‬‬
‫• איזה מידע זורם בין היחידות השונות‪.‬‬
‫• הגדרה לוגית של המעגלים הדרושים לביצוע הוראות המכונה‪,‬‬
‫למשל האם פעולת כפל תמומש בעזרת חומרה (מעגל אלקטרוני) או‬
‫בתכנה על ידי סדרה של פעולות חיבור‪.‬‬
‫רמה ‪ ,HSA 1‬רמה ‪ 0‬המכונה הדיגטאלית‬
‫מטח אוגוסט ‪2005‬‬
‫‪27‬‬
‫ארכיטקטורה וארגון המחשב‬
‫• במחשבים אישיים נשמר עקרון תאימות )‪:(Compatibility‬‬
‫תכניות שנכתבו למחשבים ישנים (שנות ה‪ )80 -‬מורצים גם‬
‫במחשבים מודרניים‪:‬‬
‫– ‪ ISA‬של מחשב מודרני כולל ‪ ISA‬של מחשב ישן‬
‫– ‪ HAS‬והמימוש של מחשב ישן שונה מזה של מחשב מודרני‬
‫מטח אוגוסט ‪2005‬‬
‫‪28‬‬
‫למה ללמוד שפת סף‪/‬שפת מכונה?‬
‫• דרך טובה ללמוד את מבנה המחשב והקשר בין תכנה‬
‫לחמרה וכך לשפר את ההבנה והתכניות בשפות עיליות‬
‫– כשמריצים רקורסיה למה יש בעיה של זיכרון?‬
‫– למה מתקבלת תוצאה נכונה כשמחברים שני מספרים שלמים‬
‫גדולים?‬
‫– איך משפיעים מבני התכנות שבהם אנו משתמשים על זמן‬
‫ביצוע התכנית?‬
‫• כתיבת יישומים המתייחסים להתקני חמרה וחלקים‬
‫ממערכת ההפעלה‬
‫• יישומים של זמן אמת (כיום משתמשים גם בשפות עיליות‬
‫– שפת ‪)C‬‬
‫• בכתיבת קומפיילרים צריך להכיר את ‪ISA‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪29‬‬
‫ארכיטקטורת פון ניומן‬
‫‪von Neumann architecture‬‬
‫• הארכיטקטורה של מחשב מושפעת מגורמים רבים כמו‪:‬‬
‫טכנולוגיה‪ ,‬שפות תכנות‪ ,‬יישומים‪ ,‬היסטוריה של‬
‫התפתחות המחשבים וגם ההתפתחות הצפויה בתחום‬
‫המחשוב‪.‬‬
‫• רב המחשבים היום מבוססים על ארכיטקטורה פון ניומן‬
‫שפותחה לפני כשישים שנה‬
‫• פון ניומן וצוות של מדענים פתחו בשנת ‪ 1951‬מחשב‬
‫שנקרא ‪ EDVAC‬המבוסס על רעיון מהפכני‬
‫בארכיטקטורה שלו‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪30‬‬
‫ארכיטקטורת פון ניומן‬
‫‪von Neumann architecture‬‬
‫• עקרון התכנית המאוחסנת (‪ ( stored program‬לפיו תכנית‬
‫מאוחסנת כמספרים באותו זיכרון בו מאוחסנים הנתונים‪.‬‬
‫• מבנה סכמתי‬
‫• המעבד (‪ )Processor‬תפקידו לבצע את התכנית‬
‫• יחידת הזיכרון (‪ )Memory‬בה מאוחסנים נתונים‬
‫והוראות‬
‫•· יחידת הקלט‪/‬פלט )‪ (I/O Devices‬משמשת לקליטת‬
‫נתונים מהמשתמש ולהצגת תוצאות של ביצוע התכנית‬
‫•· ערוצי תקשורת הנקראים פסים (‪ )bus‬והם מקשרים‬
‫בין יחידות שונות ומעבירים מידע מיחידה ליחידה‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪31‬‬
‫איך מתבצעת תכנית במחשב?‬
‫• כותבים תכנית ומתרגמים אותה לשפת מכונה‬
‫• בעזרת מערכת ההפעלה טוענים ומריצים‬
‫– ההרצה כוללת מספר פעולות שהן שקופות מבחינתנו‬
‫וביניהן‪ :‬התכנית בשפת מכונה והנתונים של התכנית‬
‫נטענים לזיכרון‬
‫• תהליך ביצוע של הוראות התכנית‪:‬‬
‫לכל הוראה מתבצע מחזור הבאה‪-‬ביצוע הכולל‬
‫שני שלבים ‪:‬‬
‫– שלב הבאה (‪ – )fetch‬קריאת ההוראה ופענוחה‬
‫– שלב ביצוע (‪ )execute‬ההוראה‬
‫מטח אוגוסט ‪2005‬‬
‫‪32‬‬
‫ארכיטקטורה של "מחשב" פשוט‬
‫• כדי להבין את הארכיטקטורה (‪ ISA‬ו‪ )HAS -‬של מחשב‪:‬‬
‫– נתכנן “מחשב” פשוט בארכיטקטורת פון ניומן‪.‬‬
‫– נגדיר שפת מכונה בסיסית באמצעותה נכתוב תכניות‬
‫– ה"מחשב" הפשוט יוכל לבצע את מחזור הבאה‪-‬ביצוע של‬
‫תכנית המאוחסנת בזיכרון‬
‫מטרות פדגוגיות‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫מבט‪-‬על‬
‫להבין את המבנה של הוראה בשפת מכונה‬
‫להבין איך מתבצעת הוראה‬
‫שימוש במודל פשוט יסייע להבין בהמשך את אופן פעולה של‬
‫מחשבים מתקדמים‪:‬‬
‫הרכיבים שמגדירים מצב‬
‫של‬
‫תיאור‬
‫המודל הפשוט יכיל‬
‫‪2005‬‬
‫אוגוסט‬
‫מטח‬
‫תכנית בתהליך ביצוע מחזור הבאה‪-‬ביצוע‬
‫‪33‬‬
‫ארכיטקטורה של "מחשב" פשוט‬
‫הזיכרון לאחסון הוראות ונתונים‬
‫• הזיכרון בנוי כמערך חד‪-‬ממדי המכיל ‪ 100‬תאים‪:‬‬
‫– לכל תא בזיכרון יש כתובת שהיא מספר בין ‪ 0‬ל‪.99 -‬‬
‫– בכל תא ניתן לאחסן מספר עשרוני (שלם וחיובי) בן ‪6‬‬
‫ספרות שהוא‪ :‬הוראה‪ ,‬נתון או כתובת של תא בזיכרון‪.‬‬
‫• המעבד יכול לפנות לכל תא בזיכרון על ידי ציון‬
‫כתובת התא ולבצע אחת משתי הפעולות הבאות‬
‫– א‪ .‬קריאה של תוכן התא‬
‫– ב‪ .‬כתיבה נתון (כתיבת הוראות מתבצעת בנפרד‬
‫מהרצת התכנית)‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪34‬‬
‫ארכיטקטורה של "מחשב" פשוט‬
‫מבנה המעבד‪:‬‬
‫כדי לבצע מחזור הבאה‪-‬ביצוע המעבד כולל שתי יחידות עיקריות‪:‬‬
‫• יחידת בקרה המטפלת בשלב ההבאה (הכולל גם פענוח של הוראה)‬
‫• יחידת ביצוע המטפלת בביצוע החישובים‬
‫יחידת הבקרה‬
‫כדי לבצע את שלב ההבאה היא צריכה שני סוגים של מידע‪:‬‬
‫• כתובת של התא בה מאוחסנת ההוראה שעליה לבצע‬
‫• מילון כדי לדעת לפענח את ההוראה‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪35‬‬
‫ארכיטקטורה של "מחשב" פשוט‬
‫• אירגון יחידת הבקרה‪:‬‬
‫– אוגר (‪ )register‬יחידת זיכרון‪:‬‬
‫• גודלה תא אחד‬
‫• יכול להכיל מספר בן ‪ 6‬ספרות (כמו תא בזיכרון)‬
‫• אין צורך בכתובת ואנו פונים אליו בשם שניתן לאוגר‪.‬‬
‫• שני אוגרים חשובים‪:‬‬
‫– אוגר ‪ IP‬משמש לשמירה של הכתובת של ההוראה שעל המעבד‬
‫להביא מהזיכרון והוא נקרא מצביע להוראה ( ‪Instruction‬‬
‫‪.)Pointer‬‬
‫– אוגר ‪ IR‬משמש לשמירת ההוראה שהובאה מהזיכרון אל המעבד‬
‫והוא נקרא אוגר הוראות ) ‪ )Instruction Register‬ובו‬
‫משתמשים לצורך פענוח ההוראה‪.‬‬
‫•‬
‫רכיבים וספים שלא נתייחס אליהם‪ :‬יחידה לחישוב כתובת‪ ,‬יחידה לטיפול בפניה לפסים‪ ,‬יחידה‬
‫לפענוח הוראות וכדומה‬
‫מטח אוגוסט ‪2005‬‬
‫‪36‬‬
‫ארכיטקטורה של "מחשב" פשוט‬
‫יחידת הביצוע‬
‫• יחידה אריתמטית לוגית (‪)ALU‬‬
‫– תפקידה לבצע את הוראות התכנית‪.‬‬
‫• הוראות בתכנית מגדירות פעולות שונות כמו‪:‬‬
‫העברת נתונים ממקום למקום‪ ,‬פעולות‬
‫אריתמטיות ( חיבור‪ ,‬חיסור‪ ,‬כפל‪ ,‬חילוק)‪,‬‬
‫פעולות לוגיות כמו השוואה בין ערכים‬
‫מטח אוגוסט ‪2005‬‬
‫‪37‬‬
‫ארכיטקטורה של "מחשב" פשוט‬
‫• יחידות זיכרון בהן משתמש ה‪ALU -‬‬
‫– יחידות זיכרון לשמירת נתונים עליהם מתבצעות‬
‫הפעולות‬
‫• אילוץ חומרה‪ :‬כל פעולה אריתמטית או לוגית‬
‫(חיבור‪/‬השוואה) שמבצעת היחידה האריתמטית לוגית‪,‬‬
‫מתבצעת על נתונים שנמצאים באוגרים אלו‪ .‬במחשב שלנו יש‬
‫‪ 2‬אוגרים למטרות כליליות אותם נכנה כ‪ DR1 :‬ו‪.DR2 -‬‬
‫– אוגר נוסף הנקרא אוגר דגלים ‪(Flag Register) FR‬‬
‫• תפקידו לשמור תוצאות של ביצוע פעולות לוגיות‬
‫– לדוגמה‪ ,‬בביצוע השוואה האם ‪ ?X = Y‬צריך לשמור מידע (אמת או‬
‫שקר)‬
‫מטח אוגוסט ‪2005‬‬
‫‪38‬‬
‫מבנה סכמתי של "מחשב" פשוט‬
‫זיכרון‬
‫מעבד‬
‫יחידת בקרה‬
‫כתובת‬
‫יחידת ביצוע‬
‫‪DR1‬‬
‫‪IR‬‬
‫‪DR2‬‬
‫‪IP‬‬
‫‪FR‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10‬‬
‫‪99‬‬
‫מבנה סכמתי זה יאפשר לתאר מצב של מחשב לאחר ביצוע הוראה מסוימת‬
‫מטח אוגוסט ‪2005‬‬
‫‪39‬‬
‫הגדרת אוסף הוראות ה"מחשב" הפשוט ‪ISA-‬‬
‫• הוראה בשפה עילית מכילה‪:‬‬
‫– פעולה הנקראת אופרטור (‪ )operator‬שהיא מילה שמורה‬
‫– אופרנדים (‪ )operand‬עליהם מתבצעת הפעולה‪.‬‬
‫• לדוגמה את ההוראה‪ :‬שים את הערך ‪ 8‬במשתנה ‪A‬‬
‫ניתן לרשום בשפה עילית בצורה הבאה‪:‬‬
‫בשפת פסקל‬
‫בשפת ‪C‬‬
‫;‪A: = 8‬‬
‫;‪A= 8‬‬
‫• הוראת ההשמה כוללת אופרטור '=' ושני אופרנדים‪ :‬המשתנה ‪ A‬והקבוע ‪.8‬‬
‫• ההוראות בשפה עילית מורכבות ויכולות להכיל מספר אופרטרים‬
‫ומספר אופרנדים‪.‬‬
‫– לדוגמה ההוראה (פסאודו‪-‬קוד) ‪A=A+B+C : B :‬‬
‫כוללת שני אופרטרים‪ '+' :‬ו‪ ,'=' -‬ושלושה אופרנדים ‪ A, B‬ו‪.C-‬‬
‫בשפה עילית ישנן הוראות מורכבות עוד יותר כגון הוראת ‪ for‬או ‪ if‬הכוללת‬
‫תנאים לוגיים מורכבים ועוד‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪40‬‬
‫הגדרת אוסף הוראות ה"מחשב" הפשוט ‪ISA-‬‬
‫• המבנה של הוראות במחשב שלנו הוא הרבה יותר‬
‫פשוט‪ .‬כל הוראה צריכה לכלול רק‪:‬‬
‫– אופרטור אחד‬
‫– מספר האופרנדים משתנה בין ‪ 1‬ל‪.2 -‬‬
‫• למה? אילוץ חומרה‪ :‬מבנה הוראות פשוט מאפשר‬
‫לבנות חמרה מתאימה המפענחת את ההוראה‬
‫בצורה חד משמעית‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪41‬‬
‫הגדרת אוסף הוראות ה"מחשב" הפשוט ‪ISA-‬‬
‫• במחשב שלנו הוראה תהיה אחת משני המבנים הבאים‬
‫הבא‪:‬‬
‫‪• operator operand1‬‬
‫‪• operator operand1 operand2‬‬
‫• קיימים שלושה סוגים של אופרנדים‪:‬‬
‫– נתון‬
‫– אוגר (‪DR1‬או ‪) DR2‬‬
‫– תא זיכרון (משתנה בשפה עילית) ‪.‬‬
‫• נניח כי כל ההוראה נשמרת בתא אחד בזיכרון (כלומר‬
‫המספר שמייצג את הוראה יהיה לכל היותר בן ‪ 6‬ספרות)‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪42‬‬
‫שיקולים בהגדרת אוסף הוראות של מחשב ‪-‬‬
‫‪ISA‬‬
‫• תכנון ‪ ISA‬הוא מורכב וכולל שיקולים רבים‪:‬‬
‫– אילו הוראות יכיל אוסף הוראות של המחשב הפשוט?‬
‫• קובע את כללי המשחק מנקודת מבט של מתכנת‪ ,‬צריך לתת‬
‫תמיכה במימוש של שפות עיליות‬
‫• יותר פקודות ‪ ‬יותר מעגלי פענוח ומעגלים למימוש‬
‫– איך מעבד ידע לפענח הוראה?‬
‫– איך מעבד יבדיל בין הוראה לנתון?‬
‫– הטכנולוגיה הקיימת‪:‬‬
‫• האם ניתן לממש פעולה במעגל? מחיר? זמן ביצוע?‬
‫מטח אוגוסט ‪2005‬‬
‫‪43‬‬
‫הגדרת אוסף הוראות ה"מחשב" הפשוט ‪ISA-‬‬
‫נגדיר ‪ 5‬הוראות שיאפשרו לכתוב תכניות פשוטות‬
‫ולתאר את תהליך הביצוע שלהן‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫הוראת השמה‬
‫הוראת חיבור‬
‫הוראת השוואה‬
‫הוראת קפיצה בלתי מותנית‬
‫הוראת קפיצה מותנית‬
‫מטח אוגוסט ‪2005‬‬
‫‪44‬‬
‫הוראת ההשמה‬
‫א‪ .‬מבנה לוגי של הוראת השמה הכוללת שני אופרנדים‬
‫אופרנד‪, 2‬אופרנד‪mov 1‬‬
‫משמעותה היא‪ :‬אופרנד‪ ← 2‬אופרנד‪1‬‬
‫• אילוצים‪:‬‬
‫– אופרנד‪ 1‬חייב להיות אוגר משני האוגרים ‪DR1, DR2‬‬
‫– אופרנד‪ 2‬יכול להיות אחד משלוש האפשרויות‪ :‬נתון‪ ,‬אוגר או‬
‫תא בזיכרון‪.‬‬
‫החלטה זו היא אילוץ בו אנו חייבים להתחשב בכתיבת תכניות במחשב זה‪.‬‬
‫לדוגמה‪ ,‬כדי להעתיק נתון מתא זיכרון אחד לתא אחר‪ ,‬נצטרך להשתמש בשתי‬
‫הוראות השמה‪ :‬הראשונה תעתיק נתון מתא זיכרון לאוגר ‪ ,‬והוראה שנייה‬
‫תעתיק‬
‫מטח אוגוסט ‪2005‬‬
‫‪45‬‬
‫קידוד הוראת השמה‬
‫• הוראה בשפת מכונה היא מספר ובמחשב שלנו הוא מספר‬
‫עשרוני עד ‪ 6‬ספרות‬
‫• צריך פענוח חד משמעי ולדעת להבחין בין סוגי ההשמה‬
‫השונים‪ .‬לדוגמה בין‪:‬‬
‫‪MOV DR1, DR2‬‬
‫‪MOV DR1, 23‬‬
‫• צריכים לקבוע קוד מספרי ייחודי לכל פעולה ולכל אוגר כך‬
‫שפענוח של הוראה יהיה חד משמעי‪.‬‬
‫• אחת האפשרויות להבדיל בין הוראות השמה השונות היא ‪:‬‬
‫לייצג כל הוראת השמה בקוד אחר‪.‬‬
‫ובהתאם במחשב שלנו יש חמש הוראות השמה המתוארות‬
‫בטבלה הבאה‬
‫מטח אוגוסט ‪2005‬‬
‫‪46‬‬
‫הוראת השמה בשפת מכונה של המחשב הפשוט‬
‫מספר מציין‬
‫קוד פעולה‬
‫תיאור מילולי של ההוראה‬
‫‪mov‬‬
‫‪01‬‬
‫השם קבוע באוגר‬
‫‪mov1 register, constant‬‬
‫השם אוגר באוגר‬
‫‪02 mov2 register1, register2‬‬
‫השם ערך תא זיכרון באוגר‬
‫‪mov3 register, memory‬‬
‫‪03‬‬
‫השם קבוע בתא זיכרון‬
‫‪mov4 memory, constant‬‬
‫‪04‬‬
‫‪05 mov5 memory, register‬‬
‫השם אוגר בתא זיכרון‬
‫גם לאוגרים נקבע קודים מספריים‪:‬‬
‫• קוד ‪ 01‬מציין את האוגר ‪DR1‬‬
‫•קוד ‪ 02‬מציין את האוגר ‪.DR2‬‬
‫הנתונים בהם המחשב יכול לטפל הם‪ :‬שלמים בין ‪ 0‬ל‪ 99 -‬בלבד!!‬
‫מטח אוגוסט ‪2005‬‬
‫‪47‬‬
‫הוראת השמה בשפת מכונה של המחשב הפשוט‬
‫• כיצד המעבד יבדיל בין קוד ‪ 01‬שהוא קוד ההוראה‬
‫‪ mov1‬לקוד ‪ 01‬שהוא אוגר ‪?DR1‬‬
‫• תשובה‪ :‬בהתאם למבנה הקבוע של ההוראה בה שני‬
‫אופרנדים‪:‬‬
‫‪xx yy zz‬‬
‫– ‪ xx‬מציין שתי ספרות של קוד פעולה‬
‫– ‪ yy‬מציין שתי ספרות של אופרנד‪1‬‬
‫– ‪ zz‬מציין שתי ספרות של אופרנד‪.2‬‬
‫• כך ההוראה המתחילה ב‪ 01 -‬מתייחסת לקוד פעולה‬
‫)‪ ,(mov1‬ואילו ‪ 01‬המופיע במיקום ‪ 3‬ו‪ ) yy( 4 -‬או‬
‫במיקום ‪ 5‬ו ‪ (zz) 6-‬הוא האוגר ‪.DR1‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪48‬‬
‫הוראת השמה בשפת מכונה של המחשב‬
‫הפשוט‬
‫• דוגמאות‪:‬‬
‫ההוראה בשפת מכונה‬
‫תיאור ההוראה‬
‫השם את הערך ‪ 27‬באוגר ‪DR1‬‬
‫השם ערך אוגר ‪ DR2‬באוגר ‪DR1‬‬
‫‪mov1 DR1, 27‬‬
‫‪01 01 27‬‬
‫‪mov2 DR1, DR2‬‬
‫‪02 01 02‬‬
‫התייחסות למשתנים‬
‫משתנה הוא ייצוג לוגי של מקום אחסון בזיכרון‪ .‬לכל משתנה יש כתובת‬
‫ותא בו מאוחסן הנתון‪.‬‬
‫לדוגמה‪ ,‬כי לרשום הוראת ההשמה ‪ ,a=27‬כאשר למשתנה ‪ a‬מאוחסן בתא‬
‫שכתובתו ‪10‬‬
‫השם את הערך ‪ 27‬בכתובת ‪ 10‬בזיכרון‬
‫מטח אוגוסט ‪2005‬‬
‫‪mov4 a, 27‬‬
‫‪04 10 27‬‬
‫‪49‬‬
‫הוראת החיבור בשפת מכונה של המחשב‬
‫הפשוט‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫הוראת חיבור כוללת שני אופרנדים וניתנת לתיאור‬
‫בצורה הבאה‪:‬‬
‫אופרנד‪, 2‬אופרנד‪add 1‬‬
‫סוגי אופרנדים מותרים‪:‬‬
‫אופרנד‪ 1‬חייב להיות אוגר משני האוגרים ‪DR1, DR2‬‬
‫אופרנד‪ 2‬יכול להיות אחד משתי אפשרויות‪ :‬נתון או‬
‫אוגר‪.‬‬
‫תוצאת החיבור מושמת תמיד באופרנד ‪.1‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪50‬‬
‫הוראת החיבור בשפת מכונה של המחשב‬
‫הפשוט‬
‫מספר מציין קוד פעולה‬
‫תיאור מילולי של ההוראה‬
‫חבר קבוע באוגר‬
‫‪add1 register, constant‬‬
‫‪06‬‬
‫חבר ערך שני אוגרים‬
‫‪add2 register1, register2‬‬
‫‪07‬‬
‫לדוגמה‪:‬‬
‫ההוראה בשפת מכונה‬
‫תיאור ההוראה‬
‫‪DR1? DR1 + 27‬‬
‫‪add1 DR1, 27‬‬
‫‪06 01 27‬‬
‫‪DR1? DR1 + DR2‬‬
‫‪add DR1, DR2‬‬
‫‪07 01 02‬‬
‫איך נחבר משתנה בזיכרון‪? DR1= DR1+a :‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪51‬‬
‫תכנית לדוגמה‪:‬‬
‫‪ A‬ו‪ B -‬משתנים‪,‬לבצע את הפעולות‬
‫‪A = 23‬‬
‫‪B = 54‬‬
‫‪A=A+B‬‬
‫תרגום לשפת מכונה‬
‫תיאור הפעולה‬
‫הוראה בשפת מכונה‬
‫‪mov4 A, 23‬‬
‫‪04 10 23‬‬
‫‪mov4 B, 54‬‬
‫‪04 11 54‬‬
‫‪mov3 DR1, A‬‬
‫‪03 01 10‬‬
‫‪mov3 DR2, B‬‬
‫‪03 02 11‬‬
‫‪add2 DR1, DR2‬‬
‫‪07 01 02‬‬
‫‪mov5 A DR1‬‬
‫‪05 10 01‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪52‬‬
‫טעינת תכנית לדוגמה לזיכרון‬
‫מעבד‬
‫יחידת בקרה‬
‫זיכרון‬
‫יחידת ביצוע‬
‫‪04 10 23‬‬
‫‪04 11 54‬‬
‫‪DR1‬‬
‫‪IR‬‬
‫‪03 02 11‬‬
‫‪DR2‬‬
‫‪00‬‬
‫‪03 01 10‬‬
‫‪IP‬‬
‫‪08 01 02‬‬
‫‪05 10 01‬‬
‫‪FR‬‬
‫טעינת תכנית לזיכרון ‪:‬‬
‫•להוראות נקצה את הכתובות החל מ‪,0 -‬‬
‫•ובהתאם אוגר ‪ IP‬מאותחל לערך זה‬
‫?‬
‫?‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10‬‬
‫‪11‬‬
‫‪99‬‬
‫•למשתנים נקצה את הכתובות‪:‬‬
‫כתובת ‪ 10‬למשתנה ‪a‬‬
‫כתובת ‪ 11‬למשתנה ‪b‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪53‬‬
‫הרצה – ביצוע מחזור הבאה‪-‬ביצוע לכל הוראה‬
‫‪ .1‬ביצוע הוראה ראשונה‪:‬‬
‫• שלב ראשון הוא שלב ההבאה והוא כולל מספר פעולות‪:‬‬
‫– קריאת ההוראה עליה מצביע ‪:IP‬‬
‫המעבד קורא מהזיכרון את ההוראה הראשונה לביצוע‬
‫שכתובתה שמור ב‪ IP -‬ומאחסן אותה באוגר ‪IR‬‬
‫– קידום אוגר תכנית‪:‬‬
‫המעבד מקדם את האוגר ‪ IP‬ב‪ ,1 -‬כך שהוא מצביע על‬
‫ההוראה הבאה (השנייה בתכנית)‬
‫– פענוח ההוראה‪:‬‬
‫המעבד מפענח את ההוראה כדי לדעת מה עליו לבצע‪:‬‬
‫•‬
‫קורא שתי ספרות ראשונות ומפענח את סוג ההוראה ואת סוגי‬
‫האופרנדים במילון שלו‬
‫מטח אוגוסט ‪2005‬‬
‫‪54‬‬
‫פענוח הוראות מילון של הוראות‬
04 10 27
‫קוד ההוראה‬
04
‫מספר מציין‬
‫תיאור מילולי של ההוראה‬
‫קוד פעולה‬
‫מפענח‬
55
01
mov1 register, constant
02
mov2 register1, register2
03
mov3 register, memory
04
mov4 memory, constant
05
mov5 memory, register
06
add1 register, constant
07
add2 register1, register2
2005 ‫מטח אוגוסט‬
‫מצב זיכרון ואוגרים לאחר סיום של ההבאה של ההוראה ראשונה‬
‫‪mov4 A, 23‬‬
‫מעבד‬
‫יחידת בקרה‬
‫זיכרון‬
‫יחידת ביצוע‬
‫‪04 10 23‬‬
‫‪04 11 54‬‬
‫‪DR1‬‬
‫‪04 10 23‬‬
‫‪IR‬‬
‫‪01‬‬
‫‪IP‬‬
‫‪03 01 10‬‬
‫‪03 02 11‬‬
‫‪DR2‬‬
‫‪08 01 02‬‬
‫‪05 10 01‬‬
‫‪FR‬‬
‫?‬
‫?‬
‫מטח אוגוסט ‪2005‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10‬‬
‫‪11‬‬
‫‪56‬‬
‫שלב ביצוע של ההוראה הראשונה‬
‫‪mov4 A, 23‬‬
‫• המעבד כותב את הנתון ‪ 23‬בתא שכתובתו ‪.10‬‬
‫מצב האוגרים והזיכרון בסיום ההוראה הוא‪:‬‬
‫מעבד‬
‫יחידת בקרה‬
‫זיכרון‬
‫יחידת ביצוע‬
‫‪DR1‬‬
‫‪04 10 23‬‬
‫‪IR‬‬
‫‪DR2‬‬
‫‪01‬‬
‫‪IP‬‬
‫‪FR‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪0 04 10 23‬‬
‫‪1 04 11 54‬‬
‫‪2 03 01 10‬‬
‫‪3 03 02 11‬‬
‫‪4 08 01 02‬‬
‫‪5 05 10 01‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10 23‬‬
‫? ‪11‬‬
‫‪57‬‬
‫סיום מחזור הבאה‪-‬ביצוע של ההוראה השנייה‬
‫‪mov4 B, 54‬‬
‫מעבד‬
‫יחידת בקרה‬
‫זיכרון‬
‫יחידת ביצוע‬
‫‪DR1‬‬
‫‪03 01 10‬‬
‫‪IR‬‬
‫‪DR2‬‬
‫‪02‬‬
‫‪IP‬‬
‫‪FR‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪0 04 10 23‬‬
‫‪1 04 11 54‬‬
‫‪2 03 01 10‬‬
‫‪3 03 02 11‬‬
‫‪4 08 01 02‬‬
‫‪5 05 10 01‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10 23‬‬
‫‪11 54‬‬
‫‪58‬‬
‫סיום מחזור הבאה‪-‬ביצוע של ההוראה השלישית‬
‫‪mov3 DR1, A‬‬
‫זיכרון‬
‫מעבד‬
‫יחידת ביצוע‬
‫יחידת בקרה‬
‫‪23‬‬
‫‪03 01 10‬‬
‫‪DR1‬‬
‫‪IR‬‬
‫‪DR2‬‬
‫‪IP 03‬‬
‫‪FR‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪0 04 10 23‬‬
‫‪1 04 12 54‬‬
‫‪2 03 01 10‬‬
‫‪3 03 02 11‬‬
‫‪4 08 01 02‬‬
‫‪5 05 10 01‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10 23‬‬
‫‪11 54‬‬
‫‪59‬‬
‫סיום מחזור הבאה‪-‬ביצוע של ההוראה הרביעית‬
‫‪MOV3 DR2, B‬‬
‫מעבד‬
‫יחידת בקרה‬
‫זיכרון‬
‫יחידת ביצוע‬
‫‪04 10 23‬‬
‫‪04 11 54‬‬
‫‪23‬‬
‫‪03 02 11‬‬
‫‪IR‬‬
‫‪04‬‬
‫‪IP‬‬
‫‪DR1‬‬
‫‪03 01 10‬‬
‫‪03 02 11‬‬
‫‪54‬‬
‫‪DR2‬‬
‫‪08 01 02‬‬
‫‪05 10 01‬‬
‫‪FR‬‬
‫‪00‬‬
‫‪23‬‬
‫‪54‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10‬‬
‫‪11‬‬
‫‪60‬‬
‫מחזור הבאה‪-‬ביצוע של ההוראה החמישית‬
‫‪ADD2 DR1, DR2‬‬
‫מעבד‬
‫יחידת בקרה‬
‫זיכרון‬
‫יחידת ביצוע‬
‫‪DR1 77‬‬
‫‪IR 08 01 02‬‬
‫‪54‬‬
‫‪05‬‬
‫‪DR2‬‬
‫‪IP‬‬
‫‪FR‬‬
‫וכך הלאה‪...‬‬
‫‪0 04 10 23‬‬
‫‪1 03 11 54‬‬
‫‪2 03 01 10‬‬
‫‪3 03 02 11‬‬
‫‪4 08 01 02‬‬
‫‪5 05 10 01‬‬
‫‪6 00‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10 23‬‬
‫‪11 54‬‬
‫איך תכנית תסתיים?‬
‫מטח אוגוסט ‪2005‬‬
‫‪61‬‬
‫סיום תכנית‬
‫• שתי אפשרויות‪:‬‬
‫– להשתמש במונה של מספר הוראות בתכנית‬
‫– עוד חומרה (מונה)‪ ,‬לא גמיש לשינויים‬
‫– להשתמש בהוראת סיום מיוחדת‬
‫• ההוראה סיים תכנית בלי אופרנדים‪:‬‬
‫‪00‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪62‬‬
‫דוגמה שנייה לביצוע תכנית הכוללת‬
‫הוראת ביצוע מותנה‬
‫• תכניות רבות כוללות לא רק ביצוע הוראות באופן‬
‫סדרתי אלא גם ביצוע מותנה (הוראות תנאי)‬
‫ולולאות‪.‬‬
‫• לדוגמה‪ ,‬ברצוננו לבצע את הוראת התנאי הבאה‪:‬‬
‫אם ‪ A = B‬אזי‬
‫‪A=2‬‬
‫אחרת‬
‫‪B= 2‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪63‬‬
‫עוד הוראות ‪ -‬הוראת השוואה‬
‫• ההוראה להשוואה כוללת שני אופרנדים וניתנת לתיאור בצורה‬
‫הבאה‪:‬‬
‫אופרנד‪ , 2‬אופרנד‪compare 1‬‬
‫בשפת מכונה של המחשב שלנו‪:‬‬
‫• אופרנד‪ 1‬חייב להיות אוגר נתונים (‪ DR1‬או ‪)DR2‬‬
‫• אילו אופרנד‪ 2‬יכול להיות נתון או אוגר‪.‬‬
‫שתי הוראות השוואה שונות‪:‬‬
‫תיאור מילולי של ההוראה‬
‫האם אוגר= לנתון ?‬
‫האם אוגר‪ =1‬לאוגר‪? 2‬‬
‫מספר המציין קוד פעולה‬
‫‪compare1 reg, const‬‬
‫‪compare1 reg1, reg2‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪08‬‬
‫‪09‬‬
‫‪64‬‬
‫הוראת השוואה (המשך)‬
‫• תוצאה של פעולת השוואה היא אחת משני הערכים‪:‬‬
‫אמת או שקר‪.‬‬
‫• היחידה אריתמטית לוגית מבצעת את פעולת ההשוואה‬
‫ורושמת בהתאם לתוצאה את הערך ‪ 0‬לציון אמת או ‪1‬‬
‫לציון שקר באוגר הדגלים‪.‬‬
‫• תפקידו של אוגר הדגלים‪ :‬לשמור תוצאות של פעולות‬
‫לוגיות ותכונות אחרות הנגרמות מפעולות חישוב‬
‫(לדוגמה האם התוצאה היא אפס? האם התוצאה‬
‫שלילית? וכדומה)‪.‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪65‬‬
‫הוראת קפיצה מותנת‬
‫• מאפשרת לעבור להוראה מסוימת בתכנית שאינה‬
‫בהכרח ההוראה עליה מצביע אוגר ‪.IP‬‬
‫• בהוראה זו רק אופרנד אחד והוא נתון (בין ‪ 0‬ל‪)99 -‬‬
‫המציין כתובת של הוראה אליה נדלג‪.‬‬
‫‪jumptrue operand‬‬
‫קוד הוראה זו הוא‪10 :‬‬
‫פעולה זו דומה לפעולת ההוראה‪< then :‬תנאי> ‪if‬‬
‫(ללא ‪:)else‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪66‬‬
‫הוראת קפיצה מותנת‬
‫אלגוריתם לביצוע ההוראה‪:‬‬
‫• אם ערך אוגר דגלים הוא ‪ 1‬אזי‬
‫– קפוץ בביצוע ההוראה הבאה להוראה שכתובתה נתון כאופרנד‪,‬‬
‫אחרת‬
‫– המשך כרגיל להוראה הבאה עליה מצביע ‪IP‬‬
‫דוגמה‪ ,‬ההוראה ‪ 10 03‬משמעותה‪ :‬אם ערך אוגר הדגלים ‪ 1‬עבור לביצוע‬
‫הוראה שבכתובת ‪ ,03‬אחרת המשך לביצוע ההוראה העוקבת להוראה נוכחית‬
‫• כדי לקפוץ לכתובת שנתון כאופרנד‪ ,‬המעבד צריך בזמן ביצוע‬
‫ההוראה לשנות את ערכו של ‪IP‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪67‬‬
‫ההוראה לקפיצה בלתי מותנת‬
‫בהוראה זו הקפיצה להוראה שכתובתה הוא האופרנד אינה‬
‫תלוי באוגר הדגלים ומתבצעת תמיד‬
‫‪ jump operand‬קוד הוראה זו הוא‪11 :‬‬
‫אלגוריתם לביצוע ההוראה‪:‬‬
‫– קפוץ בביצוע ההוראה הבאה להוראה שכתובתה נתון כאופרנד‪,‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪68‬‬
‫תרגום תכנית לשפת מכונה‬
‫אם ‪ A = B‬אזי‬
‫‪A=2‬‬
‫אחרת‬
‫‪B= 2‬‬
‫מיקום הוראה‬
‫בזיכרון‬
‫הוראה בשפת מכונה‬
‫תיאור ההוראה‬
‫‪03 01 10‬‬
‫‪0‬‬
‫‪DR2 = B‬‬
‫‪03 02 11‬‬
‫‪1‬‬
‫האם ‪? DR1 = DR2‬‬
‫‪09 01 02‬‬
‫‪2‬‬
‫‪jumptrue 06‬‬
‫‪10 06‬‬
‫‪3‬‬
‫‪04 11 02‬‬
‫‪4‬‬
‫‪jump 07‬‬
‫‪11 07‬‬
‫‪5‬‬
‫‪A= 2‬‬
‫‪04 10 02‬‬
‫‪6‬‬
‫‪end‬‬
‫‪00‬‬
‫‪7‬‬
‫‪DR1 = A‬‬
‫‪B=2‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪69‬‬
‫ביצוע תכנית לדוגמה ‪2‬‬
‫• לביצוע תכנית זו יש ‪ 2‬אפשרויות‪:‬‬
‫– מסלול אחד של ביצוע במקרה ו‪ A -‬שווה ל‪B -‬‬
‫– מסלול שני של ביצוע במקרה ש‪ A -‬שונה מ‪.B -‬‬
‫• מצב התחלתי לאחר טעינת התכנית לזיכרון‪:‬‬
‫מעבד‬
‫יחידת בקרה‬
‫‪IR‬‬
‫זיכרון‬
‫יחידת ביצוע‬
‫‪03 01 10‬‬
‫‪03 02 11‬‬
‫‪03 02 11‬‬
‫‪DR1 10 01 02‬‬
‫‪09 01 02‬‬
‫‪10 06‬‬
‫‪04 11 02‬‬
‫‪00‬‬
‫‪IP‬‬
‫‪10 06‬‬
‫‪DR2‬‬
‫‪11 07‬‬
‫‪04 10 02‬‬
‫‪04 11 02‬‬
‫‪11 07‬‬
‫‪FR‬‬
‫‪00‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪04 10 02‬‬
‫‪00‬‬
‫‪40‬‬
‫‪30‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪10‬‬
‫‪11‬‬
‫‪70‬‬
‫תיאור תהליך ביצוע התכנית במקרה ש‪ A -‬שונה מ‪B -‬‬
‫• במקרה כזה מתבצעות ההוראות הבאות‪:‬‬
‫‪DR1 = A‬‬
‫‪DR2 = B‬‬
‫האם ‪ ? DR1 = DR2‬אוגר הדגלים מתעדכן ל‪0 -‬‬
‫נכשל‬
‫‪jumptrue 06‬‬
‫‪B=2‬‬
‫‪jump 07‬‬
‫‪end‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪71‬‬
‫ביצוע ההוראה ‪jump 07‬‬
‫שלב ההבאה‪:‬‬
‫• קרא את ההוראה שבכתובת ‪05‬‬
‫• קדם ‪ IP‬להוראה הבאה‪IP=6 ,‬‬
‫• פענח את ההוראה‬
‫שלב ביצוע‪:‬‬
‫• שנה ערך אוגר ‪ IP‬ל‪07 -‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪72‬‬
‫תיאור תהליך ביצוע התכנית במקרה ש‪ A -‬שווה ל‪B -‬‬
‫• במקרה כזה מתבצעות ההוראות הבאות‪:‬‬
‫‪DR1 = A‬‬
‫‪DR2 = B‬‬
‫האם ‪ ? DR1 = DR2‬אוגר הדגלים מתעדכן ל‪1 -‬‬
‫מצליח‬
‫‪jumptrue 06‬‬
‫‪A=2‬‬
‫‪end‬‬
‫הוראה ‪ jumptrue 06‬מתבצעת בדומה להוראה ‪jump‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪73‬‬
‫קשר בין יחידות המחשב‬
‫• נקודת מבט של ארכיטקטורה של החמרה ‪HAS‬‬
‫• כיצד מתבצע הקשר בין היחידות השונות במחשב?‬
‫• במחשב ישנם שלושה סוגים של פסים (אוסף מוליכים‬
‫המקשרים בין יחידות שונות)‪:‬‬
‫– פס הנתונים (‪ )Data bus‬בו מועברים נתונים והוראות‬
‫– פס הכתובות (‪ )Address bus‬בו מועברות כתובות של תאי‬
‫זיכרון‬
‫– פס הבקרה (‪ )Control bus‬בו מועברת סוג הפעולה‪ :‬קריאה או‬
‫כתיבה‬
‫מספר המוליכים בפס קובע את גודל המידע שיכול להיות מועבר‬
‫כשבכל פס מועבר ‪ 0‬או ‪.1‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪74‬‬
‫קשר בין יחידות המחשב‬
‫מטח אוגוסט ‪2005‬‬
‫‪75‬‬
‫מחזור קריאה מהזיכרון‬
‫מטח אוגוסט ‪2005‬‬
‫‪76‬‬
‫מחזור כתיבה בזיכרון‬
‫מטח אוגוסט ‪2005‬‬
‫‪77‬‬
‫סינכרון ‪ -‬שעון פנימי‬
‫את קצב העבודה של המעבד מכתיבת שעון פנימי ש‪:‬‬
‫•מסנכרן את פעולות המעבד‪ ,‬הפסים ושאר היחידות והוא טריגר לביצוע‬
‫אירועים שונים‬
‫• אות שעון הוא אות ריבועי שעולה ל‪ -‬ולאחר זמן מה יורד ל‪ 1( 0 -‬ו‪0 -‬‬
‫מייצגים מתח)‬
‫•מחזור אחד ‪ :‬זמן של עליה ל‪ 1 -‬וירידה ל‪0 -‬‬
‫•תדר הוא מספר מחזורים בשניה נמדד כיום במאות מיליוני מחזורים‬
‫בשנייה‬
‫‪one cycle‬‬
‫‪1‬‬
‫מטח אוגוסט ‪2005‬‬
‫‪0‬‬
‫‪78‬‬
‫שעון פנימי וקצב עבודה של מחשב‬
‫•‬
‫•‬
‫•‬
‫•‬
‫מחזור מכונה אחד מודד זמן ביצוע של פעולה אחת‬
‫פעולות מתבצעות מחוץ למעבד – מעבד פונה לזיכרון או להתקן קלט‪/‬פלט הן‬
‫פעולות יקרות כי היחידות החיצוניות איטיות‬
‫בקריאה‪/‬כתיבה מזיכרון‪/‬לזיכרון במעבד ‪ 4 8086‬פעולות = ‪ 4‬מחזורי מכונה‪:‬‬
‫הוצאת כתובת לפס כתובות‪ ,‬קביעת אות בקרה‪ ,‬מעבד ממתין לנתון‪ ,‬העברת נתון‬
‫למעבד)‬
‫קריאה‪/‬כתיבה מיחידות קלט‪/‬פלט פעולה עוד יותר איטית (תלוי בהתקן)‬
‫• הערכת זמן ביצוע של הוראות‪:‬‬
‫– לכל הוראה בשפת מכונה‪ ,‬מספק היצרן מספר מחזורי שעון לביצוע‪ :‬יש‬
‫איטיות ויש מהירות יותר‬
‫– הערכה‪:‬‬
‫• הוראות ארוכות (תלוי במספר אופרנדים והסוג שלהם) יארכו יותר זמן‬
‫לקריאה‪.‬‬
‫• הוראות שביצוען לא דורש גישה לזיכרון(קלט‪/‬פלט) נוספת לזיכרון מעבר לזמן‬
‫קריאת ההוראה עצמה מהיר יותר‬
‫מטח אוגוסט ‪2005‬‬
‫‪79‬‬
‫שעון פנימי וקצב עבודה של מחשב‬
‫תדר הוא מספר מחזורים בשניה נמדד כיום‬
‫במאות מיליוני מחזורים בשנייה‪ ,‬אז‬
‫מחשבים מהירים מאוד מה אכפת לנו‬
‫מזמן ביצוע הוראה בודדת?‬
‫תשובה אחת –‬
‫• התדר שמוצג הוא זמן של ביצוע פעולה‬
‫במעבד אבל ביצוע תוכנית יש פניה‬
‫ליחידות חיצוניות‬
‫• ‪ 501MHz‬לא אומר זה מספר ההוראות‬
‫שתתבצענה‬
‫מטח אוגוסט ‪2005‬‬
‫‪80‬‬
‫אבני דרך בהתפתחות של מחשבים‬
‫• התפתחויות בשלושה מישורים‪:‬‬
‫– בטכנולוגיה‬
‫– ארכיטקטורה‬
‫– תכנה‬
‫• פרה היסטוריה –‬
‫– מחשבים הם אנשים‬
‫– פיתוח מחשבונים – ביצוע משימות ייעודיות‬
‫• ‪ Pascaline‬של פסקל‪ ,‬מכונת צעדים של לייבניץ‪ ,‬בבג' אבי‬
‫רעיון מכונה ליישומים כלליים‪ ,‬המכונה של הולריית‬
‫מטח אוגוסט ‪2005‬‬
‫‪81‬‬
‫אבני דרך בהתפתחות של מחשבים‬
‫דור ראשון של מחשבים אלקטרוניים ‪1937-1953‬‬
‫• טכנולוגיה – שפופרות ריק‬
‫• ארכיטקטורה של פון ניומן ועקרון התכנית המאוחסנת‬
‫• תכנה‪ :‬שפת מכונה ושפת אסמבלי‬
‫דור שני של מחשבים אלקטרוניים (‪)1954-1962‬‬
‫• טכנולוגיה – טרניזסטורים (מזעור‪ ,‬מהירות‪ ,‬חסכון באנרגיה)‬
‫• ארכיטקטורה‪ :‬הוסיפו רכיבים שאפשרו גישה מהירה לאיברי‬
‫מערך ויחידת חומרה לחישובים בשיטת נקודה צפה‪.‬‬
‫• תכנה‪ :‬שפות עיליות (פורטרן‪ ,‬קובול)‬
‫מטח אוגוסט ‪2005‬‬
‫‪82‬‬
‫אבני דרך בהתפתחות של מחשבים‬
‫דור שלישי (‪)1963-1972‬‬
‫• טכנולוגיה – מעגלים מוכללים ‪) integrated circuits( IC‬‬
‫• ארכיטקטורה ‪ :‬פותחו טכניקות לתכנון מעבדים מורכבים‬
‫יותר מה שאפשר לפתח טכניקות של תכנות מקבילי‬
‫(הרצת מספר משימות על מעבד בודד)‪.‬‬
‫• תכנה‪ :‬שפת ‪ ,C‬מערכת הפעלה ‪UNIX‬‬
‫דור רביעי (‪)1972-1984‬‬
‫• טכנולוגיה – שיפור במעגלים מוכללים ‪VLSI‬‬
‫• ארכיטקטורה ‪ :‬מחשב שלם על צ'יפ אחד ‪ >-‬הופעת מחשב‬
‫אישי‬
‫דקלרטיביות‬
‫• תכנה‪ :‬פתוח שפות תכנות‬
‫מטח אוגוסט ‪2005‬‬
‫‪83‬‬
‫אבני דרך בהתפתחות של מחשבים‬
‫דור ‪)1984-1990( 5‬‬
‫• טכנולוגיה – מזעור‪ ,‬שפור בזכרונות (הקטנת זמן גישה ‪,‬‬
‫קבולת גדלה)‬
‫• ארכיטקטורה ‪ :‬עיבוד מבוזר ‪ -‬מעבדים משתפים פעולה כדי‬
‫לעבד תוכנית אחת‬
‫• תכנה‪ :‬שפות מונחות עצמים‪ ,‬פיתוח רשתות תקשורת‬
‫דור שישי מ‪ 1990 -‬ואילך‬
‫טכנולוגיה – מזעור‪ ,‬שפור בזכרונות (הקטנת זמן גישה ‪ ,‬קבולת‬
‫גדלה)‬
‫• ארכיטקטורה ‪ :‬עיבוד מבוזר‪ ,‬מהירות עיבוד גדלה ‪,‬‬
‫מעבדים כפולי ליבה‬
‫מטח אוגוסט ‪2005‬‬
‫• תכנה‪ :‬רשת האינטרנט‪ ,JAVA ,‬יישומי מולטימדיה‬
‫‪84‬‬
‫אבני דרך בהתפתחות של מחשבים‬
‫חוק מור‪ :‬גורדון מור העלה השערה ב‪ ,1965-‬כי מספר הטרנזיסטורים לאינץ‬
‫מרובע במעגלים מוכללים יכפיל את עצמו כל שנה‪.‬‬
‫מה הגבול???‬
‫מטח אוגוסט ‪2005‬‬
‫‪85‬‬