Ki n trúc t p l nh1

ậ ệ

ế

N i dung

¡ Xem l i cách th c thi m t ch ng trình ạ ự ộ ươ

¡ Phân lo i l nh trong MIPS ạ ệ

¡ Truy c p b nh trong MIPS ộ ớ ậ

¡ Chi ti t v các toán t ế ề ử

– Add, sub, etc.

¡ Chi ti t v các l nh chuy n đ i d li u ế ề ổ ữ ệ ệ ể

– Load, store…

¡ Chi ti t v các l nh đi u khi n ế ề ệ ể ề

– Jump, branch if equal…

Th c thi l nh

Today we’re going to learn the details!

Th c thi ch

ng trình

ươ

ng trình ự ươ

đ c s ử ượ ử

c ữ ệ ượ

ệ ế

B x lý th c thi ch ộ ử nh th nào? ư ế 1. T i l nh ả ệ 2. Tìm ra toán t d ng ụ 3. Tìm ra d li u nào đ s d ng ử ụ 4. Th c hi n tính toán ệ ự 5. Tìm l nh ti p theo L p l i quá trình … ặ ạ

Bài gi ng nh n m nh s th c thi trong b x lý MIPS ự ự ộ ử ả ấ ạ

Ví d : T p l nh MIPS

ụ ậ ệ

ng l nh 3 toán h ng : Đ nh d ng tr ạ ị ườ ệ ạ

Complex  operation many  instructions  with temporary  values.

Phân lo i t p l nh

ạ ậ ệ

Toán tử – S h c (add, multiply, subtract, divide, …) ố ọ – Logic (and, or, not, xor, …)

ữ ệ

D ch chuy n d li u ể – Move (register to register) – Load (memory to register) – Store (register to memory)

ữ ệ ề

Đi u khi n d li u ể – Branch (có đi u ki n, e.g., <, >, ==) – Jump (không đi u ki n, e.g., goto) ề

B ng tham kh o đ nh d ng l nh

T p thanh ghi trong MIPS

Câu h i: ỏ T i sao giá tr thanh ghi R0 luôn b ng 0?

i:

32 Thanh ghi đa d ng.ụ ệ ặ

– Kí hi u R0…R31 ho c $0…$31 – Các bi n ph i l u trên thanh ghi. ả ư ế

ả ờ Luôn c n ầ Tr l giá tr 0 trong m t ị ng trình ch ươ

Move:  add dest, src, R0

M t s tr ng h p đ c bi ộ ố ườ ặ ệ

c s d ng cho th t c ủ ụ

t. ợ – R0 luôn có giá tr ị zero (0) – R29 là thanh ghi con tr ngăn x pế – R31 đ quay l ượ ử ụ i đ a ch ỉ ạ ị

M t s thanh ghi đ c bi t. ộ ố ệ

ả ủ

ẩ ộ

ặ – PC (Program Counter): Thanh i ghi l nh hi n t ệ ạ – HI & LO: l u k t qu c a phép ế ư nhân – Thanh ghi d u ph y đ ng ấ – M t s thanh ghi đi u khi n ề ể ộ ố i ho c tr ng thái) (ki m soát l ạ ể ặ ỗ

T ch c b nh ớ

ổ ứ ộ

B nh là m t m ng 1 chi u l u tr d li u ữ ữ ệ ộ ộ ả

ướ

• M i ô nh có kích th ớ • Đ a ch b nh trong m ng ớ ỉ ộ ề ư c 1 byte (8 bits) ả ớ ỗ ị

ị Đ a ch b nh đ ỉ ộ ớ ượ ả

• Máy tính 32 bits, có 232 ô nh (4GB) • Máy tính 64‐bit, có 264 ô nh (16EB) c đánh ch s trên m ng ỉ ố ớ ớ

– 64-bit x86 lên t i ~48‐bits m t ô nh (4PB). ớ ộ ớ

c

D li u: Ki u và kích th ể

ữ ệ

ướ

Các ki u d li u trong MIPS đ c đ nh nghĩa là 1 t ị ừ

ượ g m 32 bits = 4 bytes ữ ệ ộ ừ ồ

ể – M t t – 232 bytes = 230 words: addresses 0, 4, 8, …

? Câu h i: Đâu là 2 bit cu i cùng trong m t đ a ch t ố ộ ị ỉ ừ ỏ

Truy nhập alignment (Access alignment)

(word) ng biên (e.g., 0, 4, 8, ạ ỉ đ ở ườ

• Đ a ch Alignment : T o trên 4 byte ị 12…)

c l u tr đ a ch byte chia h t cho kích th c – D li u đ ữ ệ ượ ư ữ ở ị ế ỉ ướ

(e.g., 1, 3, 7, 63) ỉ

• Đ a ch Unalignment thì không • M t s k thu t h tr truy c p Unaligment (not MIPS)

ế complex)

ậ ỗ ợ ể ể ị ậ c và có ph n m m c đ nh truy c p không ố ị ậ ể ượ ề ầ

ị • M t s nh ộ ố

ộ ạ ữ ệ

