234267
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

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


  • 94 Views
  • Uploaded on
  • Presentation posted in: General

מבנה מחשבים ספרתיים 234267. תרגול מס' 1 : מנהלות חזרה על ארכיטקטורת ה- MIPS. 32. R0 = 0. R1. R30. R31. 32. 32. F0. F1. F0. F2. F3. F2. F28. F29. F28. F30. F31. F30. רגיסטרים (אוגרים). ישנם 32 רגיסטרים לשימוש כללי. רגיסטר R0 ערכו קבוע ושווה 0.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


234267

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

תרגול מס' 1:

מנהלות

חזרה על ארכיטקטורת ה- MIPS

234267 - October 2005


234267

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 (0Fשמיש)

  • ניתן להשתמש בכל אחד מהם כשני רגיסטרים float של 32 סיביות.


234267

אופני מיעון ב-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

פקודות MIPS נוספות

  • גישה לזיכרון, אכסן (Store) מילה (32 סיביות) לכתובת קבועה) שימו לב ש- reg0 = 0)

  • SW $3,100($0);mem(100+reg0)  reg3

  • טעינת / העתקת ערך אוגר (אין פקודת MOV מיוחדת):

  • ADDI $4,$0,15;reg4  15(שימו לב להרחבת הסימן)

  • ADD $4,$8,$0;reg4  reg8

  • Branch מותנה

  • BEQ $0,$1,Label1;if reg1 == 0 then jump to Label1

  • השוואת "קטן-מ" (פסאודו פקודה 2L,3$,2$ BLT)

  • 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 אחרת המשך כרגיל)

  • קפיצה בלתי מותנית (מיעון מוחלט) J 10000

  • קפיצה עקיפה (מיעון לפי ערך האוגר)JR $31


234267

קידוד הפקודות

  • כל הפקודות בנות 32 סיביות – כלומר 4 בתים

  • כל סוג מגדיר את החלוקה הפנימית בתוך אותן 32 סיביות:

  • ישנם שלושה סוגי פקודות:

  • R-type-register instructions

  • I-type-immediate

  • J-type-jumps (unconditional)

  • שדה ה-op (opcode) קבוע בגודלו ונמצא תמיד. הוא חיוני כדי לדעת מהו סוג הפקודה וכיצד לבצע את החלוקה הפנימית השונה בין פורמט לפורמט


234267

קידוד הפקודות

  • בפקודות מסוג R

  • שדה ה-op תמיד שווה 0 ואילו שדה ה-func אומר מהי הפקודה

  • שדות ה-rs וה-rt עבור רגיסטר המקור, ושדה ה-rd עבור רגיסטר המטרה.

  • שדה ה-shamt (shift amount) מיועד לפקודה הזזת סיביות (SLL,SRL,SRA) בלבד


234267

קידוד הפקודות

  • בפקודות מסוג I

  • בפקודות loadופקודות עם שדה imm שדה ה-rs עבור רגיסטר הבסיס ושדה ה-rt עבור רגיסטר המטרה

  • בפקודות storeשדה ה- rs עבור רגיסטר הבסיס ושדה ה-rt מכיל את הערך לאחסון בזיכרון

  • בפקודות branch, rs ו-rt עבור רגיסטרי המקור והקבוע מקודד את כתובת הקפיצה ביחס ל-PC


234267

קידוד הפקודות

  • בפקודות מסוג J

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

Current PC

00

+

0000

Target (26 bits)

00

28

31

27

2

1

0

Target address

00


234267

