Tải bản đầy đủ (.pdf) (47 trang)

bài giảng kiến trúc máy tính chương 3 phạm tường hải, nguyễn quốc tuấn câu lệnh ngôn ngữ của máy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (922.93 KB, 47 trang )

Khoa
Khoa
KH & KT
KH & KT
M
M


y
y
t
t


nh
nh
Bo
Bo


moõn
moõn
Kyừ
Kyừ
thua
thua


t
t
Ma


Ma


y
y
t
t


nh
nh
Pha
Pha
ù
ù
m
m
T
T






ng
ng
Ha
Ha



i
i
Nguyeón
Nguyeón
Quo
Quo


c
c
Tua
Tua


n
n
Kiến trúc Máy tính - Chap 03
2
Tài liệuthamkhảo
) “Computer Organization and Design: the hardware/software
interface”,
John L. Hennessy & David A. Patterson, Second Edition,
MORGAN KAUFMANN PUBLISHERS, INC. 1998
) “Computer Architecture: a quantitative approach”,
John L. Hennessy & David A. Patterson, Third Edition,
MORGAN KAUFMANN PUBLISHERS, INC. 2002
Kiến trúc Máy tính - Chap 03
3
Chương 3.

Kiến trúc Máy tính - Chap 03
4
3.1 Dẫnnhập
) Kiếntrúccủa máy tính bao gồm2 phần
•Kiếntrúcphầncứng
•Kiếntrúctậplệnh
) Cả 2 phầntrêncómối quan hệ tương hỗ với nhau
) Có 2 cách để tiếpcận đếnkiến trúc máy tính
•Tiếpcậntừ phầncứng
•Tiếpcậntừ tậplệnh
Ö chúng ta chọncáchtiếpcậntừ tậplệnh
) Sử dụng hợpngữđểgiớithiệutậplệnh
) Dùng tậplệnh củabộ xử lý MIPS để minh họachính
Kiến trúc Máy tính - Chap 03
5
3.2 Phép toán
) Các máy tính đềucóthể thựchiện các phép toán số học
) Xét câu lệnh sau (hợpngữ MIPS)
add a , b , c
•Chỉ thị cho máy tính thựchiện phép toán cộng
• Phép toán trên chỉ có thể thựchiệnvới 3 toán hạng
) Nếumuốnthựchiện phép toán với nhiều toán hạng ?
•Phải dùng nhiềucâulệnh để chỉ thị
add a , b , c # the sum of b and c is placed in a
add a , a , d # the sum of b, c and d is placed in a
add a , a , e # the sum of b, c, d and e is placed in a
•Mỗi hàng dành để ghi 1 câu lệnh
•Phầnvănbản đitheokýhiệu # dành cho chú thích
Kiến trúc Máy tính - Chap 03
6


) Việccốđịnh số lượng toán hạng trong câu lệnh giúp
đơngiản hóa đáng kể việcthiếtkế mạch phầncứng
) Nguyên tắcthiếtkế 1
Càng đơngiản, càng ổn định
) Thí dụ. Dịch đoạnchương trình C sau đây sang hợp
ngữ
a = b + c
d = a - e
) Giải đáp.
add a , b , c
sub d , a , e
Kiến trúc Máy tính - Chap 03
7

) Thí dụ. Dịch đoạnchương trình C sau đây sang hợp
ngữ
f = ( g + h ) - ( i + j )
) Giải đáp.
add t0 , g , h # biếnphụ t0 chứag + h
add t1 , i , j # biếnphụ t1 chứai + j
sub f , t0 , t1 # f chính là kếtquả cần tìm
Kiến trúc Máy tính - Chap 03
8
3.3 Toán hạng
) Ở các chương trình viếtbằng ngôn ngữ cấp cao, biến
(variable) đóng vai trò của toán hạng
) Đốivớicáccâu lệnh (instruction), ngôn ngữ cấpthấp,
toán hạng thường đượcchứa trong các thanh ghi
) Kích thước thanh ghi ở bộ xử lý MIPS là 32 bit.

Ö kích thướctoánhạng trong các câu lệnh MIPS bị
giớihạn ở 32 bit, từ (word)
) Số lượng thanh ghi cũng giớihạn. Bộ xử lý MIPS chỉ có
32 thanh ghi 32 bit tham gia vào các phép toán số học
) Nguyên tắcthiếtkế 2
Càng nhỏ, càng nhanh
Kiến trúc Máy tính - Chap 03
9

) Trong các thí dụ kế tiếp, chúng ta sử dụng
• Các thanh ghi $s0 , $s1 , chứa các biến trong mã nguồnC
• Các thanh ghi $t0 , $t1 , chứa các biếntạm trong quá trình
dịch từ C sang hợpngữ MIPS
) Thí dụ. Dịch đoạnchương trình C sau đây sang hợp
ngữ MIPS với các biến f , g , h , i và j đượcchứa
sẵn trong các thanh ghi $s0 , $s1 , $s2 , $s3 và $s4
f = ( g + h ) - ( i + j )
) Giải đáp.
add $t0 , $s1 , $s2 # biếnphụ t0 chứag + h
add $t1 , $s3 , $s4 # biếnphụ t1 chứai + j
sub $s0 , $t0 , $t1 # f chính là kếtquả cần tìm
Kiến trúc Máy tính - Chap 03
10

) Ngoài các biến đơn, còn có các biếnphứctạpthể hiện
nhiềukiểucấutrúcdữ liệu khác nhau, td. array
) Các cấutrúcdữ liệuphứctạpcósố phầntử dữ liệu
nhiềuhơnsố thanh ghi củabộ xử lý
) Nếu các thanh ghi củabộ xử lý chỉ có thể chứamột
lượng nhỏ dữ liệuthìbộ nhớ củamáytínhcóthể chứa

