Ế
KI N TRÚC MÁY TÍNH
Tu n 3ầ
Ộ Ệ
Ế
KI N TRÚC B L NH
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
1
ộ ệ ộ ệ
ầ ầ
ế Tu n 03 – Ki n trúc b l nh ế Tu n 03 – Ki n trúc b l nh
ụ M c tiêu:
ể
ể
ễ
ự
ệ
1.Hi u cách bi u di n và cách th c thi các l nh trong máy tính
ể
ổ ệ
ữ ấ 2.Chuy n đ i l nh ngôn ng c p cao sang assembly và mã máy
ể ổ ệ
ữ ấ
ơ
3.Chuy n đ i l nh mã máy sang ngôn ng c p cao h n
ế
ữ
ậ
ằ
4.Bi
t cách l p trình b ng ngôn ng assembly cho MIPS
Slide được dịch và các hình được lấy từ sách tham khảo:
Computer Organization and Design: The Hardware/Software Interface, Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011.
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
2
ộ ệ
ầ
ế Tu n 3 – Ki n trúc b l nh
ớ ệ 1. Gi i thi u
2. Các phép tính
3. Toán h ngạ
ố ấ ấ 4. S có d u và không d u
ễ ệ ể 5. Bi u di n l nh
6. Các phép tính Logic
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
3
ệ ệ ả ề 7. Các l nh đi u ki n và nh y
ớ
Gi
ệ i thi u
ệ ể ả ằ ớ Đ ra l nh cho máy tính ta ph i nói v i máy tính b ng
ữ ủ ừ ủ ọ ngôn ng c a máy tính. Các t ữ c a ngôn ng máy tính g i
ợ ấ ả ậ ừ ọ là các l nh ệ t c các t g i là (instructions) và t p h p t
ộ ệ b l nh (instruction set)
ộ ệ ươ ộ ộ ệ ế B l nh trong ch ng này là MIPS, m t b l nh ki n
ượ ớ trúc máy tính đ c thi ế ế ừ t k t ộ năm 1980. Cùng v i hai b
ấ
ệ l nh thông d ng nh t ngày nay: ố
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
4
ụ ARM (r t gi ng MIPS) ấ The Intel x86
ộ ệ
ầ
ế Tu n 3 – Ki n trúc b l nh
ớ ệ 1. Gi i thi u
2. Các phép tính
3. Toán h ngạ
ố ấ ấ 4. S có d u và không d u
ễ ệ ể 5. Bi u di n l nh
6. Các phép tính Logic
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
5
ệ ệ ả ề 7. Các l nh đi u ki n và nh y
Phép tính (Operations)
Ví d :ụ
ự ệ ộ
add a, b, c Ch d n cho máy tính th c hi n c ng 2 ế ế ả ớ bi n b v i c và ghi k t qu vào bi n a,
Toán hạng (operands)
Phép tính (operations)
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
6
ỉ ẫ ế a = b + c.
Phép tính (Operations)
Ví d 1.ụ
Ví d 2.ụ
C/Java
C/Java
f = (g + h) – (i + j);
a = b + c; d = a – e;
MIPS
MIPS
add a, b, c sub d, a, e
add t0, g, h add t1, i, j sub f, t0, t1
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
7
ụ ộ ố ệ
Ví d m t s l nh trên MIPS
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
8
ộ ệ
ầ
ế Tu n 3 – Ki n trúc b l nh
ớ ệ 1. Gi i thi u
2. Các phép tính
3. Toán h ngạ
ố ấ ấ 4. S có d u và không d u
ễ ệ ể 5. Bi u di n l nh
6. Các phép tính Logic
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
9
ệ ệ ả ề 7. Các l nh đi u ki n và nh y
Toán h ngạ
ạ ạ Có 3 lo i toán h ng:
ạ 1.Toán h ng thanh ghi (Register Operands)
ạ ộ ớ 2.Toán h ng b nh (Memory Operands)
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
10
ạ ằ 3.Toán h ng h ng (Constant or Immediate Operands)
Toán h ngạ
ế
ự
ầ ứ
ượ ọ
ữ ấ ư ươ ệ ả ặ ố ọ ị ạ ế ự c xây d ng tr c ti p trong ph n c ng đ ớ ạ ng thanh ghi có gi
ạ
ủ
ế
ượ
ừ
ệ
ặ
ng xuyên nên chúng đ
ộ ệ
ừ
ể
ộ
ữ ậ
ữ
ế
ườ
ố
t l n gi a các bi n c a m t ngôn ng l p trình ng là 32 thanh
ủ ộ ị ớ ạ i h n (th
Copyrights 2017 CEUIT. All Rights Reserved.
03/2017
11
ệ
ư (L u ý: m t “t ” trong ki n trúc b l nh khác có th không là 32 bit) M t s khác bi ệ ớ ộ ự ế và các bi n thanh ghi là s thanh ghi b gi ghi trên các máy tính hi n nay)
Toán h ng thanh ghi: Không gi ng nh các ch ố ng trình trong ngôn ng c p cao, các ủ ạ toán h ng c a các l nh s h c b h n ch , chúng ph i đ t trong các ệ ượ ặ ị c g i là t đ v trí đ c bi ố ượ i h n: MIPS32, ARM Cortex thanh ghi (s l A840). Kích th ộ ướ c c a m t thanh ghi trong ki n trúc MIPS là 32 bit; ấ ườ c đ t tên là “t ” nhóm 32 bit xu t hi n th ế (word) trong ki n trúc MIPS. ế
Toán h ngạ
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
12
Các thanh ghi trong MIPS:
Toán h ngạ
ể ữ ộ ượ
ỏ ữ ệ
Vi x lý c ử
h cỉ ó th gi
m t l
ng nh d li u trong các thanh ghi,
trong khi
ệ ữ ệ
ộ
ớ
ứ b nh máy tính ch a hàng tri u d li u.
ố ọ
ỉ ả
V i l nh
ả ớ ệ MIPS, phép tính s h c ch x y ra trên thanh ghi, do đó, MIPS ph i
ể ữ ệ
ớ
ư ậ ượ ọ
có các l nh ệ
ữ ộ chuy n d li u gi a b nh và thanh ghi.
L nhệ nh v y đ
c g i là
l nh ệ
ộ ớ ạ Toán h ng b nh (1):
ể ữ ệ . chuy n d li u
ể ữ ệ
ữ ộ
ộ ệ
ớ
ể ữ ệ M t l nh di chuy n d li u gi a b nh và thanh ghi
L nh ệ
chuy n d li u:
ộ ừ
ể
ớ ệ
ả
ộ
Đ truy c p vào m t t ậ
trong b nh , l nh ph i cung c p
ớ ỉ b nh . ộ
ị ấ đ a ch
ị
ị ử ụ
ủ
ể
ộ
ộ
ị
ị
ỉ: M t giá tr s d ng đ phân đ nh v trí c a m t ph n t
ầ ử ữ ệ ụ d li u c
Đ a ch
ể
ả
ộ
ộ
ớ th trong m t m ng b nh .
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
13
Toán h ngạ
ộ
ạ
ề ớ
ỉ
ớ ỉ ố
ả
ớ ị ụ ộ
ớ
ị
ộ ớ ộ ỉ
ị
ộ ỉ và n i dung
Hình 2: Đ a ch
ị
ớ
ị
Hình 1: Đ a ch ả ậ nh ớ gi
ỉ và n i dung c a b ủ ộ ộ ư ả . l p nh m ng
th c tự ế. ị ỉ ủ
ị
Toán h ng b nh (2): B nh ch là m t m ng đ n chi u l n, v i đ a ch đóng ơ ả ắ ầ ừ 0. Ví d , trong hình vai trò là ch s trong m ng đó, b t đ u t ị ủ ầ ử ứ ỉ ủ 1, đ a ch c a ph n t th ba là 2, và giá tr c a b nh [2] là 10.
ị
ộ ủ
ả
ớ ộ b nh MIPS ủ ỗ ừ nh (word) c a MIPS là 4 bytes. MIPS đ nh đ a M i t ị ỗ ỉ ủ ỉ ch theo byte, đ a ch c a m i word là đ a ch c a byte ỉ ỗ ầ đ u tiên trong word đó. Do đó, đ a ch m i word trong MIPS ph i là b i c a 4.
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
14
Toán h ngạ
ạ
ọ
ủ ạ ị b nh vào thanh ghi g i là . Đ nh d ng c a các ớ ữ ệ ừ ộ t lw − load word)
ạ ộ ớ Toán h ng b nh (3): L nh chuy n d li u t ể ệ ế ắ ạ n p (load) t t (vi ệ l nh n p:
Độ dời (offset)
Địa chỉ nền/cơ sở (Base address) Thanh ghi chứa địa chỉ nền/cơ sở gọi là thanh ghi nền/cơ sở (Base register)
ể
ậ
ộ
ố
ượ ử ụ ủ
aủ h ng s và n i dung c a thanh ghi ớ ộ
ủ ừ
ế . N i dung c a t
ộ c s d ng đ truy c p vào b ớ ỉ ộ này là đ a ch b nh ẽ ượ ư ừ c đ a t
ị nh này s đ
ậ $s1
•$s1: thanh ghi n p d li u vào. ạ ữ ệ •M t h ng s (20) và thanh ghi ($s2) đ ộ ằ ố ố ằ ớ ổ nh . T ng s c ầ ử ầ ủ c n truy c p đ n c a ph n t ớ ộ b nh vào thanh ghi
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
15
lw $s1,20($s2)
Toán h ngạ
ộ ớ
ộ
ủ
ầ ử ầ
ả A là m t m ng c a 100
ph n ầ tử (m i ph n t
ỗ ế
ị
ả ị
ằ
ả ạ ệ
ạ Toán h ng b nh (4): ụ ề ệ Ví d v l nh lw:
ị
c n 1 ớ ế ợ ữ và trình biên d ch đã k t h p các bi n g và h v i các ỉ b t đ u c a m ng A (hay ị đ nh r ng đ a ch ỉ c sơ ở/n n)ề ch a ứ trong $s3. Hãy biên d ch đo n l nh b ng ữ
ả ử ằ Gi s r ng ư word l u tr ) thanh ghi $s1 và $s2. Gi đ a ch ngôn ng C sau sang MIPS:
ả
g = h + A[8];
ắ ầ ủ ằ ị ộ ự ế Th c t trong MIPS m t word là 4 bytes, do đó l nh ệ đúng ph i là: lw $ t0, 32($s3)
ị
Biên d ch:
ậ # $t0 nh n A[8]
lw $t0, 8($s3)
add $s1,$s2,$t0 # g = h + A[8]
ằ
ứ ị
ữ ệ 8) g i ọ là offset, và thanh ghi ch a đ a
ỉ ắ ầ ủ
ọ Copyrights 2017 CEUIT. All Rights Reserved.
ả
H ng s trong m t l nh truy n d li u ( ộ ệ ố ch b t đ u c a m ng 03/2017
ề ($s3) g i là
16
thanh ghi c sơ ở.
Toán h ngạ
ạ
ệ
ộ ị ủ ớ ọ thanh ghi ra b nh , g i là l nh ạ . Đ nh d ng c a các ộ ớ ể ữ ệ ừ ế ắ t t t sw − store word)
Toán h ng b nh (5): L nh chuy n d li u t ệ ư l u (store) (vi ư ệ l nh l u:
Base address in base register
offset
ứ ữ ệ ầ ư
•$s1: thanh ghi ch a d li u c n l u.
ượ ử ụ
ố ố
ằ
ố
ộ ứ
ộ ậ c s d ng đ truy c p vào b ỉ ộ ị ủ này là đ a ch b ẽ ượ ư c l u vào
$s1 s đ
•M t h ng s (20) và thanh ghi ($s2) đ ể ộ ằ nh .ớ T ng s c aủ h ng s và n i dung c a thanh ghi ổ ộ ơ nhớ, n i mà n i dung đang ch a trong thanh ghi đây.
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
17
sw $s1,20($s2)
Toán h ngạ
ộ ớ ạ Toán h ng b nh (6):
ụ ệ Ví d l nh sw:
c k t n i v i
ượ A là trong $s3. Biên d chị ỉ ế ố ớ thanh ghi $s2 và đ a ch th c ự ị ệ câu l nh C
ả ử ế h đ Gi s bi n ả ơ ở ủ c s c a m ng ướ hi nệ d i đây sang MIPS?
A[12] = h + A[8];
ị Biên d ch:
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
18
# $t0 = A[8] # $t0 = h + A[8] # A[12] = $t0 lw $t0,32($s3) add $t0,$s2,$t0 sw $t0,48($s3)
Toán h ngạ
ỉ
ph i b t đ u t
ộ ớ ạ Toán h ng b nh (7):
ệ
ằ
ị
ộ ố ế
ề ề
ệ ộ
ắ
ẫ
ơ
Alignment Restriction: Trong MIPS, các t ừ ả ắ ầ ừ ị đ a ch là ộ ố ủ ộ “alignment restriction” và ọ ượ ầ b i s c a 4. Yêu c u này đ c g i là m t ộ ế nhi u ki n trúc hi n nay bu c tuân theo quy đ nh này nh m giúp vi c ữ ệ truy n d li u nhanh h n. Tuy nhiên m t s ki n trúc v n không b t bu c ị quy đ nh này.
ữ ệ
ề
ề
ạ
ơ đ c ọ
ươ
ả
(Chú ý: T i sao tuân theo đi u này giúp truy n d li u nhanh h n ch
ng 5 sách tham kh o chính)
Leftmost “Big End”, “Big Endian”
Rightmost “Little End”, “Little Endian”
ộ ạ
nào?
MIPS thu c d ng
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
19
Toán h ngạ
ằ
ố ố ứ ờ
ộ ạ Toán h ng h ng: ộ ằ M t h ng s /s t c th i (constant/immediate number) có ể ượ ử ụ th đ c s d ng trong trong m t phép toán
Ví d :ụ
Toán hạng hằng
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
20
# $s3 = $s3 + 4 addi $s3, $s3, 4
Toán h ngạ
ạ
ộ ệ
ủ
ạ
ạ
ỉ
Tóm l
i, ch có 3 lo i toán h ng trong m t l nh c a MIPS
ạ
1.Toán h ng thanh ghi (Register Operands)
ạ
ộ
ớ 2.Toán h ng b nh (Memory Operands)
ạ
ằ
3.Toán h ng h ng (Constant or Immediate Operands)
L u ý:ư
ừ ộ
ầ
ộ ố ứ
ờ trong MIPS.
ự ế
ủ
ệ
ả
ớ
ộ
, có m t phiên b n khác c a MIPS làm vi c v i các thanh ghi
ệ
ớ
ọ
ọ
Các hằng s ố trong MIPS có th ể âm nên không c n phép tr m t thanh ghi và m t s t c th i Trong th c t 64 bits, g i là MIPS64. MIPS xem xét trong môn h c này là MIPS làm vi c v i
ọ
ỉ
ẽ ể
ọ
ạ
các thanh ghi ch 32 bit, g i là MIPS32. (cid:0) Trong ph m vi môn h c này, MIPS dùng chung s hi u là MIPS32
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
21
ộ ệ
ầ
ế Tu n 3 – Ki n trúc b l nh
ớ ệ 1. Gi i thi u
2. Các phép tính
3. Toán h ngạ
ố ấ ấ 4. S có d u và không d u
ễ ệ ể 5. Bi u di n l nh
6. Các phép tính Logic
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
22
ệ ệ ả ề 7. Các l nh đi u ki n và nh y
ấ
ố
ấ S có d u và không d u
ơ ố
ư
ạ
ể ượ
h ệ c s 10, nh ng con s có th đ
c
Con ng ể
ể ấ ỳ ơ ố
ố ơ ố
ơ ố
bi u di n
ườ ượ i đ c d y đ suy nghĩ trong ụ ễ trong b t k c s nào. Ví d , 123 c s 10 = 1111011 c s 2.
ệ
S ố l u tr trong máy tính nh
ệ thế cao và th pấ , do
ư m t ộ chu iỗ các tín hi u đi n ơ ố c ượ xem như h ệ c s 2.
ữ ư đó chúng đ
ẽ ướ
ư ế
ư
ủ
ộ
i đây cho th y
ữ ố ấ nh th nào m t word c a MIPS l u tr s
Ví dụ: Hình v d
1011:
ể ể
ố ừ
ễ
ộ
M t word c a MIPS có 32 bit, do đó có th bi u di n các s t
ế 0 đ n 2
32−1
ủ (4.294.967.295)
ọ
ấ (The least significant bit – LSB): Bit ngoài cùng bên
ả
Bit tr ng s nh nh t ố ỏ ộ ừ ớ nh (bit 0) Bit tr ng s l n nh t
ấ (The most significant bit – MSB): Bit ngoài cùng bên trái
Copyrights 2017 CEUIT. All Rights Reserved.
ph i trong m t t ố ớ ộ ừ ớ nh (bit 31)
ọ trong m t t 03/2017
23
ấ
ố
ấ S có d u và không d u
ố ươ
ễ
ị
ng và âm trong máy tính: ệ ạ s d ng
i
ấ . ố s có d u
ể ử ụ bù hai để bi u di n nh phân cho ng
ế ế
ượ ọ
S d Các máy tính hi n t • N u MSB = 0: s d ố ươ • N u MSB = 1: s âm. ố Bit th 32 ứ (MSB) còn đ
c g i là
bit d uấ .
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
24
ấ
ố
ấ S có d u và không d u
ươ
ố ừ
ủ
ễ
ể
ng c a các con s , t
0 đ n
ư ế 2,147,483,647ten (231 – 1), bi u di n nh
th
N aử ph nầ d ngườ . ầ ố
ễ
ể
Ph n s âm bi u di n:
1000…0000two = 2,147,483,648ten
ố ươ
ươ
ng t
ứ ng ng.
2,147,483,648ten , mà không có s d
1000…0001two = 2,147,483,647ten Bù hai có m t s âm ộ ố 1111…1111two = 1ten
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
25
ấ
ố
ấ S có d u và không d u
Công thức chuyển từ một số bù hai sang số hệ 10:
ượ
v i ớ 231, và ph n còn l
c nhân
ị ơ ố
ươ
ư L u ý: ớ v i các
ấ ượ c nhân Bit d u đ ủ ươ số d
ầ ng c a các giá tr c s nào t
ạ ủ i c a các bit sau đó đ ủ chúng. ứ ng ng c a
Ví dụ: đổi từ hệ 2 sang hệ 10
Trả lời:
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
26
ấ
ố
ấ S có d u và không d u
ở ộ ố ấ M r ng s có d u:
ể ế ể ổ ị
ộ ố ể ượ ề ễ ớ ể ộ ố c bi u ơ n n bit thành m t s bi u di n v i nhi u h n
Làm th nào đ chuy n đ i m t s nh phân đ ễ di n trong bit?
Ví d :ụ
ủ ố ten và 2ten thành
ị ổ ố ể Chuy n đ i s nh phân 16 bit c a s 2 ố ị s nh phân 32 bit. 2ten:
Copyrights 2017 CEUIT. All Rights Reserved.
03/2017
27
2ten:
ấ
ố
ấ S có d u và không d u
ệ ớ ư ủ
ở ộ
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
28
ở ộ ấ ệ Khi làm vi c v i các l nh c a MIPS, l u ý: •M r ng có d u (Signextend) ấ •M r ng không d u (Zeroextend)
ộ ệ
ầ
ế Tu n 3 – Ki n trúc b l nh
ớ
ậ ệ
ệ ệ
ế ổ
i thi u l nh máy tính, t p l nh là gì
ượ ử ụ
ụ ể
ọ
c s d ng c th trong môn h c này là
ậ ệ (T p l nh đ
MIPS 32 bits)
ệ
ơ ả ổ ữ ệ
ậ ệ ệ
ồ ố ọ
ệ
ệ
ả
T p l nh bao g m các nhóm l nh c b n: Nhóm l nh logic, ệ nhóm l nh s h c, nhóm l nh trao đ i d li u và nhóm l nh nh y
ớ
c chia thành ba nhóm:
ượ ạ
ộ
ớ
ạ ố ứ
V i MIPS, toán h ng cho các l nh đ ệ ạ nhóm toán h ng thanh ghi, nhóm toán h ng b nh và nhóm toán ờ ạ h ng là s t c th i
ắ ạ ố
ấ
ấ
ố
Nh c l
i s có d u và s không d u
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
29
T ng k t: Gi
ộ ệ
ầ
ế Tu n 3 – Ki n trúc b l nh
ụ
Lý thuy t: Đ c sách tham kh o ả ọ ế • M c: 2.1, 2.2, 2.3, 2.4 •
Sách: Computer Organization and Design: The Hardware/Software Interface, Patterson, D. A., and J. L. Hennessy, Morgan Kaufman, Revised Fourth Edition, 2011.
Bài t p: ậ file đính kèm
03/2017
Copyrights 2017 CEUIT. All Rights Reserved.
30