1 / 30

מבנה מחשבים ספרתיים 234267

מבנה מחשבים ספרתיים 234267. תרגול מס' 1 : מנהלות חזרה על ארכיטקטורת ה- MIPS. אתר הקורס: http://webcourse.cs.technion.ac.il/234267 תרגילי בית: יינתנו 5 תרגילי בית במהלך הסמסטר 20% מגן (80% בחינה סופית) הגשה בזוגות 5- נקודות יורדו על כל יום איחור ספרי קורס:

adennison
Download Presentation

מבנה מחשבים ספרתיים 234267

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מבנה מחשבים ספרתיים234267 תרגול מס' 1: מנהלות חזרה על ארכיטקטורת ה- MIPS 234267 - October 2005

  2. אתר הקורס: • http://webcourse.cs.technion.ac.il/234267 • תרגילי בית: יינתנו 5 תרגילי בית במהלך הסמסטר 20% מגן (80% בחינה סופית) הגשה בזוגות 5- נקודות יורדו על כל יום איחור • ספרי קורס: • Hennessy & Patterson - Computer Architecture: A Quantitative Approach. • Hennessy & Patterson - Computer Organization and Design: The Hardware/ Software Interface 234267 - October 2005

  3. 0 0 0 m u x m u x m u x ID/EX 1 1 1 IF/ID WB M + EX Control + 4 Shift left 2 ALU Zero Instruction Memory result 0 m u x Read Address PC 1 6 Sign extend ALU Control 16 32 רגיסטרים (אוגרים) PCSrc RegWrite EX/MEM MEM/WB WB WB M MemWrite MemRead Branch RegWrite RegDst ALUSrc ALUop MemtoReg Data Memory Read reg 1 Read data 1 Read reg 2 Write Address Register File Instruction Read data 2 Read Data Write reg Read Address Write data Write Data 32 [15-0] [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  4. 32 R0 = 0 R1 R30 R31 32 32 F0 F1 F0 F2 F3 F2 F28 F29 F28 F30 F31 F30 רגיסטרים (אוגרים) • ישנם 32 רגיסטרים לשימוש כללי. רגיסטר R0 ערכו קבוע ושווה 0. • כמו כן ישנם 16 רגיסטרים של 64 סיביות עבור פעולות float אשר לחילופין ניתן להשתמש בכל אחד מהם כשני רגיסטרים של 32 סיביות. 234267 - October 2005

  5. אופני מיעון ב-MIPS • רגיסטר (register): האופרנד מאוחסן ברגיסטר • ADD $2,$3,$4; reg 2  reg3 + reg4 • מיידי (Immediate): האופרנד הוא קבוע (מקודד בקוד) גודל השדה הוא 16 סיביות עם סימן • ADDI $2,$3,15; reg 2  reg3 + 15 • בסיס + היסט (Base + Displacement): • האופרנד נמצא בזיכרון. הכתובת בזיכרון מחושבת ע"י הוספת שדה ההיסט לערך שבשדה רגיסטר • הבסיס • LW $2,105($3); reg 2  mem(Reg3 + 105) • יחסי למונה התוכנית (PC-relative): הערך מחושב ע"י חיבור הערך שב-PC לערך שדה ה-immediate (16 סיביות). מיועד אך ורק עבור branches. (קפיצה ביחס למקום הנוכחי) • BEQ $3,$4,15000; if reg3 == reg4 then PC  PC + 4 + 4*15000 234267 - October 2005

  6. פקודות MIPS נוספות • גישה לזיכרון, אכסן (Store) מילה בת 32 סיביות • SW $3,100($4); mem(100+reg4)  reg3 • גישה לזיכרון, טען (Load) מכתובת קבועה) שימו לב ש- reg0 = 0) • LW $4,8($0); reg4  mem(8 + 0) • Branch מותנה • BEQ $0,$1,Label1; if reg1 == 0 then jump to Label1 • השוואה (כאן לפי Set Less Than) • SLT $1,$2,$3 if reg2 < reg3 then reg1  1 else reg1  0 • BNE $0,$1,L2 if reg0 != reg1 then jump to L2 • (מאחר ו-reg0=0 צמד הפקודות יגרום לקפיצה אם reg2<reg3 אחרת המשך כרגיל) • קפיצות בלתי מותנות • קפיצת "PC – relative" J 10000 • JR $31 234267 - October 2005

  7. קידוד הפקודות • כל הפקודות בנות 32 סיביות – כלומר 4 בתים. • כל סוג מגדיר את החלוקה הפנימית בתוך אותן 32 סיביות: • ישנם שלושה סוגי פקודות: • R-type - register instructions • I-type - immediate • J-type - jumps • שדה ה-op (opcode) קבוע בגודלו ונמצא תמיד. הוא חיוני כדי לדעת מהו סוג הפקודה וכיצד לבצע את החלוקה הפנימית השונה בין פורמט לפורמט. 234267 - October 2005

  8. קידוד הפקודות • בפקודות מסוג R • שדה ה-op תמיד שווה 0 ואילו שדה ה-func אומר מהי הפקודה. • שדות ה-rs וה-rt עבור רגיסטר המקור, ושדה ה-rd עבור רגיסטר המטרה. • שדה ה-shamt (shift amount) מיועד לפקודה הזזת סיביות (שמאלה או ימינה) 234267 - October 2005

  9. קידוד הפקודות • בפקודות מסוג I • בפקודות load ופקודות עם שדה imm שדה ה-rs עבור רגיסטר הבסיס ושדה ה-rt עבור רגיסטר המטרה. • בפקודות store שדה ה- rs עבור רגיסטר הבסיס ושדה ה-rt מכיל את הערך לאחסון בזיכרון. • בפקודות branch, rs ו-rt עבור רגיסטרי המקור והקבוע מקודד את כתובת הקפיצה ביחס ל-PC 234267 - October 2005

  10. קידוד הפקודות • בפקודות מסוג J • קופצים אל הכתובת המתחילה משמאל ב-4 סיביות מה-PC (ה-segment בזיכרון)שלאחריהן 26 הסיביות שבשדה ה-address ו-2 סיביות אחרונות מימין שהן תמיד 00מאחר וכל הפקודות נמצאות בכתובות המתחלקות ב-4. 234267 - October 2005

  11. קונפיגורציות של ה-MIPS • single cycle - כל פקודה מבוצעת במחזור שעון יחיד בעל זמן מחזור ארוך מאוד. • multycycle - חלוקת הפקודות למספר שלבים ועבור כל פקודה לבצע בכל שלב חלק מהפעולות. רוב הפקודות עדיין משתמשות ב-4 מחזורי שעון לפחות (קצרים יותר). אין שיפור משמעותי. • Pipeline – מחלקים את ה- datapath הסדרתי לשלבים. כאשר פקודה מסוימת מסיימת את השלב הראשון ועוברת לשלב השני, פקודה חדשה נכנסת לשלב הראשון וכן הלאה. מתקבל מצב בו בכל מחזור שעון כל פקודה מתקדמת בשלב אחד. כלומר, בכל מחזור מסתיימת פקודה אחת ופקודה חדשה נכנסת לביצוע. 234267 - October 2005

  12. השלבים הבסיסיים בביצוע פקודות • כל פקודה (למעט נקודה צפה) ניתנת לחלוקה ל-5 שלבים בסיסיים: • 1. Fetch : • שליפת הפקודה לביצוע מהזיכרון • קידום מונה התוכנית לפקודה הבאה לביצוע. • אכסון הפקודה ברגיסטר זמני (IR) 234267 - October 2005

  13. 0 0 0 m u x m u x m u x ID/EX 1 1 1 WB M + EX Control + Shift left 2 ALU Zero Instruction Memory result 0 m u x Read Address PC 1 6 Sign extend ALU Control 16 32 Instruction Fetch PCSrc IF/ID EX/MEM RegWrite MEM/WB WB WB M MemWrite MemRead Branch RegWrite 4 RegDst ALUSrc ALUop Data Memory Read reg 1 MemtoReg Read data 1 Read reg 2 Write Address Register File Instruction Read data 2 Read Data Write reg Read Address Write data Write Data 32 [15-0] [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  14. השלבים הבסיסיים בביצוע פקודות • 2. decode: • שליפת ערכי הרגיסטרים המתאימים מתוך RF. • פענוח הפקודה ויצירת את אותות הבקרה שילוו את הפקודה בהמשך. • sign extension: הרחבה של האופרנד המקודד מ -16 סיביות ל- 32 סיביות. 234267 - October 2005

  15. 0 0 0 m u x m u x m u x ID/EX 1 1 1 IF/ID WB M + EX Control + Shift left 2 4 ALU Zero Instruction Memory result 0 m u x Read Address PC 1 6 Sign extend ALU Control 16 32 Instruction Decode PCSrc RegWrite EX/MEM MEM/WB WB WB M MemWrite MemRead Branch RegWrite RegDst ALUSrc ALUop Data Memory MemtoReg Read reg 1 Read data 1 Read reg 2 Write Address Register File Instruction Read data 2 Read Data Write reg Read Address Write data Write Data 32 [15-0] [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  16. השלבים הבסיסיים בביצוע פקודות • 3. execute: • ביצוע הפעולה הנדרשת על בסיס הערכים בערוצי המידע: • עבור פעולת ALU – ביצוע הפעולה הנדרשת • עבור גישה לזיכרון – חישוב הכתובת האפקטיבית • עבור הסתעפות (branch) – חישוב כתובת היעד וחישוב תנאי הקפיצה – מבצעים את החישוב על 2 האופרנדים מהרגיסטרים הנכנסים ל-ALU הראשי אשר מבצע פעולת חיסור.אם התוצאה היא 0 נדלק דגל ZERO וכך ידוע באם יש לקפוץ (BEQ). • חישוב כתובת היעד של הקפיצה. 234267 - October 2005

  17. 0 0 0 m u x m u x m u x ID/EX 1 1 1 IF/ID WB M + EX Control + Shift left 2 4 ALU Zero Instruction Memory result 0 m u x Read Address PC 1 6 Sign extend ALU Control 16 32 EXecute PCSrc RegWrite EX/MEM MEM/WB WB WB M MemWrite MemRead Branch RegWrite RegDst ALUSrc ALUop Data Memory MemtoReg Read reg 1 Read data 1 Read reg 2 Write Address Register File Instruction Read data 2 Read Data Write reg Read Address Write data Write Data 32 [15-0] [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  18. השלבים הבסיסיים בביצוע פקודות • 3. memory: • קריאה / כתיבה לזיכרון בפקודות Store / Load. • החלטה האם לקפוץ בפקודות branch. • שימו לב - Control Hazard: בכל שלב נכנסות פקודות חדשות ל- pipeline. עד שהבנו שצריך לקפוץ, אולי נכנסו פקודות שכלל אינן צריכות להתבצע. • 4. Write back: • אכסון התוצאה (מ-ALU או מהזיכרון) לרגיסטר היעד. 234267 - October 2005

  19. 0 0 0 m u x m u x m u x ID/EX 1 1 1 IF/ID WB M + EX Control + Shift left 2 4 ALU Zero Instruction Memory result 0 m u x Read Address PC 1 6 Sign extend ALU Control 16 32 MEMory \ WriteBack PCSrc RegWrite EX/MEM MEM/WB WB WB M MemWrite MemRead Branch RegWrite RegDst ALUSrc ALUop Data Memory MemtoReg Read reg 1 Read data 1 Read reg 2 Write Address Register File Instruction Read data 2 Read Data Write reg Read Address Write data Write Data 32 [15-0] [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  20. אותות הבקרה 234267 - October 2005

  21. 0 0 0 m u x m u x m u x ID/EX 1 1 1 IF/ID WB M + EX Control + 4 Shift left 2 ALU Zero Instruction Memory result 0 m u x Read Address PC 1 6 Sign extend ALU Control 16 32 אותות הבקרה PCSrc RegWrite EX/MEM MEM/WB WB WB M MemWrite MemRead Branch RegWrite RegDst ALUSrc ALUop Data Memory MemtoReg Read reg 1 Read data 1 Read reg 2 Write Address Register File Instruction Read data 2 Read Data Write reg Read Address Write data Write Data 32 [15-0] [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  22. ALU control, ALUop func 234267 - October 2005

  23. דוגמאות לערכי control lines עבור פקודות שונות: • דוגמא לקידוד offset של פקודת branch: • שאלה: אנו נמצאים בכתובת 700 (כתובת פקודת ה-branch) ורוצים לקפוץ לכתובת 800. מה עלינו לקודד? 234267 - October 2005

  24. שאלה: • ברצוננו להוסיף פקודה בשם addconst לסט הפקודות של ה- MIPS. הפקודה תבצע חיבור של רגיסטר לקבוע חסר סימן (unsigned). • תחביר הפקודה addconst R1,R2,const והפעולה המתבצעת היא R1=R2+const. הקבוע const הינו מספר חיובי בטווח (216-1) - 0. • קידוד הפקודה החדשה הוא מסוג: • R • I • J • לא ניתן לממש פקודה כזאת במעבד מסוג RISC • אף תשובה אינה נכונה • במידה וניתן לממש את הפקודה, מה השינוי שנדרש במבנה ה- MIPS ? 234267 - October 2005

  25. 0 0 m u x m u x ID/EX 1 1 IF/ID WB M + EX + 4 Shift left 2 ALU Zero Instruction Memory result 0 m u x Read Address PC 1 6 ALU Control 16 16 PCSrc EX/MEM RegWrite MEM/WB WB WB Control M MemWrite Branch MemRead RegWrite RegDst ALUSrc ALUop Data Memory Read reg 1 MemtoReg Read data 1 Read reg 2 Write Address 0 Register File Read data 2 Instruction m u x Read Data Write reg 1 Read Address 2 Write data Write Data Sign extend 32 32 [15-0] zero extend 32 [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  26. backups 234267 - October 2005

  27. PCSrc 0 0 0 m u x m u x m u x ID/EX EX/MEM RegWrite MEM/WB 1 1 1 IF/ID WB WB WB M M + EX Control MemWrite Branch MemRead RegWrite + 4 Shift left 2 RegDst ALUSrc ALUop Data Memory Read reg 1 MemtoReg Read data 1 ALU Read reg 2 Write Address Zero Instruction Memory Register File result Read data 2 Instruction Read Data 0 Write reg Read Address m u x Read Address PC Write data 1 Write Data 32 [15-0] 6 Sign extend ALU Control 32 16 [20-16] Rd\Rt Rd\Rt [15-11] RegDst 234267 - October 2005

  28. MIPS machine language 234267 - October 2005

  29. MIPS machine language (2) 234267 - October 2005

  30. Main MIPS machine language. Formats and examples are shown, with values in each field: op and funct fields from the opcode (each 6 bits), rs is a source register (5 bit), rt is also normally a source register (5 bits), rd is the destination register (5 bits), and shamt supplies the shift amount (5 bits). The field values are all in decimal. 234267 - October 2005

More Related