đượcrấtnhiềudữ liệu
Ö các cấutrúcdữ liệuphứctạp đượcchứatrongbộ
nhớ của máy tính
) Cầnthiếtcáccâulệnh thựchiệnviệcchuyểndữ liệu
giữa thanh ghi và bộ nhớ
Ö nhóm lệnh chuyểndữ liệu (data transfer)
Kiến trúc Máy tính - Chap 03
11

) Bộ nhớ có thểđượcxemnhư là array mộtchiềurấtlớn
của các ô nhớ
) Các ô nhớđược đánh số thứ tự từ 0 trởđi
Ö địachỉ (address) ô nhớ
) Để có thể truy xuất (access) 1 từ nào đó trong bộ nhớ,
cầnphải cung cấp địachỉ ô nhớ
) Hình vẽ dưới đây minh họabộ nhớ
Dữ liệuĐịachỉ
10
1011
102
1003
.
.
.
.
.
.
Kiến trúc Máy tính - Chap 03
12


) Lệnh chuyểndữ liệutừ bộ nhớ vào thanh ghi gọilàlệnh
nạp (load)
) Từ gợinhớ dùng trong hợpngữ MIPS là lw (load word)
) Thí dụ. Giả sử A là 1 array gồm 100 từ với địachỉ bắt
đầu (starting address) hay địachỉ nền (base address)
chứa trong thanh ghi $s3 , các biến g , h chứa trong
thanh ghi $s1 và $s2 . Hãy dịch phát biểusau:
g = h + A[8]
) Giải đáp.
lw $t0 , 8($s3) # chứa A[8] vào $t0
add $s1 , $s2 , $t0
Kiến trúc Máy tính - Chap 03
13

) Ô nhớ có kích thước 8 bit (byte)
) Mỗitừ 32 bit cần dùng đến4 ô nhớ
•Mỗitừ phải đượcbắt đầu ởđịachỉ là bộisố của4
(alignment restriction)
•Thứ tự của các byte trong 1 từ: Big Endian hay Little Endian
) Hình vẽ minh họabộ nhớ
Dữ liệuĐịachỉ
10
1014
108
10012
.
.
.
.
.

.
Big Endian
08
09
110
011
Little Endian
08
19
010
011
Kiến trúc Máy tính - Chap 03
14

) Câu lệnh ngượclạivới lw là sw (store word), ghi dữ
liệutừ thanh ghi ra bộ nhớ
) Thí dụ. Giả sử biến h được gán vào thanh ghi $s2 và
$s3 chứa địachỉ nềncủaarray A. Dịch phát biểusau
A[12] = h - A[8]
) Giải đáp.
) Số biếncủachương trình thường nhiềuhơnsố thanh
ghi củabộ xử lý
• Thanh ghi chỉ chứa các biến đang xử lý hiện hành và các biến
thường sử dụng
•Kỹ thuật spilling registers
lw $t0 , 32($s3) # chứa A[8] vào $t0
add $t0 , $s2 , $t0
sw $t0 , 48($s3) # kếtquả vào A[12]
Kiến trúc Máy tính - Chap 03
15

3.4 Biểudiễn câu lệnh
) Các thanh ghi trong bộ xử lý cũng được gán địachỉ
tương tự nhưđốivớiô nhớ
• Các thanh ghi $s0 ÷ $s7 có địachỉ từ 16 đến 23
• Các thanh ghi $t0 ÷ $t7 có địachỉ từ 8 đến 15
) Xét câu lệnh hợpngữ add $t0 , $s1 , $s2
•Dạng nhị phân
•Cònđượcgọilàdạng ngôn ngữ máy (machine language) hay
mã máy (machine code)
•Câulệnh MIPS có độ dài cốđịnh là 32 bits được chia ra thành
nhiều trường (field) có độ dài là 5 hay 6 bits
6 bits5 bits5 bits5 bits5 bits6 bits
10000000000010001001010001000000
Kiến trúc Máy tính - Chap 03
16

) Các trường trong câu lệnh MIPS
• op : operation code Ö tác vụ cơ bảncủacâulệnh
• rs : 1
st
source operand Ö toán hạng nguồnthứ nhất
• rt : 2
nd
source operand Ö toán hạng nguồnthứ hai
• rd : destination operand Ö toán hạng đích (kếtquả)
• shamt : shift amount Ö có ý nghĩa đốivớilệnh dịch và
mang giá trị 00000 đốivớicáclệnh khác
• funct : function code Ö bổ túc cho vùng op
) Làm sao giải quyếttrường hợpnếucâulệnh đòi hỏi
trường dành cho toán hạng phảilớnhơn 5 bits ?

