330 likes | 343 Views
שלבי ביצוע הוראת מכונה. (1) FETCH = קרא הוראה מהזיכרון ע"פ הכתובת שמכיל ה- PC . (2) DECODE = פענח את הפקודה וקרא את האוגרים הנחוצים (אחד או שניים). (3) EXECUTE = בעזרת ה- ALU חשב את התוצאה, או כתובת רצויה.
E N D
שלבי ביצוע הוראת מכונה (1) FETCH = קרא הוראה מהזיכרון ע"פ הכתובת שמכיל ה-PC. (2) DECODE = פענח את הפקודה וקרא את האוגרים הנחוצים (אחד או שניים). (3) EXECUTE = בעזרת ה-ALUחשב את התוצאה, או כתובת רצויה. (4) MEMORY = השתמש בתוצאה לבצע במידת הצורך: או טעינה לזיכרון (Store) או קריאה מהזיכרון (Load). (5) WRITE BACK = בצע במידת הצורך טעינה לאוגר.
falling edge cycle time rising edge במשך כל מחזור השעון קוראים בסוף השעון כותבים קווי הבקרה - מיוצרים על פי השעון, כל עליית שעון תשנה בעקבותיה את קווי הבקרה (אם נדרש)
MIPS תיאור מפושט של מעבד החיבורים המתוארים תומכים בכל שלבי פקודות R-typeו- I-type אנו נתמוך בפקודות: add, sub, or, xor, and, slt, lw, sw, beq, j כמובן שנצטרך לדעת כיצד מוסיפים פקודות נוספות כמו למשל: bne, addi, jal, jr
חלקים בסיסים של המחשב הדרושים לשלב ה-fetch: Instruction Address Instruction Instruction Memory Sum Add כמובן שדרוש זיכרון פקודות , רגיסטר לשמירת הכתובת וכן adderלחשוב הכתובת הבאה
FETCH -שלב ה Add 4 4 PC Read address Instruction Instruction memory
[25:21]=Rs [20:16]=Rt [15:11]=Rd 5 5 5 ck A CPU capable of R-type instructions only 4 Adder [31:26] 6 Instruction Memory PC [5:0]=funct 6
יחידת הרגיסטרים. יחידה זו דרושה לשלב ה-decode(ולשלב ה-write back) Read register 1 Read data 1 Read 2 מספרי האוגרים register Registers Write Read register data 2 Write Data Data
ALU result Arithmetic Logic operation ALU operation Read ALU operation register 1 Read data 1 Zero Read register 2 Instruction Registers ALU Write ALU Read result register data 2 ALU Write Data הפעולה הבסיסית שנדגים הנה פקודת R-type
[25:21]=Rs [20:16]=Rt [15:11]=Rd 5 5 5 ck ck A CPU capable of R-type instructions only 4 Adder [31:26] 6 Reg File Instruction Memory PC ALU [5:0]=funct 6
[25:21]=Rs [20:16]=Rt [15:11]=Rd 5 5 5 ck ck A CPU capable of R-type instructions only 4 Adder [31:26] 6 Reg File Instruction Memory PC ALU [5:0]=funct 6
The internal structure of the Register File Rd reg 1 (= Rs) 32 5 32 32 32 32 Read data 1 write data 32 32 32 Rd reg 2 (= Rt) 5 32 32 32 Read data 2 32 32 Wr reg (= Rd) 5 E RegWrite קוראים משתי היציאות בוזמנית ערכים של שני רגיסטרים שונים כותבים לאחד הרגיסטרים האחרים (בעליית השעון הבאה)
[25:21]=Rs [20:16]=Rt [15:11]=Rd 5 5 5 ck ck A CPU capable of R-type instructions only 4 Adder [31:26] 6 RegWrite Reg File Instruction Memory PC ALU
[25:21]=Rs [20:16]=Rt [15:11]=Rd 5 5 5 ck ck A CPU capable of R-type instructions only Instruction Memory Reg File PC ALU
[25:21]=Rs [20:16]=Rt [15:11]=Rd 5 5 5 ck ck A CPU capable of R-type instructions only 4 Instruction Memory Reg File ALU PC
[25:21]=Rs [20:16]=Rt [15:11]=Rd 5 5 5 ck ck A CPU capable of R-type instructions only 4 Adder [31:26] 6 RegWrite [5:0]=funct 6 ALU control Reg File Instruction Memory PC ALU
Load,Store בניית פעולות Write Read address Read data Write address Data Write memory data Read כאן נדרש זיכרון ל- dataממנו נקרא ואליו נכתוב כמו כן יש לבצע sign extensionשל ה- immשהוא רק 16bit
[25:21]=Rs [20:16]=Rt 5 5 ck ck A CPU capable of lw instructions only 4 Adder [31:26] 6 add RegWrite=1 Reg File Data Memory Instruction Memory PC ALU Address D. Out 5 [15:0] 16 Sext 16->32
[25:21]=Rs [20:16]=Rt 5 5 ck ck A CPU capable of lw instructions only 4 Adder [31:26] 6 add RegWrite=1 Reg File Data Memory Instruction Memory PC ALU Address D. Out 5 [15:0] 16 Sext 16->32
[25:21]=Rs [20:16]=Rt 5 5 ck ck A CPU capable of lw instructions only 4 Adder [31:26] 6 add RegWrite=1 Reg File Data Memory Instruction Memory PC ALU Address D. Out 5 [15:0] 16 Sext 16->32
[25:21]=Rs [20:16]=Rt 5 5 ck ck A CPU capable of lw & sw instructions only 4 MeWrite=1 Adder [31:26] 6 add RegWrite=0 Reg File Data Memory Instruction Memory PC ALU Address 5 D.In [15:0] 16 Sext 16->32
[25:21]=Rs [20:16]=Rt [25:21]=Rs [15:11]=Rd 5 5 5 5 ck ck A CPU capable of R-type & lw instructions (principle) 4 Adder [31:26] 6 add RegWrite [5:0]=funct 6 ALU control Reg File Data Memory Instruction Memory PC ALU Address 5 [15:0] 16 Sext 16->32
[25:21]=Rs [20:16]=Rt [25:21]=Rs 5 5 5 ck ck A CPU capable of R-type & lw instructions 4 Adder [31:26] 6 add RegWrite [5:0]=funct 6 ALU control Reg File Data Memory Instruction Memory PC ALU Address D. Out 5 Rd [15:0] 16 Sext 16->32
[25:21]=Rs [20:16]=Rt [25:21]=Rs 5 5 5 ck ck A CPU capable of R-type & lw/sw instructions 4 MemWrite Adder [31:26] 6 add RegWrite [5:0]=funct 6 ALU control Reg File Data Memory Instruction Memory PC ALU Address D. Out 5 Rd D.In [15:0] 16 Sext 16->32
:Branch אלמנטים דרושים להוספת PC+4משלב ה- Fetch In addresses, we always shift left by two bits Adder Sum Shift Branch Read left 2 Target register 1 Read Read data 1 register 2 Registers Instruction Write Zero register מועבר Read ALU Write data 2 ליחידת Data הבקרה כתוצאה 16 32 Sigh הלוגית Extend של ההשוואה
ALU result Shift left 2 Read Read register 1 address Read Read register 2 address Read M ALU Registers data result u Write Instruction M Write x register address memory u Write x Data Write data Sign extend שילוב כל הפקודות M u x Add 4 ADD Write PC Read Zero data 1 Instruction Read ALU data 2 Data memory Read 16 32
איפה ה- CPU? Instruction Memory CPU PC Data Memory
קווי בקרה P C S r c M u Add A d d x ALU result 4 Shift left 2 R e g i s t e r s A L U o p e r a t i o n R e a d 3 M e m W r i t e R e a d r e g i s t e r 1 A L U S r c P C R e a d a d d r e s s R e a d d a t a 1 M e m t o R e g r e g i s t e r 2 Z e r o I n s t r u c t i o n A L U A L U W r i t e R e a d R e a d A d d r e s s r e s u l t r e g i s t e r d a t a 2 M d a t a I n s t r u c t i o n M u u W r i t e m e m o r y x D a t a x d a t a m e m o r y W r i t e R e g W r i t e d a t a 3 2 1 6 S i g n M e m R e a d e x t e n d
0 M u x A L U A d d 1 r e s u l t e g D s t 4 I n s t r u c t i o n [ 3 1 – 2 6 ] C o n l t r o A L U S r c R e a d r e g i s t e r 1 R e a d d a t a 1 R e a d 0 R e g i s t e r s R e a d 0 W r i t e M d a t a 2 r e g i s t e r u x W r i t e 1 d a t a 0 1 6 3 2 I n s t r u c t i o n [ 1 5 – 0 ] Control A d d S h i f t l e f t 2 R B r a n c h M e m R e a d M e m t o R e g A L U O p M e m W r i t e R e g W r i t e I n s t r u c t i o n [ 2 5 – 2 1 ] R e a d P C a d d r e s s I n s t r u c t i o n [ 2 0 – 1 6 ] Z e r o r e g i s t e r 2 I n s t r u c t i o n A L U A L U [ 3 1 – 0 ] d R e a A d d r e s s r e s u l t 1 a d a t I n s t r u c t i o n M M u m e m o r y u I n s t r u c t i o n [ 1 5 – 1 1 ] x D a t a x 1 m e m o r y W r i t e d a t a S i g n e x t e n d A L U c o n t r o l I n s t r u c t i o n [ 5 – 0 ]
ALU control ALU control output000 AND001 OR010 add110 subtract111 set-on-less-than (sign of rs-rt -> rd) 00 = lw, sw01 = beq, 10 = arithmetic ALUop
פקודת ה- jump פירוש הפקודה: J 101…101111011 הפקודה הבאה נמצאת בכתובת 111111011…1001 4 bits 26 bits 2 bits : כתובת קפיצה במילים 101 … 101111011 : כתובת קפיצה בבתים 101 … 101111011 00 0110 101 … 101111011 : תוספת 4 ביטים אחרונים 0110 101 … 101111011 00 : הקפיצה הסופית
J u m p a d d r e s s [ 3 1 – 0 ] I n s t r u c t i o n [ 2 5 – 0 ] 1 M P C + 4 [ 3 1 – 2 8 ] u x A L U A d d r e 4 n s t r u c t i o n [ 3 1 – 2 6 ] C r o n t o l 0 0 M 1 M u M u x u x 1 x 1 0 1 6 3 2 I n s t r u c t i o n [ 1 5 – 0 ] S i g n e x t e n d A L U c o n t r o l Jump S h i f t l e f t 2 2 6 2 8 0 M u x 1 0 s u l t A d d S h i f t R e g D s t l e f t 2 J u m p B r a n c h M e m R e a d I M e m t o R e g A L U O p M e m W r i t e A L U S r c R e g W r i t e I n s t r u c t i o n [ 2 5 – 2 1 ] R e a d R e a d r e g i s t e r 1 P C R e a d a d d r e s s d a t a 1 I n s t r u c t i o n [ 2 0 – 1 6 ] R e a d Z e r o r e g i s t e r 2 I n s t r u c t i o n R e g i s t e r s A L U R e a d A L U [ 3 1 – 0 ] R e a d W r i t e d a t a 2 A d d r e s s r e s u l t d a t a I n s t r u c t i o n r e g i s t e r m e m o r y I n s t r u c t i o n [ 1 5 – 1 1 ] W r i t e D a t a d a t a m e m o r y W r i t e d a t a I n s t r u c t i o n [ 5 – 0 ]