מבוסס על שקפים מאת יאן ציטרין

Slides:



Advertisements
מצגות קשורות
חוזרים ויודעים את סדר הפעולות עם סוגריים
Advertisements

מבוא לביואינפורמטיקה יואלה יריב רוברט בצאם 17.june.2002.
מערכות סדרתיות (מערכות עקיבה)
הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
אוגרים ומונים – Registers & Counters
חקירת פונקציה נקודות קיצון אקסטרמום(קיצון) בקטע סגור תחומי עליה וירידה
אוגרים ומונים – Registers & Counters
תכנות בשפת C תרגול 11 - קבצים.
מכניקה תורת התנועה O x y o y x r y x tanα = r² =x² +y²
השתלמות מורים לפיזיקה בראשית דרכם יום רביעי 03 דצמבר 2008
יצירת מקרו הפעלת מקרו יצירת לחצן / פקד דוגמה מסכמת
תרגול מס' 1: מנהלות חזרה על ארכיטקטורת ה- MIPS
מבוא לתכנות ב-JAVA מעבדה 1
Trends in Periodic Table Properties
על הסתיו ועוד, בגן ה"תמרים" בעכו שם הגננות: מירב קדוש אלה נאמן
תרגול 11 מלכודות בניית ה-Debugger
Mitug.com- אתר מיתוג של פטריק
לולאות Department of Computer Science-BGU 19 יולי 19.
בניית תוכנית בית ספרית שנתית
האם מבינים את המתרחש בתהליך ?
Isotopes and Atomic Mass
OOO Execution of Memory Operations
אלקטרושליליות ופולריות הקשר
כל הזכויות שמורות לגבריאל אנקרי © 2017
משואה כימית של שריפת פחם (תגובה עם חמצן)
Jump tables, review questions
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
פעולות אריתמטיות קרן כליף.
Computer Programming תרגול 1 Summer 2016
תירגול 11: מיונים וחיפוש בינארי
תרכובות עם יונים פוליאטומים בחיי היום יום
נערך ע"י אריק הוד הגימנסיה העברית הרצליה
יסודות מבני נתונים תרגול 13: עץ פורש מינימלי - Minimum Spanning Tree (MST)

Entity Relationship Diagram – ERD
תירגול 3: לולאות, קלט, וטיפוסים
תלמידים יקרים, נגמרה החופשה והגיע הזמן עורר את תאי המוח שלנו
Out Of Order Execution (Part 1)
מבני נתונים תרגול 3 ליאור שפירא.
OOO Execution of Memory Operations
ניתוח עקיבות.
פינוק מסביב לעולם הסבר הזמנה ומימוש.
Carry Save Adder (CSA).
רובוטיקה תרגול שימוש בלולאות
כל הזכויות שמורות לגבריאל אנקרי © 2017
Direction of induced current
תורת הקומפילציה תרגול 9: תרגום לקוד ביניים
מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש
Computer Architecture and System Programming Laboratory
SQL - כתיבת שאילתות למתחילים
בתרכובות יוניות יש קשרים יונים
Branch Prediction בעריכת אורן קצנגולד Updated by Franck Sala.
Branch Prediction Oren Katzengold, Franck Sala, Elad Shtiegmann.
Emech at 1 + W = Emech at 2 mgh1 = mgh2
מבוא לתכנות ב- JAVA מעבדה 4
המשפט המורכב זאב ייני ©.
מבוא לתכנות בWINDOWS ד"ר אבי רוזנפלד.
מצביעים Pointers – המשך...
(או כיצד ללמוד בצורה נכונה מתחילת הסמסטר)
(או כיצד ללמוד בצורה נכונה מתחילת הסמסטר)
מבוסס על שקפים מאת יאן ציטרין
הצג את עצמך, את עמותת תפוח ואת נושא הפעילות.
Tutorial #10 MIPS commands
מעבדה 2- עיצוב (עבור חלק ג)
תרגול מס' 2: Data and Control Hazards
OOO Execution of Memory Operations
Engineering Programming A
תמליל מצגת:

מבוסס על שקפים מאת יאן ציטרין תרגול 6 הסתעפויות מבוסס על שקפים מאת יאן ציטרין

קפיצות לא מותנות Unconditional Branch br label … … PC לאחר ה- fetch של פקודת ה- branch br label pc … הקפיצה מתבצעת תמיד, בלי שום תנאי (מכאן השם) … PC לאחר הביצוע של פקודת ה-branch label © את"ם - תרגול מס' 6

Branch לא מותנה - קידוד 000400 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x 1 opcode offset -12810  offset  12710 ניתן לקפוץ קדימה או אחורה ל – offset מילים כיצד נקפוץ מעבר למרחק הזה? תשובה: אפשר להציג את jmp, או פשוט להציע להם להשתמש ב-mov #label, pc octal base code of br: 000400 © את"ם - תרגול מס' 6

+ Base Code base code בבית הנמוך תמיד מכיל אפסים 1 1 + Offset - בבית הגבוה תמיד מכיל אפסים x coding : base code + offset x 1 © את"ם - תרגול מס' 6

קשר בין offset לכתובת היעד target address = PC after br fetching 2 * offset + PC after br fetching - target address offset = 2 © את"ם - תרגול מס' 6

Branch לא מותנה (דוגמה) begin: … 10148 11 110 000 ... br begin 10528 pc … 10548 1 ה-basecode וה-offset מתערבבים ביצוג אוקטאלי 7 6 ובאוקטלי © את"ם - תרגול מס' 6

קפיצות מותנות Conditional Branch בתוכנות אמיתיות נרצה לבצע קטעי קוד ספציפיים רק כאשר תנאים מסוימים מתקיימים לשם כך ניתן להשתמש בקפיצות מותנות הקפיצות הללו תלויות בערכים של הדגלים ב-PSW 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 N Z V C הדגלים האלה מקבלים ערכים "0" או "1" כתוצאה מביצוע פקודות של PDP-11 (תזכרו asl, asr ) Negative Carry out Zero oVerflow © את"ם - תרגול מס' 6

Branch -ים מותנים (המשך) קפיצות מותנות מתבצעות בד"כ מייד אחרי פקודה cmp op1 , op2 מבצעים op1 _- op2 ( בניגוד לפקודה sub) התוצאה של החיסור לא נשמרת בשום מקום, אלא לפי ערכה נקבעים הערכים של הדגלים ה- branch שמופיע מייד אחרי ה- cmp הזה "מסתכל" על הדגל Z וכתוצאה מכך מתבצעת קפיצה cmp #5, #5 Z = 1 beq A Branch if EQual © את"ם - תרגול מס' 6

Branch -ים מותנים - קידוד לכל פקודות branch מותנות אותו אופן קידוד כמו ל- br בלתי מותנה ההבדל היחיד הוא ב-base code לכן חישוב כתובת היעד מתבצע לפי אותה נוסחה שראינו בתחילת השיעור. © את"ם - תרגול מס' 6

1101 ? 0011 איזה מהמספרים הבאים גדול יותר? תשובה: תלוי. © את"ם - תרגול מס' 6

משפחות שונות שלBranch -ים מותנים כבר ראינו שיטות שונות לייצג מספרים: Unsigned(רק עבור מספרים חיוביים) 2’s Complement ראינו שחשוב מאוד לדעת באיזו שיטה אנחנו עובדים. הבחירה בסוג הייצוג תלויה בנתונים והיא באחריות המתכנת (כלומר, באחריותכם!) © את"ם - תרגול מס' 6

Signed Conditional Branches Base Code פקודה תנאי לקפיצה תנאי לקפיצה אחרי פקודה cmp op1, op2 דגלים 002000 bge Greater than or equal to (zero) op1  op2 N xor V = 0 002400 blt Less than (zero) op1  op2 N xor V = 1 003000 bgt Greater than (zero) op1 > op2 Z  (N xor V) = 0 003400 ble Less than or equal to (zero) op1  op2 Z  (N xor V) = 1 לדגלים N ו-V יש משמעות רק כשעובדים עם מספרים בעלי סימן. לכן הפקודות הללו בודקות אותם. © את"ם - תרגול מס' 6