•Td. Lệnh lw cầnbiểudiễn2 địachỉ thanh ghi và 1 hằng số, nếu
giớihạn ở 5 bit, hằng số không lớnhơn 2
5
= 32
6 bits5 bits5 bits5 bits5 bits6 bits
functshamtrdrtrsop
Kiến trúc Máy tính - Chap 03
17

) Nguyên tắcthiếtkế 3
Thiếtkế tốt đòi hỏiphảicósự dàn xếptốt
) Đốivớitậplệnh MIPS, để giữ cho độ dài câu lệnh không
đổi Ö xây dựng 2 dạng lệnh khác nhau
•Dạng lệnh mà chúng ta đãxemxétlà R-type
•Dạng lệnh I-type
•Thídụ.Câulệnh lw $t0 , 32($s3)
•Batrường đầucủacả 2 dạng lệnh là giống nhau
16 bits5 bits5 bits6 bits
addressrtrsop
16 bits5 bits5 bits6 bits
0000 0000 0000 0000 0000 0010 00000100010011100011
Kiến trúc Máy tính - Chap 03
18

) Thí dụ. Tìm hiểumãmáycủa đoạnhợpngữ sau
) Giải đáp.
lw $t0 , 1200($t1)
add $t0 , $s2 , $t0
sw $t0 , 1200($t1)
0000 0100 1011 00000100001001101011

10000000000010000100010010000000
0000 0100 1011 00000100001001100011
12008943
32088180
12008935
Kiến trúc Máy tính - Chap 03
19
3.5 Lệnh ra quyết định
) Dựatrêndữ liệu đầu vào cùng vớimộtsố giá trị tính
toán mà mộtcâulệnh khác (không phảilàcâulệnh kế
tiếp trong chương trình) đượcthựcthi
) Hỗ trợ thực thi cho phát biểurẽ nhánh ở ngôn ngữ cấp
cao: if , goto , while ,
) Làm quen với2 câulệnh hợpngữ củaMIPS
• Branch if equal
beq reg1 , reg2 , L1
• Branch if not equal
bne reg1 , reg2 , L1
) Hợpngữ gọi chúng là các lệnh rẽ nhánh có điềukiện
(conditional branch)
Kiến trúc Máy tính - Chap 03
20

) Thí dụ. Dịch đoạnmãC sauđây sang hợpngữ MIPS
if ( i == j ) goto L1;
f = g + h;
L1: f = f - i;
giả sử các biếntừ f đến j tương ứng với các thanh ghi từ
$s0 đến $s4
) Bài giải.

Kiến trúc Máy tính - Chap 03
21

) Thí dụ. Cũng sử dụng các biến và thanh ghi ở thí dụ
trước, dịch đoạn mã C sau đây sang hợpngữ MIPS
if ( i == j ) f = g + h;
else f = g - h;
) Bài giải.
) Lệnh j (jump) là lệnh rẽ nhánh không điềukiện
(unconditional branch)
Kiến trúc Máy tính - Chap 03
22

) Thí dụ. Dịch đoạnmãC sauđây sang hợpngữ MIPS
Array A 100 phầntử có
địachỉ nềnlà$s5 , các biến
g , h , i và j tương ứng với
các thanh ghi $s1 đến $s4
) Bài giải.
Loop: g = g + A[i] ;
i = i + j ;
if ( i != h) goto Loop
Kiến trúc Máy tính - Chap 03
23

) Thí dụ. Dịch đoạnmãC sauđây sang hợpngữ MIPS
Array A có địachỉ nềnlà$s6 ,
các biến i , j và k tương ứng với
các thanh ghi $s3 , $s4 và $s5
) Bài giải.

while ( A[i] == k )
i = i + j ;
Kiến trúc Máy tính - Chap 03
24

) Lệnh set on less than slt reg0 , reg1 , reg2
) Thanh ghi $zero là thanh ghi đặcbiệt luôn mang giá trị 0
) Thí dụ.
Giải thích ý nghĩacủa đoạnmãhợpngữ MIPS sau
) Bài giải. ?
slt $t0 , $s0 , $s1
bne $t0 , $zero , Less
Kiến trúc Máy tính - Chap 03
25

) Thí dụ. Dịch đoạnmãC sauđây sang hợpngữ MIPS
giả sử các biến f đến k tương ứng với $s0 đến $s5,
thanh ghi $t2 mang giá trị 4
Switch ( k ) {
case 0 : f = i + j ; break ;
case 1 : f = g + h ; break ;
case 2 : f = g - h ; break ;
case 3 : f = i - j ; break ;
}

×