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ào­ra (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)

2­6               2­57         1­11                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 register­register  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