קונפיגורציות של ה-MIPS

  • Single Cycle

    • כל פקודה מבוצעת במחזור שעון יחיד בעל זמן מחזור ארוך מאוד

  • Multicycle

    • חלוקת הפקודות למספר שלבים ועבור כל פקודה לבצע בכל שלב חלק מהפעולות. רוב הפקודות עדיין משתמשות ב-4 מחזורי שעון לפחות (קצרים יותר). אין שיפור משמעותי

  • Pipeline

    • מחלקים את ה- datapathהסדרתי לשלבים

    • כאשר פקודה מסוימת מסיימת את השלב הראשון ועוברת לשלב השני, פקודה חדשה נכנסת לשלב הראשון וכן הלאה

    • מתקבל מצב בו בכל מחזור שעון כל פקודה מתקדמת בשלב אחד. כלומר, בכל מחזור מסתיימת פקודה אחת ופקודה חדשה נכנסת לביצוע.


234267

השלבים הבסיסיים בביצוע פקודות

  • כל פקודה (למעט נקודה צפה) ניתנת לחלוקה ל-5 שלבים בסיסיים:

  • 1. Fetch

  • שליפת הפקודה לביצוע מהזיכרון

  • קידום מונה התוכנית לפקודה הבאה לביצוע.

  • אכסון הפקודה ברגיסטר זמני (IR)


Instruction fetch

0

0

0

m

u

x

m

u

x

m

u

x

1

1

1

+

  • WB

Control

+

  • M

Shift

left 2

  • EX

ALU

Zero

Instruction

Memory

result

0

m

u

x

  • Read Address

PC

1

6

Sign

extend

ALU

Control

32

32

16

  • Imm

  • Rt

  • Rd

Instruction Fetch

PCSrc

ID/EX

MEM/WB

IF/ID

EX/MEM

RegWrite

  • WB

  • WB

  • M

MemWrite

MemRead

Branch

RegWrite

NewPC

NewPC

4

RegDst

ALUSrc

ALUop

Data

Memory

Read

reg 1

MemtoReg

Read

data 1

Read

reg 2

Write Address

Register File

Read

data 2

Read

Data

Write

reg

Read Address

Instruction

Write

data

Write Data

[15-0]

ALUresult

[20-16]

  • Rd\Rt

  • Rd\Rt

[15-11]

RegDst


234267

השלבים הבסיסיים בביצוע פקודות

  • 2. Decode

  • פענוח הפקודה ויצירת את אותות הבקרה שילוו את הפקודה בהמשך

  • שליפת ערכי הרגיסטרים המתאימים מתוך Register File

  • Sign Extension: הרחבה של האופרנד המקודד מ-16 סיביות ל-32 סיביות


Instruction decode

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

MEM/WB

EX/MEM

RegWrite

  • WB

  • WB

  • M

MemWrite

MemRead

Branch

RegWrite

NewPC

NewPC

RegDst

ALUSrc

ALUop

Data

Memory

Read

reg 1

MemtoReg

Read

data 1

Read

reg 2

Write Address

Register File

Read

data 2

Read

Data

Write

reg

Read Address

Instruction

Write

data

Write Data

32

[15-0]

  • Imm

ALUresult

  • Rt

[20-16]

  • Rd\Rt

  • Rd\Rt

  • Rd

[15-11]

RegDst


234267

השלבים הבסיסיים בביצוע פקודות

  • 3. Execute

  • ביצוע הפעולה הנדרשת על בסיס הערכים בערוצי המידע:

    • עבור פעולת ALU– ביצוע הפעולה הנדרשת

    • עבור גישה לזיכרון – חישוב הכתובת האפקטיבי

    • עבור הסתעפות (branch) – חישוב כתובת היעד וחישוב תנאי הקפיצה

      • מבצעים את החישוב על 2 האופרנדים מהרגיסטרים הנכנסים ל-ALU הראשי אשר מבצע פעולת חיסור

        • אם התוצאה היא 0 נדלק דגל ZERO וכך ידוע האם יש לקפוץ (BEQ)

      • חישוב כתובת היעד של הקפיצה


Execute

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

MEM/WB

EX/MEM

RegWrite

  • WB

  • WB

  • M

MemWrite

MemRead

Branch

RegWrite

NewPC

NewPC

RegDst

ALUSrc

ALUop

Data

Memory

Read

reg 1

MemtoReg

Read