Unsigned Conditional Branches Base Code פקודה תנאי לקפיצה תנאי לקפיצה אחרי פקודה cmp op1, op2 דגלים 101000 bhi Higher op1 > op2 C  Z = 0 101400 blos Lower or same op1  op2 C  Z = 1 103000 bhis Higher or same op1  op2 C = 0 103400 blo Lower op1  op2 C = 1 שימו לב: הפקודות הללו בודקות רק את הדגלים C ו- Z. © את"ם - תרגול מס' 6

Branch -ים מותנים המתייחסים לדגל בודד Base Code פקודה תנאי לקפיצה תנאי לקפיצה אחרי פקודה cmp op1, op2 דגלים 001000 bne Not equal to 0 op1  op2 Z = 0 001400 beq Equal to 0 op1 = op2 Z = 1 100000 bpl Plus N = 0 100400 bmi Minus N = 1 © את"ם - תרגול מס' 6

Branch -ים מותנים המתייחסים לדגל בודד (המשך) Base Code פקודה תנאי לקפיצה דגלים 102000 bvc Overflow is clear V = 0 102400 bvs Overflow is set V = 1 103000 bcc Carry clear C = 0 103400 bcs Carry set C = 1 © את"ם - תרגול מס' 6

השפעת הדגלים לביצוע קפיצות – דוגמה עבור bge תאור המצב V N האם קופצים op1  op2 V = 0  התוצאה נכונה N = 0  התוצאה חיובית Yes op1 < op2 N = 1  התוצאה שלילת 1 No V = 1  התוצאה שגויה N = 0  התוצאה חיובית op1 > op2 Not”” because N=1 © את"ם - תרגול מס' 6

C & V under Subtraction כבר ראינו את משמעות של הדגלים C ו-V עבור פעולת החיבור. כעת נלמד מה משמעותם כשמבצעים פעולת החיסור. V = 1, אם האופרנדים הם בעלי סימן הפוך וסימן התוצאה הוא כמו של האופרנד השני 0, אחרת C = 1, אם כדי לבצע פעולה חייבים לבצע השאלה (borrow) ל-MSB 0, אחרת © את"ם - תרגול מס' 6

C & V under Subtraction דוגמה 1 “borrow” C = 1 C cmp #7, #-7 1 - N Z V C 1 1 1 1 1 1 סימן התוצאה הוא כמו סימן האופרנד השני V = 1 התוצאה שלילית N = 1 התוצאה אינה 0 Z = 0 פקודה bhis bpl bge תנאי לבדיקה C= 0 N = 0 N = V האם מתבצעת קפיצה No No Yes © את"ם - תרגול מס' 6

C & V under Subtraction דוגמה 2 “borrow” C = 1 cmp #3, #-3 C 1 - N Z V C 1 1 1 סימן התוצאה אינו כמו סימן האופרנד השני V = 0 התוצאה חיובית N = 0 התוצאה אינה 0 Z = 0 פקודה bhis bpl bge תנאי לבדיקה C = 0 N = 0 N = V האם מתבצעת קפיצה No Yes Yes © את"ם - תרגול מס' 6

C & V under Subtraction דוגמה 3 אין “borrow” C = 0 cmp #5, #3 1 - N Z V C 1 סימני האופרנדים זהים V = 0 התוצאה חיובית N = 0 התוצאה אינה 0 Z = 0 פקודה bhis bpl bge תנאי לבדיקה C = 0 N = 0 N = V האם מתבצעת קפיצה Yes Yes Yes © את"ם - תרגול מס' 6

SOB (Subtract One and Branch) משתמשים בלולאות לא קיים בכל הדגמים של PDP-11 sob rn, A dec rn bne A  דוגמא: mov #3, r2 loop: ; the value of r2 ; should not be ; changed in ; the loop body sob r2, loop loop body הלולאה הזאת תתבצע 3 פעמים © את"ם - תרגול מס' 6