– 2 truy c p b nh c ng g p t o ra d li u unaligned – Intel cung c p h tr th c thi m c cao trên vào năm 2010 (Nehalem) ị ộ ố ỹ – Ph n c ng có th chuy n đ i thành đa truy c p đ nh tuy n ( ứ ầ ổ – Ph n c ng có th dò đ ậ ứ ầ ế slow) đ nh tuy n ( c đi m ể ượ ộ ậ ấ ớ ộ ỗ ợ ự ứ

ộ ử

Question:  Why do we  care about in‐ order and  atomic  execution? Answer: Without it we  could not  understand  the program.

Processor execution model  ¡B x lý th c thi l nh theo 2 ch ế ệ đ ộ sequential và atomic – Sequential: Th c thi các l nh ệ

tu n t

ầ ự

– Atomic: Th c ự

thi l nh cùng m t

lúc

¡Sequential

– Ch

ng trình

:

ươ

R2 = R1 + R2

then R3 = R1 +

R2

– Processor may

not do: R3 = R1 +

R2 then R2 = R1

+ R2 ← wrong

result

¡Atomic

– Ch

ng trình :

ươ

R2 = R1 + R2

then R3 = R1 +

R2

– B x lý ph i

ộ ử

th c hi n xong

tính toán: R2= R1

+ R2 tr

c khi b t

ướ

đ u tính

R3 = R1

+ R2

¡Processors

don’t do either

of these things

(too slow)

– But it’s

important that

they make it look

like they do

– We’ll talk a lot

about this when

we get to

pipelines

ng trình

Máy tính l u tr ch ư

ữ ươ

Ch ng trình và d li u đ ươ ộ ớ

c n p t ữ ệ ả ượ ượ ư ạ ừ ộ ữ ớ ể ự

c l u tr trong b nh b nh đ th c thi b nh đ tính toán c n p t – Các l nh ph i đ ệ – D li u ph i đ ả ượ ữ ệ ớ ể ạ ừ ộ

Ví d : Các ch th l nh

ị ệ

ố ọ

1. Data operations: add/sub

ị ể

2. Data transfers: load  word/store word

3. Sequencing:  Branch/jump Phép toán (Data operations) – S h c (add, multiply, subtract, divide, …) – Logic (and, or, not, xor, …) D ch chuy n d li u (Data transfer) ữ ệ – Move (register to register) – Load (memory to register) – Store (register to memory) R nhánh (Sequencing) – Branch (conditional, e.g., <, >, ==) – Jump (unconditional, e.g., goto)

Chi ti

t v các ch th l nh

ế ề

ị ệ

1. Program Counter (PC) l u tr đ a

ữ ị

ư

ch l nh. ỉ ệ 2. Các l nh đ

c n p t

ượ

ạ ừ ộ

b nh ớ

vào thanh ghi l nh.ệ

3. B đi u khi n gi

ộ ề

ả ệ

i mã l nh và ệ báo cho ALU và t p thanh ghi ph i làm gì.

4. ALU th c thi l nh và k t qu ả

đ

5. B đi u khi n c p nh t l

ệ c chuy n l ể ạ ệ ể

tr c a PC cho l nh ti p theo.

ế i t p thanh ghi. i giá ậ ạ ậ ế ệ

ượ ộ ề ị ủ

Add/sub example (1 of 2)

Add/sub example (2 of 2)

Bộ đếm chương  trình (PC) nạp lệnh  từ thanh ghi lệnh

Control báo cho  ALU và thanh ghi  dữ liệu (Register  File) phải làm gì.

ALU ghi kết quả vào  Register File.

Thực hành: add/sub

‐ f=(g+h)  (i+j)

R3=f

R4=g

R5=h

R6=i

R7=j

Các l nh d ch chuy n d li u

ữ ệ

Chi ti

t v d ch chuy n d li u

ế ề ị

ữ ệ

đ a ch

ị ớ Memory

ị ế

ng c ế

ớ Memory Data

ượ

1. ALU t o raạ ị ỉ 2. Đ a ch g i t i thanh ghi ỉ ử ớ đ a ch b nh ( ỉ ộ Address Register) 3. K t qu xác đ nh h ướ ả d ch chuy n đi/ đ n đ ượ ế ị l u tr trên thanh ghi d ữ ữ ư li u b nh ( ộ ệ Register) 4. D li u t b nh có th ể ớ ữ ệ ừ ộ i trên t p thanh c ghi l đ ệ ạ ghi (Register File) ho c ặ ghi vào b nh . ớ ộ

Load word example (1 of 2)

Load word example (2 of 2)

S d ng đ a ch ỉ ử ụ thanh ghi t p t ệ ừ i d li u t đ t ể ả ữ ệ ừ b nh ớ ộ

Load word with offset (đ ộ l ch)ệ

c thêm

ượ ỉ ư

ủ ộ

Đ l ch đ ộ ệ vào đ a ch nh là ị m t ph n c a các ầ câu l nh lw/sw ệ

Store word example

ệ ư

d ữ

Đ th c hi n l u ể ự tr c n thông tin: ữ ầ Đ a ch ỉ (t ALU), ừ ị thanh ghi) li u ệ (t ừ

Bài t pậ

Bi n A = 3 Đ a ch c a A = 24 ỉ ủ ế ị

Program: Ghi giá tr 512 vào A ị

L y đ a ch c a A trong R5 ỉ ủ L y giá tr m i c a A trong R6 ị ớ ủ L u giá tr R6 vào ô nh 5: Mem[R5]←R6 ị ấ ấ ư ớ

Các ch th đi u khi n, r nhánh

ị ề

Các l nh đi u khi n r nhánh

ể ẽ

ệ ề

ng trình “control flow” c th c thi ti p theo? ượ ề ế ươ ể

Câu l nh đi u ki n trong MIPS ồ ệ

L nh đi u khi n r nhánh ể ẽ – Câu l nh nào đ ệ – Thay đ i lu ng đi u khi n ch ổ ề ệ – bne R0, R1, Label branch if not equal to label – beq R3, R4, Label branch if equal to label

Example:

Lệnh nhảy không điều kiện

ệ ề ệ ả

L nh nh y không đi u ki n: jump – j Label jump to label

Example:

Ch th r nhánh ị ẽ

→ change the Program Counter

Change the flow of the program  – j jump                                       goto label no matter what – bne branch not equal           goto label only if registers are not equal

Example: if (a==b) c=1; else c=2;

Vòng l pặ