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
ỷ
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.
) 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.
đượ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
.
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
•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
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.