SOB - קידוד (PC)(PC) – 2*X הערות חשובות (מאד): שיטת המעון של R תמיד 0 בינארי 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 r x 1 7 X R אוקטלי opcode register positive unsigned offset הערות חשובות (מאד): שיטת המעון של R תמיד 0 הקפיצה תמיד אחורנית (PC)(PC) – 2*X © את"ם - תרגול מס' 6

קפיצות לא מותנות ע"י פקודת jmp jmp op מאפשרת קפיצות למרחק גדול הפקודה קופצת לכתובת האפקטיבית של האופרנד … jmp label pc … לכתובת הרשומה בR0 לאן נקפוץ בפקודות הבאות? … label jmp (r0) jmp r0 jmp 3000 jmp #3000 פקודה לא חוקית. אין לאופרנד כתובת אפקטיבית לכתובת 3000 למילה הבאה אחרי פקודת jmp. ערכה – 3000. בדרך כלל זו טעות. © את"ם - תרגול מס' 6

חידות – דוגמאות ממבחן נתונה התוכנית הבאה: CLR R0 LOOP: DEC R0 BNE LOOP HALT כמה פעמים מתבצעת הפקודה DEC ? 215 פעמים 216 פעמים 215 - 1 פעמים 216 - 1 פעמים אינסוף פעמים פעם אחת בלבד 000000 – 000001 = 177777 177777 – 000001 = 177776 …… 000001 – 000001 = 000000 216 פעמים © את"ם - תרגול מס' 6

שימו לב לשאלה – לא שואלים כמה פעמים BHIS תגרום לקפיצה חידות – דוגמאות ממבחן נתונה התוכנית הבאה: MOV #3, R0 LOOP: ADD #2, R0 BHIS LOOP HALT שימו לב לשאלה – לא שואלים כמה פעמים BHIS תגרום לקפיצה כמה פעמים מתבצעת הפקודה BHIS ? 215 - 1 פעמים 15 פעמים 214 - 1 פעמים 14 פעמים 216 - 1 פעמים אף אחת מהנ"ל 3, 5, 7, 11, 13, … , 177777 רק בהוספה הבאה C=1 BHIS קופצת כאשר C=0. הפקודה ADD תתבצע 215 – 2 פעמים ועוד פעם אחת כאשר BHIS לא גורמת לקפיצה. © את"ם - תרגול מס' 6

אופן פעולה של ROR ROR dst : dst C פעולה ROR (Rotate Right) מבצעת הזזה מעגלית של האופרנד ביט אחד ימינה כאשר דגל Carry הינו חלק מהמעגל LSB של האופרנד מועבר לדגל C של ה-PSW הערך הקודם של ה-Carry מועבר ל-MSB של האופרנד תוצאת פעולת ROR תלויה בדגל Carry, כלומר תלויה בפקודה שהתבצעה לפניה. הערה: באופן דומה עובדת הפקודה ROL (Rotate Left) © את"ם - תרגול מס' 6

R0 גדל ב-1 בזכות פעולה על בית Branch Lower קופצת אם C = 1 חידות – דוגמאות ממבחן נתונה התוכנית הבאה: MOV #177777, R0 TSTB (R0)+ LOOP: DEC R0 ROR R0 BLO LOOP HALT R0 גדל ב-1 בזכות פעולה על בית DEC אינה משנה דגל C Branch Lower קופצת אם C = 1 כמה פעמים מתבצעת הפקודה ROR ? פעם אחת 15 פעמים 215 - 1 פעמים אינסוף פעמים פעמיים אף אחת מהנ"ל אחרי TSTB בתוך R0: 000000 (C=0) אחרי DEC ראשון בתוך R0: 177777 (C אינו מושפע) אחרי ROR ראשון בתוך R0: 077777 (C=1) אחרי DEC שני בתוך R0: 077776 (C אינו מושפע) אחרי ROR שני בתוך R0: 137777 (C=0) © את"ם - תרגול מס' 6