סמסטר אביב 2007 9.10.2007 טכניון מכון טכנולוגי לישראל - פתרון תכן לוגי 234262 מבחן סופי, מועד א' טור א' שם משפחה: שם פרטי: מס ת"ז:.1.2.3.4.5.6.7.8.9 נא לקרוא כעת והיטב את ההנחיות הבאות: המבחן מנוסח בלשון זכר ומכוון לנקבה וזכר כאחד. השימוש בכל חומר עזר אסור. כתוב כעת את שמך ואת מספר הסטודנט שלך בדף זה. את כל התשובות יש לכתוב במחברת זו. לא יחולקו מחברות טיוטה. במבחן זה 9 שאלות. שאלות 1-8 הן שאלות סגורות או שאלות "קופסה". יש לסמן את התשובה הנכונה לכל השאלות על גבי הטופס. בשאלות "קופסה" יש לכתוב את התשובה הנכונה אך ורק בתוך הריבוע המתאים. (אין צורך לנמק או לפרט את התשובות לשאלות 1-8 למעט היכן שנדרש במפורש). שאלה סגורה / קופסה שלא תסומן אף תשובה עבורה תזוכה ב- 2 נק'. ניתן לבחור שלא לענות על שאלה 9 ולקבל 7 נקודות. לא ניתן לצבור בדרך זו יותר מאשר 12 נקודות. בשאלות ברירה מרובה אין לסמן יותר מתשובה אחת. בכל מקרה של אי-בהירות: סימון יותר מתשובה אחת, סימון לא ברור וכדומה, לא תזוכה בניקוד כלשהו עבור השאלה המתאימה. במקרה שהנך סבור שיש יותר מתשובה אחת נכונה, סמן את התשובה ה"נכונה ביותר", לדעתך. גם על שאלה 9 יש לענות במחברת זו. משקל השאלות 1-8 הוא 9 נקודות כ"א. משקלה של שאלה סה"כ 105 נקודות. משך המבחן: 180 דקות. תכנן את זמנך היטב. 10. שים לב: בחצי השעה האחרונה לא יענה סגל הקורס על שאלות. 9 הוא 33 נקודות. שים לב, יש 11. במבחן זה יש 16 דפים כולל דף זה ולא כולל את הדף הקודם המיועד לסריקה אוטומטית. נא לוודא עכשיו שקבלת את כולם. בהצלחה! לשימוש הבודק 9 סופי 8 7 6 5 4 3 2 1
1. משטר סטטי נתונה פונקציית המעבר הסטטית של רכיב מסויים: רשום מתחים Vol,Vil,Voh,Vih עבורם מתקבל משטר סטטי שבו הרכיב מהווה שער לא טריוויאלי (סמן X בכל המשבצות אם לא ניתן): V ol = 3 V il = 3.5 V ih = 4.5 V oh = 5 שימו לב: השאלה אינה טריוויאלית כפי שהיא עלולה להיראות. הפתרון הנ"ל אינו יחיד. התקבל כל פתרון תקין שבו: המתחים בסדר הנכון 1. קיימים שולי רעש 2. f(vin) Voh מתקיים vin<vil גורר שלכל - f(vil) Voh.3 f(vin) Vol מתקיים vin>vih גורר שלכל - f(vih) Vol.4
pipeline.2 במערכת Pipeline (טהור) יש 5 תחנות. ה- Throughput של המערכת הוא השהיית הרגיסטרים היא.15ns 1. 50ns קצב השעון במערכת הוא הקצב המקסימאלי האפשרי הנקבע (כזכור) ע"י התחנה האיטית ביותר. בכל אחד הסעיפים הבאים קבע נכון או לא נכון. שים לב: הסעיפים הם בלתי תלויים. לא יינתן ניקוד במידה ויסומנו 2 תשובות שגויות. לא ניתן להניח דבר על מבנה הלוגיקה הצרופית למעט שהיא חוקית, כלומר, אין בה רגיסטרים או מעגלים צרופיים. (1 (2 ה- Latency של המערכת הוא 250. ns אם נבצע רתזמון כך שהמערכת תכיל 10 תחנות במקום 5, אז ה- Latency בהכרח יגדל. נכון לא נכון אם במצב המקורי הייתה תחנה אחת עם לוגיקה צרופית שהשהייתה 35ns והשאר עם לוגיקה צרופית עם השהייה זניחה ולאחר רתזמון הפייפליין מאוזן, ההשהייה הצרופית בכל תחנה היא בערך.4ns (3 אם נבצע רתזמון כך שהמערכת תכיל 3 תחנות במקום 5, אז ה- Latency בהכרח יקטן. לא נכון במקרה שבכל התחנות יש רכיב צרופי שלא ניתן לחלוקה של.35ns ויוצרים תחנה אחת עם כל הלוגיקה והשאר בלי. (4 (5 אם נבצע רתזמון כך שהמערכת תכיל 17 תחנות במקום 5, אז ה- Latency בהכרח יגדל. 17 רגיסטרים ללא לוגיקה צרופית יתנו pipeline עם.latency>250ns אם נבצע רתזמון כך שהמערכת תכיל תחנה אחת במקום 5, אז ה- Latency בהכרח יקטן. במקרה הגרוע ביותר:.15+35*5=190ns נכון נכון
IPS.3 במעבד ה- IPS הבנוי בשיטת ה- ulti-cycle (דיאגראמה 5.2), ההשהיה הצירופית של Register File (בקריאה ולפני כתיבה), emory ו- ALU שווה ל- וכן השהיית האוגרים, זניחה. המעבד עובד במחזור שעון. 0.9 µ s השהיית הבוררים, T = 1µ s בייצור קרתה תקלה, שגורמת להשהיה הצירופית של הזיכרון unit) (memory בקריאה להיות. 1.01 µ s רוצים להשאיר את תדר השעון ללא שינוי. לצורך זה, משנים את הבקר (ללא שינוי של חלוקה ליחידות oore ו-.(ealy לא ניתן לשנות את מסלול הנתונים. לא ניתן להניח שום הנחה על הפקודה שהתבצעה קודם. יש לסמן את התשובה הראשונה הנכונה: (1 (2 (3 (4 (5 (6 ניתן לבצע כל הפקודות ללא שינוי בבקר, כי הפרש של 1% ב- Tpd הוא זניח. ניתן לבצע כל הפקודות ללא שינוי בבקר מסיבה אחרת. כל הפקודות ניתנות לביצוע אך נדרשת תוספת של שני מחזורי שעון לביצוע כל פקודה. כל הפקודות ניתנות לביצוע אך נדרשת תוספת של מחזור שעון אחד לביצוע כל פקודה. כל הפקודות ניתנות לביצוע אך נדרשת תוספת של מחזור שעון אחד לביצוע פקודות קפיצה BEQ) ו- J ) ופקודות גישה לזיכרון SW) ו- LW ). ניתן לבצע פקודות חישוביות R ו- I ללא שינוי. כל הפקודות ניתנות לביצוע אך נדרשת תוספת של מחזור שעון אחד לביצוע פקודות חישוביות R ו- I ופקודת,SW נדרשת תוספת של שני מחזורי שעון לביצוע,LW (7 (8 (9 (10 פקודות קפיצה BEQ) ו- J ) ניתנות לביצוע ללא שינוי. כל הפקודות ניתנות לביצוע אך נדרשת תוספת של מחזור שעון יחיד, למעט LW שלביצועה נדרשים שני מחזורים נוספים. כל הפקודות ניתנות לביצוע בתוספת מחזור שעון אחד, חוץ מ- LW, שאינה ניתנת לביצוע כלל. אף פקודה לא ניתנת לביצוע. אף תשובה לא נכונה בקריאה מזיכרון לאוגר IR (מחזור ( נצטרך להוסיף מחזור (וזה לכל הפקודות) קריאה מזיכרון של LW לא תדרוש תוספת מחזור, כי הכניסה WDATA של RF תהיה יציבה במשך 0.99 מ"ש וזה מספיק. תשובה: כל הפקודות דורשות תוספת של מ"ש אחד. הערה: התקבלה גם התשובה מס' 5, עקב ההצעה לבצע את המחזור הראשון של לפקודה הבאה בסוף הפקודה הנוכחית. בפקודות מסוג I,R ניתן לבצע זאת במקביל לכתיבה ל-
RF וכך אין צורך בתוספת מחזור שעון. אמנם קיים הנושא של ביצוע הפקודה הראשונה לאחר הדלקת המחשב, אבל בכל מקרה זהו נושא מורכב עם בעיות רבות אחרות (יתכנו ערכים לא לוגיים ברגיסטרים, למשל) שאינו נכלל בקורס זה. 4. מניעת מעגלים צרופיים במערכת הבנויה בשיטת בקר מילי + מסלול נתונים יש אותות בקרה וסטאטוס רבים, מתוך אותות הבקרה יש בדיוק 2 אותות מותנים: X ו- Y. גם הבקר וגם מסלול הנתונים עומדים בדרישות של אותו משטר דינאמי. בכל אחד מהסעיפים הבאים יש נתון נוסף ומסקנה. אין להניח כל הנחה נוספת על מימוש הבקר וה-.DP יש לקבוע בכל סעיף נכון או לא נכון. שים לב: הסעיפים הם בלתי תלויים. לא יינתן ניקוד במידה ויסומנו 2 תשובות שגויות. הערה: במהלך המבחן הובהר שאם אות נכנס כ- load לרגיסטרים הוא אינו מגיע לשום רכיב אחר מלבד הרגיסטרים (כניסת ה-.(load (1 נתון שגם X וגם Y נכנסים כ- load לרגיסטרים במסלול הנתונים. מסקנה: לא יתכן שיש במערכת מעגל צירופי אולי הבקר וה- DP ממומשים ב- RO לא נכון (2 נתון שאין בתוך מסלול הנתונים מסלול צירופי מ- X לשום אות סטאטוס. מסקנה: לא יתכן שיש במערכת מעגל צירופי אולי הבקר וה- DP ממומשים ב- RO לשום אות סטאטוס, ואין מ- Y לא נכון (3 (4 נתון שכל אותות הבקרה נכנסים למסלול הנתונים כאותות load לרגיסטרים מסקנה: לX מ- לא יתכן שיש במערכת מעגל צירופי כל האותות נכנסים ליחידות מור. המערכת מקיימת את קריטריון מילי..A - ל Y נכון נתון שקיים במערכת אות סטאטוס A, ושקיימים במסלול הנתונים מסלולים צירופיים - A ומ- מסקנה: במערכת יש בוודאות מעגל צירופי אם A לא משפיע על X,Y והבקר אינו ממומש כ-.RO לא נכון
SINGLE CYCLE IPS.5 בנסיון לשפר את מערכת ה single cycle הציע סטודנט להוסיף instruction register זכרון הפקודות. הבקר נשאר ללא שינוי, והקלטים של הבקר נלקחים ממוצא ה- מיד לאחר instruction.register חווה דעתך על יכולות המערכת החדשה לבצע תכניות הכוללות את הפקודות ADD, ADDI,.LW, SW, BEQ הערה: במהלך המבחן הובהר שהכוונה למספר הפקודות מתוך החמש הנ"ל שיכולות להיות משולבות בתכנית כלשהי, כך שאם נריץ את התכנית על המעבד עם ה-,IR התכנית תרוץ בצורה תקינה. המערכת יכולה לבצע באופן תקין כל תכנית הכוללת 4 מהפקודות המערכת יכולה לבצע באופן תקין כל תכנית הכוללת 2 מהפקודות המערכת יכולה לבצע באופן תקין כל תכנית הכוללת את כל 5 הפקודות המערכת יכולה לבצע באופן תקין כל תכנית הכוללת 3 מהפקודות המערכת יכולה לבצע באופן תקין כל תכנית הכוללת רק פקודה אחת המערכת לא תוכל לתפקד כלל (1 (2 (3 (4 (5 (6 לשימושך מבנה ה- DP של Single Cycle IPS בעמוד הבא. כל הפקודות יתבצעו בצורה תקינה מחזור אחד מאוחר יותר מאשר ללא ה-,IR למעט.BEQ אם נשים את BEQ בתכנית, תטען ל- IR הפקודה שאחריה, גם אם אמורים לקפוץ, מה שיגרום לביצוע שגוי של התכנית. בנוסף, התכנית תקפוץ בפקודת BEQ לפקודה אחת אחרי המקום אליו רצינו לקפוץ 4*SX(I) BEQ address + 8 + היות ובעת ביצוע הפקודה ה- PCכבר קודם ב- 4.
PC 4 Add RegWrite Shift left 2 Add 0 u x 1 PCSrc Read Instruction address [31-0] Instruction memory I [25-21] I [20-16] I [15-11] 0 u x 1 Read register 1 Read register 2 Write register Write data Read data 1 Read data 2 Registers 0 u x 1 ALU Zero Result ALUOp Read address Write address Write data emwrite Read data Data memory emtoreg 1 u x 0 RegDst ALUSrc emread I [15-0] Sign extend
.T pd (A)=X (ns) 6. משטר דינאמי נתון רכיב צירופי A עם 3 כניסות ושתי יציאות שהשהייתו נבנתה המערכת הבאה. א. אם לא ידוע המבנה של רכיב A, מהו זמן המחזור המינימלי שבו מובטח שהמערכת תעבוד בצורה תקינה (כפונקציה של X)? 4X+Tpd(FF) נתקבלו גם תשובות שהזניחו את השהיית ה- FF בסעיפים ב-ד נתון גם המבנה של רכיב A: השהיות השערים מופיעות בטבלה הבאה: ב. מהו הערך של X? שער NOT XOR AND T pd (ns) 35 1 2 X= 2*Tpd(NOT) = 70ns ג. מהו זמן המחזור המינימלי שבו מובטח שהמערכת תעבוד בצורה תקינה? T pd ()= 4*Tpd(NOT) = 140ns ד. נניח שהמתרגל האחראי עצלן ובבחינת מועד ד' תינתן שאלה מאוד מאוד דומה לשאלה הזו, רק עם מימוש אחר של רכיב A. מה היחסים האפשריים ( / / X אי אפשר לדעת ( < / > / = / בין התשובה שתתקבל במועד ד' בסעיף א' כשמציבים בה את X מסעיף ב' (מועד ד') לבין התשובה שתתקבל במועד ד' בסעיף ג'? סעיף א' משטר הבורות מביא אותנו לפתרון שייתכן ופסימי מדי. סעיף ג'
7. אריתמטיקה מהירה הסטודנט ג. גאון שם לב שבדיאגראמה של ה- carry look ahead קיים המסלול הבא: אורך מסלול זה הוא כמעט פי 2 ממספר הסיביות של כל אחד מהמספרים המחוברים. היות וכל היחידות הן צירופיות, טוען מר ג' שקיים מסלול שהשהייתו היא O(n) ולכן carry look ahead עובד בזמן מחזור שתלוי ב- n בדיוק כמו.carry ripple adder האם טענתו של מר ג' נכונה? הסבר לרשותך 4 שורות, תשובות ארוכות יותר או בכתב לא קריא לא ייבדקו. סיגנלי ה- generate וה- propagate אינם תלויים ב- carry ולכן המסלול הנ"ל אינו קיים.
מ. 8 ערכות סיסטוליות נתונה מערכת הבאה: T pd של כל יחידה צירופית היא,1ns השהית הרגיסטרים זניחה. א) מהו זמן המחזור המינימאלי ללא רתזמון? 18*Tpd(unit)=18ns ראו המסלול הכחול. ב) מהו זמן המחזור המינימאלי אחרי רתזמון? 4*Tpd(unit)=4ns קיים מעגל מכוון של 4 יחידות עם רגיסטר יחיד (בסגול). ע"י החתכים המסומנים בירוק ולאחריהם אלה המסומנים בורוד (או חתך יחיד השקול לשניהם) ניתן להגיע לזמן מינימלי זה.
.9 IPS פתוחה מטרת השאלה היא להוסיף ל- IPS שתי פקודות חדשות מסוג R: ultiadd Ri, Rj, Rk, #N ultisub Ri, Rj, Rk, #N משמעות הפקודות היא שהאופרנד השני ) k R) מחובר או מחוסר מהאופרנד הראשון ) j N R) פעמים (N הוא מספר אי שלילי כלשהו), למשל תוצאת הפקודה של R23+4*R31 ירשם ב- R12. והתוצאה נרשמת ל-.R i R31, #4 ultiadd R12, R23, תהיה שערך תנאים נוספים: לא ניתן להניח ש- j. i כלומר, הפקודה ultiadd R12, R12, R12, 4 היא תקינה. k ALU מסוגל לבצע רק חיבור A+B וחיסור A-B כאשר A היא הכניסה העליונה ו- B היא הכניסה התחתונה שלו, וכן פעולות לוגיות,AND).(XOR,OR אסור לפקודה לשנות ערכים של רגיסטרים שאינם רגיסטר היעד ) i R). אין להגדיל את זמן מחזור השעון או לקלקל פקודות קיימות. על הקידוד של שתי הפקודות החדשות להשתמש ב- Opcode=63. השנוי צריך לתמוך בתכניות שמשתמשות בשתי הפקודות החדשות בנוסף לכל הפקודות הקיימות. לצורך שינוי זה נתונים לבחירתך כמות לא מוגבלת של רכיבים מהסוגים הבאים שעלותם מצוינת בטבלא. הרכיב בורר (אדיש) "k ל 1" ברוחב n ביט רגיסטר ברוחב n ביט ALU (זהה ל- ALU משרטוט 5.2) העלות nk ש"ח n ש 3 "ח 300 ש"ח סך כל עלות השינוי הוא הפרש המחירים בין המערכת המקורית לחדשה. לדוגמא, הרחבת בורר של "2 ל 1" ברוחב 32 ביט לבורר של " ש"ח. הדברים הבאים ניתנים בחינם: ל 3 1" ברוחב 32 ביט עולה 32 חיוט (חיבור הרכיבים) הקבועים הבינריים 0 ו 1 כל שינוי בבקר
.1.2.3 סדר החשיבות של הקריטריונים לניקוד השאלה (לפי סדר יורד) הם: נכונות עלות שינוי מינימאלית. מספר מחזורי השעון של ביצוע הפקודה החדשה יהיה מינימאלי. א) הציע קידוד לפקודות: OP=63 ב) מהו התחום האפשרי של N? ג) תארי את השינוי במסלול הנתונים משרטוט 5.2 שיאפשר את ביצוע הפקודה. יש לתאר את השינוי במפורט על השרטוט המצורף לבחינה. ד) על תרשים הזרימה של מסלול הנתונים (5.1), שרטטו את החלק המבצע פקודה זו. אין צורך בהסברים אבל יש להקפיד על שרטוטים ברורים. אני בוחר שלא לענות על השאלה ולקבל 7 נק' פתרון אפשרי: אם ניצמד למבנה פקודה מסוג R, יש לנו בדיוק 5 ביט לשמירת N: הביטים של SHAT כי את ל- SUB ADD אנו נצטרך להבדיל בין FUN נצטרך רגיסטר בן 5 ביט לשמירת ה- NU, ונשמור את תוצאת הביניים ב- PC (את הערך של PC נשמור ב- BPC ). נרחיב 5 UX ונוסיף לו כניסה שבה ביטים [2..6] באים מהרגיסטר של,NU והשאר הם אפסים. בנוסף, נוסיף UX ברוחב סה"כ המחיר: 3*5 = 10 + 32 +.47 5 ביט שיבחר בין שדה t של IR לבין 0. OP=63 S=j T=k D=i NU FUN= ADD/SUB NU IR[10..6] + DECODE שימו לב שפעולה זאת מתבצעת לכל הפקודות כי בשלב ה- decode לא ניתן לדעת מה הפקודה המפוענחת PC PC+ 4 BPC PC 4.RF יש צורך במחסור שלם עד לעדכון יציאות ה- REG2 0 מחזורים: (1 (2 (3 (4 (5
ב 7 א 7 ALUOut OR( REG1, REG2), PC ALUOut (כאן תוצאת החישוב היא הערך של,Rs ולכן PC מקבל ערך של (Rs,ALUout PC+Rt ( ) 0 אז מבצעים (אם ALUout 4* NU REG2 ועוברים ל- ) PC BPC,Rd Aluout ( ) REG2 Rt ALUOut FUN ( PC, REG2), PC ALUOut כאן מתבצע חיבור או חיסור כפונקציה של FUN NU ALUOut[6..2], ALUout 4* NU 4 כאן ערך של NU קטן ב- 1 REG2 0 ALUout (אם לא 0, עוברים ל-( 9 ), אחרת ממשיכים ל-( 13 )) 4NU REG2 ALUOut OR( PC, REG2) ועוברים ל- Rd ALUOut (6 (7 (8 (9 (10 (11 (12 (13 (14 זהו פתרון מינימאלי שנעשה ללא לחץ זמן. התקבלו גם פתרונות בהם במקום לבצע OR עם R0 הוסף הקבוע (32 0 ביט), במקום לבצע חיבור וחיסור של 4 הוסף הקבוע (32 1 ביט). התקבלו גם פתרונות בהם נלקח ביט יחיד להבדיל בין multi-add ו- multi-sub מה שמשאיר 10 ביטים ל- N. טעויות נפוצות: 1. כתיבה ל- Ri במהלך הריצה. לא מאפשרת לפתור עבור המצב שבו.Ri=Rj=Rk 2. לא לבצע הרחבה של Num ל- 32 ביט. 3. שימוש ב- sign extension נוסף בלי להסביר איך הוא ממומש (ניתן ב- UX וניתן ע"י חיבור קווים). בפועל אין צורך ב- sign extension כי N הוא אי שלילי...
תרשים 5.2 מבנה ה- (multy cycle) IPS B P C C2 E R E A D E W R I T E ZERO C1 6 IR[OP] 12 IR[OP+FUN] R E G W R I T E ZERO C3 2 0 1 P C 4 PC[31:28] 2 ADDR WDATA E Eout 0 0 25 2 IR[XI] 26 I R 0 NU 5 IR[s] 5 5 IR[t] 5 IR[d] 3 4 16 IR[I] NREG1 NREG2 WNREG WDATA SIGN EXT REG FILE NU*4 (extended to 32 bit) R s R t 4 5 4 6 A L U ALUout ALUout ALUout[6:2]
5.1: תרשים זרימה של מסלול הנתונים ל- IPS IR E(PC) PC PC+4 REG2 Rt ;REG1 Rs BPC PC + 4 SX(I ) DECODE OP = LW or SW I מסוג OP R מסוג OP OP= BEQ ALUout Rs + SX(I) (כתיבה בזיכרון ( E(ALUout) Rt OP= SW OP= LW (קריאה) E(ALUout) Eout Rt Eout ALUout f (Rs, SX(I)) ALUout f (Rs, Rt) IR[FUN] מצוין ב f Rd ALUout IR[OP] מצוין ב f Rt ALUout ALUout Rs Rt IF(Rs=Rt) PC BPC OP= J PC[27:0] 4 XI
5.3: דיאגראמת המצבים של הבקר ל- IPS 2=0, Eread, IRLOAD 5=0, 6=2, ALUOP= ADD 1=1, PCLOAD 5=0, 6=3, ALUOP= ADD BPCLOAD DECODE OP = LW or SW 5=1, 6=1 ALUop= ADD כל האותות הקודמים 2=1 Eread כל האותות הקודמים 2=1 Ewrite OP= SW OP= LW כל האותות הקודמים 3=0, 4=0 REGwrite I מסוג OP 5=1, 6=1, ALUOP = f IR[OP] מצוין ב f כל האותות הקודמים 3=0, 4=1 REGwrite R מסוג OP 5=1, 6=0 ALUOP= f IR[FUN] מצוין ב f כל האותות הקודמים 3=1, 4=1 REGWRITE OP= BEQ 5=1, 6=0 ALUOP= SUB 1=0 PCLOAD = ALUZERO OP= J 1=2 PCLOAD