data 1

Read

reg 2

Write Address

Register File

Read

data 2

Read

Data

Write

reg

Read Address

Instruction

Write

data

Write Data

32

[15-0]

  • Imm

ALUresult

  • Rt

[20-16]

  • Rd\Rt

  • Rd\Rt

  • Rd

[15-11]

RegDst


234267

השלבים הבסיסיים בביצוע פקודות

  • 3. Memory

  • קריאה / כתיבה לזיכרון בפקודות Store / Load

  • החלטה האם לקפוץ בפקודות branch (עדכון PC)

  • שימו לב - Control Hazard

  • בכל שלב נכנסות פקודות חדשות ל- pipeline. עד שהבנו שצריך לקפוץ, אולי נכנסו פקודות שכלל אינן צריכות להתבצע

  • 4. Write back:

  • אכסון התוצאה (מ-ALU או מהזיכרון) לרגיסטר היעד.


Memory writeback

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

MEM/WB

EX/MEM

RegWrite

  • WB

  • WB

  • M

MemWrite

MemRead

Branch

RegWrite

NewPC

NewPC

RegDst

ALUSrc

ALUop

Data

Memory

Read

reg 1

MemtoReg

Read

data 1

Read

reg 2

Write Address

Register File

Read

data 2

Read

Data

Write

reg

Read Address

Instruction

Write

data

Write Data

32

[15-0]

  • Imm

ALUresult

  • Rt

[20-16]

  • Rd\Rt

  • Rd\Rt

  • Rd

[15-11]

RegDst


234267

אותות הבקרה


234267

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

MEM/WB

RegWrite

EX/MEM

  • WB

  • WB

  • M

Branch

MemWrite

MemRead

RegWrite

NewPC

NewPC

RegDst

ALUSrc

ALUop

Data

Memory

MemtoReg

Read

reg 1

Read

data 1

Read

reg 2

Write Address

Register File

Read

data 2

Read

Data

Write

reg

Read Address

Instruction

Write

data

Write Data

32

[15-0]

ALUresult

  • Imm

[20-16]

  • Rt

  • Rd\Rt

  • Rd\Rt

  • Rd

[15-11]

RegDst


Alu control aluop func

ALU control, ALUop func


Control lines

דוגמאות לערכי control lines עבור פקודות שונות:

  • דוגמא לקידוד offset של פקודת branch

  • שאלה: אנו נמצאים בכתובת 700 (כתובת פקודת ה-branch) ורוצים לקפוץ לכתובת 800. מה עלינו לקודד?

  • Displacement = 800 – 704 = 96 bytes

  • 96 / 4 = 24 instructions

  •  24


234267

  • שאלה:

  • ברצוננו להוסיף פקודה בשם addconstלסט הפקודות של ה- MIPS. הפקודה תבצע חיבור של רגיסטר לקבוע חסר סימן (unsigned)

  • תחביר הפקודה addconst R1,R2,const והפעולה המתבצעת היא R1=R2+const

  • הקבוע const הינו מספר חיובי בטווח (216-1) - [0

  • קידוד הפקודה החדשה הוא מסוג:

  • R

  • I

  • J

  • לא ניתן לממש פקודה כזאת במעבד מסוג RISC

  • אף תשובה אינה נכונה

  • במידה וניתן לממש את הפקודה, מה השינוי שנדרש במבנה ה- MIPS ?


234267

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

MEM/WB

RegWrite

  • 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

  • אתר הקורס:

  • http://webcourse.cs.technion.ac.il/234267

  • תרגילי בית:

    יינתנו 5 תרגילי בית במהלך הסמסטר

    25% תקף (75% בחינה סופית)

    הגשה בזוגות

    5 נקודות יורדו על כל יום איחור

  • ספרי קורס:

  • Hennessy & Patterson - Computer Architecture: A Quantitative Approach.

  • Hennessy & Patterson - Computer Organization and Design: The Hardware/ Software Interface


  • Login