Chương 4
ế
ậ ệ
Ki n trúc t p l nh (Instruction Set Architecture)
1
Nội dung
ủ ủ ệ
ị
ỉ
ủ ệ ị ng pháp đ nh đ a ch
ế
• Mô hình l p trình c a máy tính ậ • Các đ c tr ng c a l nh máy ặ ư • Các ki u thao tác c a l nh ể • Các ph ươ • Phân lo i t p l nh ạ ậ ệ • Ki n trúc t p l nh Intel x86 ậ ệ
2
Mô hình lập trình của máy tính
ế
ậ ệ
ằ ấ
• V trí ki n trúc t p l nh ISA trong máy tính ị – N m gi a ph n c ng và NNLT c p cao HLL ữ – Giúp ph n m m t ầ thay đ i ổ
3
ầ ứ ề ươ ầ ứ ế ng thích khi ki n trúc ph n c ng
Mô hình lập trình của máy tính
ể
ậ
• Máy tính theo quan đi m l p trình
4
Mô hình lập trình của máy tính
ụ ề ự
ươ
• Ví d v s thi hành ch
ng trình
5
Mô hình lập trình của máy tính
ho t ạ
ậ – Ch a các thông tin t m th i ph c v cho ạ ệ ạ ủ
ở ờ
b ộ nhớ
• T p thanh ghi (Registers) ụ ụ ờ i c a CPU ủ ệ ố ề tăng hi u năng ệ
ể th i đi m hi n t ứ ầ ng thanh ghi nhi u
c a ủ
ứ ộ đ ng – Đ c coi là m c đ u tiên c a h th ng ượ – S l ố ượ CPU
– Có hai lo i thanh ghi: ạ
ượ c
6
ậ ượ • Các thanh ghi l p trình đ ậ • Các thanh ghi không l p trình đ c
Mô hình lập trình của máy tính
ạ
ứ ị
ả
ị
ớ
• Phân lo i thanh ghi theo ch c năng – Thanh ghi đ a ch : qu n lý đ a ch c a ỉ
ộ ỉ ủ b nh hay
ổ c ng IO.
ứ ạ
ữ ệ
ờ ể ứ ị
– Thanh ghi d li u: ch a t m th i các d li u. – Thanh ghi đa năng: có th ch a đ a ch
ữ ệ ặ ữ ỉ ho c d
li u.ệ
ạ
thông
ủ
ề
– Thanh ghi đi u khi n/tr ng thái: ch a các ứ ể ạ tin đi u khi n và tr ng thái c a CPU. ượ ứ ệ
ề ể ệ
– Thanh ghi l nh: ch a l nh đang đ
c th c
ự hi n.ệ
7
Mô hình lập trình của máy tính
ộ ố
• M t s thanh ghi đi n hình
– Các thanh ghi đ a ch
ể ỉ (Address Register)
ị ng trình PC (Program Counter)
ươ ỏ ữ ệ ỏ
ỉ ố (Base Register &
ạ
– Các thanh ghi d li u (Data Register) ữ ệ – Thanh ghi tr ng thái (Status Register)
8
• B đ m ch ộ ế • Con tr d li u DP (Data Pointer) • Con tr ngăn x p SP (Stack Pointer) ế • Thanh ghi c s và thanh ghi ch s ơ ở Index Register)
Mô hình lập trình của máy tính
c
• B đ m ch ộ ế – Còn đ – Gi ỉ ủ ệ ữ ị – Sau khi m t l nh đ ộ ệ
(Instruction Pointer) ẽ ượ thi hành. ộ dung PC t
ự
ế ế
ươ ng trình PC ỏ ệ ượ ọ c g i là con tr l nh IP ế đ a ch c a l nh ti p theo s đ ượ c nh n vào, n i ệ k ti p.
ỏ ữ ệ
ậ ể ỏ ộ đ ng tăng đ tr sang l nh • Thanh ghi con tr d li u DP ớ ữ ệ
ứ ị
ố
ỉ ủ ô nh d li u mà
– Ch a đ a ch c a
CPU mu n truy
ệ
nhi uề thanh ghi con tr dỏ ữ li u cho phép ề
ớ ồ
ể
ậ
ng có ng trình có th truy c p nhi u vùng nh đ ng
c pậ – Th ườ ươ ch th i.ờ
9
Mô hình lập trình của máy tính
• Ngăn x p (Stack) ế
ế
ấ
(Last In
ể ụ ụ
ặ ườ
ươ
– Ngăn x p là vùng nh có c u trúc LIFO ớ First Out) ho c FILO (First In Last Out) ng dùng đ ph c v cho
ch
ng
– Ngăn x p th ế trình con
ế ế
ỉ
– Đáy ngăn x p là m t – Đ nh ngăn x p là thông tin n m
ị ớ ộ ô nh xác đ nh ằ ở ị v trí
trên cùng
trong ngăn x pế
ể ị
ế
ỉ
– Đ nh ngăn x p có th b thay đ i ổ
10
Mô hình lập trình của máy tính
ỏ ứ ị ấ
• Con tr ngăn x p SP (Stack Pointer) ế – Ch a đ a ch c a ế ỉ ủ ô nh đ nh ngăn x p ớ ỉ – Khi c t m t thông tin vào ngăn x p:
ộ
đ ng tăng
• Thao tác PUSH • N i dung c a SP t ủ • Thông tin đ ượ ấ
ự ộ c c t vào
ô nh đớ ang trỏ b i ở
SP ấ
ế ộ
• Thao tác POP • Thông tin đ
ỏ ở ượ ọ ừ ô nh đớ ang tr b i
c đ c t
SP ộ
ự ộ
ả
• N i dung c a SP t
ủ ế ỗ
đ ng gi m ỏ
ế ỏ ộ – Khi l y m t thông tin ra kh i ngăn x p:
11
– Khi ngăn x p r ng, SP tr vào đáy
Mô hình lập trình của máy tính
• Thanh ghi c s và thanh ghi ơ ở
ch sỉ ố – Thanh ghi c s : ch a đ a ch ỉ ơ ở ỉ ơ ớ ơ ở ị nh c s (đ a ch c
ứ ị
ủ c a ngăn s )ở
ứ ộ ệ ớ
ớ ầ – Đ a ch c a ngăn nh c n truy
12
ỉ ố – Thanh ghi ch s : ch a đ l ch ỉ ố ị ỉ gi a ngăn nh mà CPU ữ đ a ch ầ ớ c pậ so v i ngăn nh ớ c n truy ỉ ố ơ ở c s (ch s ) ị c p =ậ ỉ ủ ỉ ơ ở ị đ a ch c s + ch s
Mô hình lập trình của máy tính
• Thanh ghi d li u (Data Register) ữ ệ ữ ệ ạ
ế
ả
ặ
– Ch a các d li u t m th i ho c các k t qu trung ờ
ứ gian ầ
ề
– C n có nhi u thanh ghi d li u ữ ệ – Các thanh ghi s nguyên: 8, 16, 32, 64 bit ố – Các thanh ghi s d u ố ấ ch mấ đ ngộ : 32, 64, 80 bit
ạ
• Thanh ghi tr ng thái (Status Register)
– Còn g i là thanh ghi c (Flags Register) ho c t ờ
ặ ừ
ươ
ạ
ng trình PSW (Program Status Word)
ọ tr ng thái ch
ủ
ứ
ạ
– Ch a các thông tin tr ng thái c a CPU
ủ ế
ệ
ả
ạ
ờ
• Các c phép toán: báo hi u tr ng thái c a k t qu phép
toán
ờ ề
ị ạ
ể
ể
• Các c đi u khi n: bi u th tr ng thái đi u
13 ể ủ ề khi n c a CPU
Mô hình lập trình của máy tính
ụ ờ
• Ví d c phép toán
ế ậ
ế
ượ
c thi
t l p lên 1 khi
ả k t qu
ế qu ả
t l p lên 1 khi k t
ờ ỗ ằ ờ ấ ỏ ơ ờ
ớ
ượ ế ậ c thi ế ủ (k t q a âm) ế phép ế ậ ượ c thi t l p lên 1 n u ấ c báo tràn v i ớ ờ
toán có nh ra ngoài bit cao nh t ố s không d u.
ờ
c thi
ế ậ t l p lên 1 ế
n u ế ả có d u ấ
ờ
– Zero Flag (c r ng): đ ủ c a phép toán b ng 0. – Sign Flag (c d u): đ phép toán nh h n 0 – Carry Flag (c nh ): đ ớ ấ – Overflow Flag (c tràn): đ ố i
ộ c ng hai s nguyên cùng d u mà k t qu ng
ượ ạ c báo tràn v i s có
ượ ấ ớ ố d u .ấ
c l
14
Mô hình lập trình của máy tính
ắ
ắ ớ
• Ví d c đi u khi n ể ụ ờ ề – Interrupt Flag (C cho phép ng t): ờ • N u IF = 1 CPU ắ ừ ầ hi u yêu c u ng t t • N u IF = 0 CPU ắ ừ ầ
ế ệ ế ắ ớ ệ
ử ớ ử ớ ấ i
yêu c u ng t t – Direction Flag (C h
ng): ộ ộ
15
ở ạ tr ng thái cho phép ng t v i tín i bên ngoài g i t ở ạ tr ng thái c m ng t v i tín hi u bên ngoài g i t ờ ướ ậ ậ ướ ướ ớ ớ ế ế Truy c p b nh theo h Truy c p b nh theo h ng tăng ả ng gi m • N u DF=0 • N u DF=1
Mô hình lập trình của máy tính
ộ ố ộ ử
ụ ậ
ủ
• Ví d : T p thanh ghi c a m t s b x lý
16
Các đặc trưng của lệnh máy
ớ
• Gi
ề ậ ệ ộ ậ ệ
ị
ụ ế
ườ
ệ i thi u chung v t p l nh – M i b x lý có m t t p l nh xác đ nh ỗ ộ ử – T p l nh th ậ ệ
ng có hàng ch c đ n hàng
trăm
l nhệ
ị
ộ
ộ
c đ th c hi n m t thao tác xác
ượ
ệ
ỗ ệ ể ượ ể ự hi u đ – Các l nh đ ệ
– M i l nh là m t chu i s nh phân mà b x ộ ử lý ỗ ố ị ệ đ nh. ợ nh ớ ả ằ b ng các ký hi u g i c mô t chính là các l nh c a h p ng (assembly), ví ữ ủ ợ ệ ụ d : ADD, SUB, LOAD, STORE,…
17
Các đặc trưng của lệnh máy
ầ ủ ệ
• Các thành ph n c a l nh máy Opcode
Operand address
– Mã thao tác (operation code): mã hóa cho thao tác mà b ộ
ị ố ệ
ằ ử x lý ph i th c hi n b ng s nh phân (làm gì?) ị ứ
ả – Đ a ch toán h ng ỉ ạ ơ đâu?)
ạ ạ ạ
ủ ớ
ộ
ạ t b ngo i vi,…
ụ
ệ
ạ
toán h ng mà thao tác s tác đ ng ồ ẽ ữ ệ
18
ự ỉ ạ (operand address): ch ra n i ch a các ở ộ (làm • Toán h ng ngu n: d li u vào c a thao tác ủ • Toán h ng đích: d li u ra c a thao tác ữ ệ • Toán h ng: Thanh ghi, b nh , thi ế ị • Ví d : 1 l nh 16 bit có 2 toán h ng
Các đặc trưng của lệnh máy
ỉ
ạ
ệ
• S l
ng đ a ch toán h ng trong l nh
ạ
ị
ỉ
ả ba toán h ngạ
ụ ừ ệ ị ộ
ạ
ạ
ị ố ượ – Ba đ a ch toán h ng: ạ ỉ ị • 2 toán h ng ngu n, 1 toán h ng đích ồ ạ • Ví d : a = b + c ADD A, B, C • T l nh dài vì ph i mã hoá đ a ch cho c ả – Hai đ a ch toán h ng ạ : ỉ • M t toán h ng v a là toán h ng ngu n ừ
ồ v a là toán h ng
ạ ạ
ạ
ạ
đích; toán h ng còn l
ừ ồ toán h ng ngu n
ụ ị
ị ấ
ủ
ả
i là ADD A, B ồ ạ
• Ví d : a = a + b • Giá tr cũ c a 1 toán h ng ngu n b m t vì ph i ch a k t ứ ế
quả
ộ
ượ ử ụ
ổ ế
• Rút g n đ dài t ọ
ừ ệ , đ l nh
c s d ng ph bi n
19
Các đặc trưng của lệnh máy
ỉ
ạ
• S l
ệ (ti p)ế
ỉ
ng đ a ch toán h ng trong l nh ị ộ ộ
c ch ra trong l nh ầ
ị
ố ượ ị – M t ộ đ a ch toán h ng: ỉ • M t toán h ng đ • M t toán h ng là ng m đ nh
ệ ườ ng là
, th
thanh ghi tích lũy
ụ
ạ ạ (accumulator) • Ví d : a = b + c
LOAD B ADD C STORE A ỉ ị ạ
ầ
ị
ử ụ
c ng m đ nh
: S d ng Stack
ạ ượ
20
– Không đ a ch toán h ng ạ : • Các toán h ng đ u đ ề ượ • Ví d : ụ a = b + c PUSH B PUSH C ADD POP A
Các đặc trưng của lệnh máy
ạ
ề
• Đánh giá v s đ a ch toán h ng ề ố ị ỉ ứ ạ
ậ
ỉ – Nhi u đ a ch toán h ng ạ • Các l nh ph c t p h n ơ • C n nhi u thanh ghi ề ầ • Ch ệ • Nh n l nh và th c hi n l nh ch m h n ơ
ị ệ
ị
ề ệ
ươ ậ ệ
ệ ệ
ự
ươ ơ ng trình có ít l nh h n ậ ệ ự ệ ệ – Ít đ a ch toán h ng ỉ • Các l nh đ n gi n h n ơ ơ ệ • C n ít thanh ghi ầ • Ch ơ ng trình có nhi u l nh h n • Nh n l nh và th c hi n l nh nhanh h n ơ
21
ạ ả
Các đặc trưng của lệnh máy
ạ
• Các ki u toán h ng ỉ
ể – Đ a ch ị – Số
– Ký tự
• S nguyên ố • S d u ố ấ ch mấ đ ngộ • Mã BCD
Câu hỏi: Khi đọc trong 1 ô nhớ nhận được gía trị nhị phân 65, làm sao biết được đây là gì? •Số nguyên 65 •Ký tự ‘A’ •Lệnh CT 65 •Địa chỉ 65
22
ờ • Mã ASCII – D li u logic ữ ệ • Các bit ho c các c ặ
Các kiểu thao tác của lệnh
• Phân lo i l nh:
ử ử ề
ể
ể ệ ố
ề
ạ ệ – Di chuy n d li u ể ữ ệ – X lý s h c v i s nguyên ố ọ ớ ố – X lý logic – Đi u khi n vàora (IO) ể – Chuy n đi u khi n (r nhánh) ẽ ề – Đi u khi n h th ng ể
23
Các kiểu thao tác của lệnh
ệ
ộ
ớ
ế ngu n đ n đích ộ ử ớ ế b nh đ n b x lý ế b x lý đ n b nh
Chuy n các bit 0 vào toán h ng đích
ể ấ ộ
ạ ồ
ạ
• Các l nh di chuy n d li u ể ữ ệ – MOVE Copy d li u t ồ ữ ệ ừ – LOAD N p d li u t ạ ữ ệ ừ ộ – STORE ấ ữ ệ ừ ộ ử C t d li u t – EXCHANGE Hoán đ i n i dung c a ngu n và đích ồ ủ ổ ộ – CLEAR ạ ể – SET Chuy n các bit 1 vào toán h ng đích – PUSH C t n i dung toán h ng ngu n vào ngăn
x pế
ộ
ỉ
– POP L y n i dung đ nh ngăn x p đ a đ n ế ư ế
toán
ấ ạ h ng đích
24
Các kiểu thao tác của lệnh
ạ
ạ
ừ
ạ
ệ ố ạ
ạ
ấ
ả
ừ
ạ
• Các l nh s h c ố ọ ệ – ADD C ng hai toán h ng ộ – SUBTRACT Tr hai toán h ng – MULTIPLY Nhân hai toán h ngạ – DIVIDE Chia hai toán h ngạ – ABSOLUTE L y tr tuy t đ i toán h ng ị ấ – NEGATE ừ ổ ấ Đ i d u toán h ng (l y 0 tr toán h ng) – INCREMENT ạ Tăng toán h ng thêm 1 – DECREMENT ạ Gi m toán h ng đi 1 – COMPARE Tr hai toán h ng đ l p c ể ậ ờ
25
Các kiểu thao tác của lệnh
• Các l nh logic ệ
ạ
ệ ệ ệ
ủ
ấ
ạ
ệ
– AND Th c hi n phép AND hai toán h ng ạ – OR Th c hi n phép OR hai toán h ng – XOR Th c hi n phép XOR hai toán h ng ạ – NOT Đ o bit c a toán h ng (l y bù 1) – TEST Th c hi n phép AND hai toán h ng ạ
đ ể
ự ự ự ả ự l p cậ ờ
26
Các kiểu thao tác của lệnh
ệ
• Ví d các l nh logic
ụ – Gi ả ử (R1) = 1010 1010 (R2) = 0000 1111 – R1 (R1) AND (R2) = 0000 1010
ứ ữ ệ ư s có hai thanh ghi ch a d li u nh sau:
ộ ố (Clear) m t s bit và gi ữ
ạ ể Phép toán AND dùng đ xoá ạ ủ ộ ố nguyên m t s bit còn l i c a toán h ng.
– R1 (R1) OR (R2) = 1010 1111
ộ ố t l p ữ
ạ ủ ạ ể Phép toán OR dùng đ thi ộ ố nguyên m t s bit còn l ế ậ (Set) m t s bit và gi i c a toán h ng.
– R1 (R1) XOR (R2) = 1010 0101
ộ ố ữ nguyên
27
ạ ủ ộ ố ạ Phép toán XOR dùng đ đ o m t s bit và gi m t s bit còn l ể ả i c a toán h ng.
Các kiểu thao tác của lệnh
ế
• Các l nh logic (ti p)
ệ – SHIFT ị D ch trái (ph i) toán h ngạ – ROTATE
ả
ả
28
Quay trái (ph i) toán h ngạ
Các kiểu thao tác của lệnh
ệ
• Các l nh nh p xu t chuyên d ng
ư ế
ị đ nh đ a đ n
ụ ấ ữ ệ ừ ộ ổ m t c ng xác
đích (thi
ồ ngu n đ n
ộ ổ ế m t c ng xác
ộ
(b nh
ậ – INPUT : Copy d li u t ế ị b nh ) ớ ộ t b – OUTPUT: Copy d li u t ữ ệ ừ ế ị t b ) ề
ớ thi ể
đ nhị ệ
ệ
ề không đi u ki n
ẽ
ề
• Các l nh chuy n đi u khi n ể – JUMP (BRANCH): L nh ệ ẽ r nhánh – CONDITIONAL JUMP : L nh r nhánh có đi u ệ
ki nệ
ươ
ọ
ng trình con
29
ệ
ở ề ừ ươ
– CALL : L nh g i ch ệ – RETURN : L nh tr v t
ch
ng trình con
Các kiểu thao tác của lệnh
ề
ẽ
ệ
ề
ệ
ế
ự
ở ị
• L nh r nhánh có đi u ki n ệ ệ – Trong l nh có kèm theo đi u ki n ề ệ – Ki m tra đi u ki n trong l nh: ệ chuy n t ể ớ ệ
i th c hi n
ệ ệ l nh
v trí
ể • N u đi u ki n đúng ỉ
ị
ề có đ a ch XXX
PC XXX
ự
ể
chuy n sang th c hi n ệ
ượ
ể
c ki m tra thông
ng đ ẽ
ề
• N u đi u ki n sai ệ ề ế ệ ế ế l nh_k _ti p – Đi u ki n th ườ ệ ề – Có nhi u l nh r nhánh ề ệ
theo các đi u ki n
qua các cờ ệ khác nhau
30
Các kiểu thao tác của lệnh
ạ ệ
ẽ
ề
• Minh ho l nh r nhánh không và có đi u ki n ệ
31
Các kiểu thao tác của lệnh
ạ ệ
ề
ệ
ẽ
• Minh ho l nh r nhánh không và có đi u ki n
(ti p)ế
32
Các kiểu thao tác của lệnh
• L nh CALL và RETURN ọ
ng trình con ứ ị
ỉ ủ
ươ • C t n i dung PC (ch a đ a ch c a ế ế ) ra Stack
ủ
• N p vào PC đ a ch l nh đ u tiên c a
ệ – CALL: G i ch ấ ộ ệ l nh_k _ti p ạ ị ngươ trình con đ ch • B x lý đ ộ ử ươ ệ hi n ch
ầ ỉ ệ ượ ọ c g i ự c chuy n sang th c ươ ứ ng ng
ượ ng trình – RETURN: Tr v t
ể con t ở ề ừ ươ ch
ng trình
con
ế ế đ
c ượ
• L y đ a ch c a ị Stack n p
ỉ ủ l nh_k _ti p ệ ấ ả ạ ạ tr l ấ ở i cho PC c t • B x lý đ ể ở ề ượ ộ ử c đi u khi n quay tr ệ ằ ế ệ ệ ề ự v th c hi n ti p l nh n m sau l nh CALL
33
Các kiểu thao tác của lệnh
• G i các ọ ươ ng trình ch ồ con l ng nhau
34
Các kiểu thao tác của lệnh
ố ữ
ề
ươ
• Truy n tham s gi a các ch
ng trình con
1,y2) có 2 tham s .ố
35
ề ụ ọ – Truy n qua Stack – Ví d : P g i Q(y
Các kiểu thao tác của lệnh
ệ
ể ự
ế
l p ặ ế
ng trình ươ ng trình, ả tho mãn thì ti p
• Các l nh đi u khi n h th ng ệ ố ề – HALT : D ng th c hi n ch ươ ệ ừ – WAIT : T m d ng th c hi n ch ừ ệ ự ạ ệ ề ể ki m tra đi u ki n cho đ n khi ệ ự ụ t c th c hi n
ự
ả
ấ
ể
– NO OPERATION : Không th c hi n gì c ệ – LOCK : C m không cho xin chuy n nh ể – UNLOCK : Cho phép xin chuy n nh ượ
ượ bus ng ng bus
36
Các phương pháp định địa chỉ
ị
• Khái ni m v đ nh đ a ch (addressing)
ỉ ể
ệ ạ
ệ
ặ ổ
ề ị – Toán h ng c a l nh có th là: ủ ệ • M t giá tr c th n m ngay trong l nh ộ ị ụ ể ằ • N i dung c a thanh ghi ộ ủ • N i dung c a ngăn nh ho c c ng ớ ủ ộ IO ỉ ị ươ ng pháp đ nh đ a ch (addressing ỉ ủ ệ ỉ
ị modes) là cách th c ứ ị ể ơ vùng đ a ch c a l nh đ xác đ nh n i
ị ị ị ị ị ị
ị ị ị ị ị ị
ị
ạ – Ph ị ị đ a ch hóa trong ch a toán h ng
37
ứ • Đ nh đ a ch t c thì ỉ ứ • Đ nh đ a ch thanh ghi ỉ • Đ nh đ a ch tr c ti p ỉ ự ế • Đ nh đ a ch gián ti p qua thanh ghi ế ỉ • Đ nh đ a ch gián ti p ỉ ế • Đ nh đ a ch d ch chuy n ể ỉ
Các phương pháp định địa chỉ
ị
• Đ nh đ a ch t c thì ạ
(Immediate Addressing) ỉ ủ ệ
ỉ
ể
ạ
ớ
ậ
ộ ấ ạ
ị ủ
ế
ả
ỉ ứ ị – Toán h ng n m ngay trong ằ vùng đ aị ch c a l nh – Ch có th là toán h ng ngu n ồ – Ví d : ụ ADD R1, 5 ; R1 R1+5 – Không tham chi u b nh ế – Truy c p toán h ng r t nhanh ạ – D i giá tr c a toán h ng b h n ch ị ạ
38
Các phương pháp định địa chỉ
ị
• Đ nh đ a ch thanh ghi (Register
ỉ ị Addressing) – Toán h ng đ
ạ ượ
c ch a trong thanh ghi có ị ứ ỉ tên trong vùng đ a ch
; R1 R1+R2
– Ví d : ụ
ị vùng đ a ch ỉ ng thanh ghi ít
ộ
ế ạ
ADD R1, R2 – S l ố ượ ơ ầ c n ít bit h n – Không tham chi u b nh ớ – Truy c p toán h ng nhanh – Tăng s l ng thanh ghi
ậ ố ượ hi u qu ả ệ
39
h nơ
Các phương pháp định địa chỉ
ị
ị
• Đ nh đ a ch tr c ti p ỉ ự ế (Direct Addressing) – Toán h ng là ngăn nh có đ a ch ỉ ạ ị vùng đ a ị ự ế ỉ cượ ch ra tr c ti p trong đ ỉ ủ l nhệ ch c a – Ví d : ụ
ộ
ớ ộ
ộ ớ
• ADD R1, A ;R1 R1 + (A) • C ng n i dung thanh ghi R1 v i n i dung ỉ
ị
ỉ
ớ
đ a ch A – CPU tham chi u b nh m t l n đ ể
c a ủ ô nh có đ a ch là A • Tìm toán h ng trong b nh ộ ạ ớ ở ị ớ ộ ầ ế ậ ữ ệ truy nh p d li u
40
ộ
Các phương pháp định địa chỉ
ị
ị
• Đ nh đ a ch gián ti p qua ỉ
ế thanh ghi (Register Indirect Addressing) – Toán h ng là ạ
ị ỉ ô nh có đ a ch
ỉ ớ n mằ trong thanh ghi – Vùng đ a ch cho bi ế ị t tên thanh
ầ ghi đó. Thanh ghi có th là ể ng m đ nh
ượ ọ c g i là con
ỏ ị – Thanh ghi này đ tr (pointer)
c tham
ộ
41
– Vùng nh có th đ ể ượ ớ chi u làế ớ l n (2ớ n, v i n là đ dài ủ c a thanh ghi)
Các phương pháp định địa chỉ
ế
ị
ị
• Đ nh đ a ch gián ti p qua ỉ
b ộ nhớ
(Indirect Memory Addressing)
– Bộ nh đ ỉ c a ủ
ớ ượ ứ ị ị ạ ỏ ở vùng đ a ch c tr b i ỉ ủ ệ l nh ch a đ a ch c a toán h ng
ế ể
ư
ố ế ộ
– Có th gián ti p nhi u l n ề ầ – Gi ng nh khái ni m bi n con tr và ỏ ế ệ ậ bi n đ ng trong l p trình – CPU ph i th c hi n tham chi u b ộ ế ệ ự ả ạ nh ớ nhi u l n đ tìm toán h ng ể ề ầ ch mậ
42
ể ượ ế – Vùng nh có th đ ớ c tham chi u là
l nớ
Các phương pháp định địa chỉ
ị
ị
• Đ nh đ a ch d ch chuy n ể ỉ
ị (Displacement Addressing)
ạ
– Đ xác đ nh toán h ng, ị ứ vùng ầ ỉ ch a hai thành ph n:
ể ị đ a ch • Tên thanh ghi • H ng s ố ằ ỉ ủ ị
– Đ a ch c a toán h ng = n i ộ dung thanh ghi + h ng s
ạ ằ – Thanh ghi có th đ ể ượ ố ầ c ng m
43
đ nhị
Các phương pháp định địa chỉ
ị ạ
• Đ nh đ a ch d ch chuy n ỉ ị
ỉ ươ
• Đ a ch hoá t ỉ
ị ị ể (ti p)ế – Các d ng đ a ch d ch chuy n ị ể ố ớ ị ng đ i v i PC – Thanh ghi là B đ m ch ươ ộ ế – Toán h ng có đ a ch cách ị
ạ ỏ ở ng trình PC c ô nh đ ớ ượ tr b i PC
ỉ m t đ l ch xác đ nh
ộ ộ ệ • Đ nh đ a ch c s ị ị ỉ ơ ở (base)
ỉ ơ ở
ằ
ằ ố
ị – Thanh ghi ch a đ a ch c s ứ ị – H ng s là ch s ố ỉ ố • Đ nh đ a ch ch s ị ỉ ố (index) ỉ ị – H ng s là đ a ch c s ỉ ơ ở – Thanh ghi ch a ch s ỉ ố
44
ị ứ
Phân loại tập lệnh
• CISC và RISC
– CISC:Complex Instruction Set Computer:
ầ ủ
– RISC:Reduced Instruction Set Computer:
ụ • Máy tính v i t p l nh đ y đ ớ ậ ệ • Ví d : Intel x86, Motorola 680x0
• Máy tính v i t p l nh thu g n ọ ớ ậ ệ • Ví d : SunSPARC, Power PC, MIPS, ARM ...
ớ
ị
– RISC đ i ngh ch v i CISC
45
ụ ố
Phân loại tập lệnh
ư
ệ ng l nh ệ D l p trình, ễ ậ
ặ – S l ố ượ ươ ch
• Các đ c tr ng c a ủ CISC ề nhi u (vài trăm l nh) ộ ắ ạ
ế
ớ ng trình ng n h n (chi m ít b nh ) ộ ậ ẫ ớ các thanh ghi l n b nh
ự ề ỳ
ầ l nớ ng khuôn d ng l nh
ị
ầ ứ ầ ơ – Truy c p toán h ng ở – C u trúc CPU ph c t p ứ ạ ấ – Th i gian th c hi n l nh c n nhi u chu k máy ệ ệ ờ – S l ệ ạ ố ượ – CPU có t p thanh ghi nh ỏ ậ – Có nhi uề mode đ a ch ỉ – M t s l nh không có m ch ph n c ng riêng (c n có vi
46
ộ ố ệ ươ ạ ệ ch ể ự ng trình đ th c hi n)
Phân loại tập lệnh
• Các đ c tr ng c a RISC ư
ơ ả ấ Khó (vài ch c l nh) và c b n nh t
ụ ệ ơ ng trình dài h n
ậ ươ ệ ạ ở các thanh ghi
ự ộ ỳ
ỉ ị
ủ ặ – S l ệ ố ượ ng l nh ít ậ l p trình, ch – H u h t các l nh truy c p toán h ng ế ầ – C u trúc CPU đ n gi n ả ơ ấ – Th i gian th c hi n l nh là m t chu k máy ệ ệ ờ – S l ệ ạ ố ượ ng khuôn d ng l nh ít (<=4) – CPU có t p thanh ghi l n ớ ậ – Có ít mode đ a ch (<=4) – M i l nh có m ch ph n c ng riêng (không c n vi ầ ứ
ạ ầ
47
ỗ ệ ươ ch ng trình)
Phân loại tập lệnh
• So sánh CISC và RISC
Lo iạ Hãng SX ệ ố H th ng MT Năm SX
CISC RISC . IBM DEC VAX Intel Motorola MIPS 370/168 11/780 486 88000 R4000 1973 1978 1989 1988 1991
ố ượ
S l
ệ ng l nh
208 303 235 51 94
ướ ệ
Kích th
c l nh (B)
26 257 111 4 32
Addressing modes4 22 11 3 1
ố ượ
S l
ng thanh ghi
16 16 8 32 32
ươ
Vi Ch
ngTrình (KB)
420 480 246 0 0
48
Phân loại tập lệnh
ử ụ
ệ
ề
• Th ng kê 10 l nh Intel x86 s d ng nhi u
ố nh tấ
49
ỷ ệ (%)
TT 1 2 3 4 5 6 7 8 9 10
L nhệ load conditional branch compare store add and sub move registerregister call return Total T l 22% 20% 16% 12% 8% 6% 5% 4% 1% 1% 96%
Phân loại tập lệnh
ế
ủ
ẫ ử ụ
• T i sao ki n trúc CISC c a Intel v n s d ng
ng thích
ợ ề ươ ự ớ
ấ ử ụ ề ẵ
ậ
ạ nhi u?ề – V n đ t ấ – D xây d ng trình d ch (compiler) h n ơ ị ễ – Phù h p v i nhi u NNLT c p cao (HLL) – Ph n m m có s n đang s d ng nhi u ề ề ầ – Th c t ậ ệ ệ ố ự ế ệ hi n nay s d ng h th ng t p l nh lai gi a RISC và CISC ổ ứ ế ử ụ
ươ
• T ch c bên trong theo RISC • Ki n trúc l p trình bên ngoài theo CISC • S d ng vi ch ng trình làm trung gian
50
ử ụ ữ
Phân loại tập lệnh
•
ể
ủ c đi m c a CISC
ơ ớ ể ư ộ ữ
– Nh
ể c đi m ệ
ệ ễ ọ ễ ể ơ ươ ệ ng trình ít l nh h n, ít t n b nh đ l u tr ớ ớ ộ ậ ễ ế ng trình d vi t, d đ c và d hi u h n
ệ ứ ạ i mã l nh ch m
• D ng l nh ph c t p, gi ả • L nh ph c t p nên không uy n chuy n, không áp ứ ạ
ượ Ư u nh – u đi m Ư ể • Ch ố ươ • Truy c p b nh v i ít l nh h n ơ • Ch ượ ạ ệ ụ d ng cho nghi u tr ắ ử
ậ ể ể ng h p khác nhau
ườ ơ ợ ệ ề ậ ề ế
51
• X lý ng t ch m h n (do l nh chi m nhi u chu k ỳ ứ ờ máy) nên th i gian đáp ng kém
Kiến trúc tập lệnh Intel x86
52
Kiến trúc tập lệnh Intel x86
53
Kiến trúc tập lệnh Intel x86
54
Kiến trúc tập lệnh Intel x86
55
Kiến trúc tập lệnh Intel x86
56
Kiến trúc tập lệnh Intel x86
57
58
Kiến trúc tập lệnh Intel x86
59
Kiến trúc tập lệnh Intel x86
60
Kiến trúc tập lệnh Intel x86
61
Kiến trúc tập lệnh Intel x86
62
Kiến trúc tập lệnh Intel x86
63
64
Kiến trúc tập lệnh Intel x86
65
Kiến trúc tập lệnh Intel x86
66
Kiến trúc tập lệnh Intel x86
67
• Ví dụ về khuôn dạng lệnh của CPU Intel x86
Kiến trúc tập lệnh Intel x86
68
Kiến trúc tập lệnh Intel x86
69
Kiến trúc tập lệnh Intel x86
70
Câu hỏi
71