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;