- Trang Chủ
- Phần cứng
- 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
Xem mẫu
- Khoa KH & KT Máy tính
Boä moân Kyõ thuaät Maùy tính
Phaïm Töôøng
ng Haûi
Nguyeãn Quoác Tuaán
- Tài liệu tham khả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 2
- Chương 3.
Kiến trúc Máy tính - Chap 03 3
- 3.1 Dẫn nhập
Kiến trúc của máy tính bao gồm 2 phần
• Kiến trúc phần cứng
• Kiến trúc tập lệnh
Cả 2 phần trên có mối quan hệ tương hỗ với nhau
Có 2 cách để tiếp cận đến kiến trúc máy tính
• Tiếp cận từ phần cứng
• Tiếp cận từ tập lệnh
chúng ta chọn cách tiếp cận từ tập lệnh
Sử dụng hợp ngữ để giới thiệu tập lệnh
Dùng tập lệnh của bộ xử lý MIPS để minh họa chính
Kiến trúc Máy tính - Chap 03 4
- 3.2 Phép toán
Các máy tính đều có thể thực hiện các phép toán số học
Xét câu lệnh sau (hợp ngữ MIPS)
add a , b , c
• Chỉ thị cho máy tính thực hiện phép toán cộng
• Phép toán trên chỉ có thể thực hiện với 3 toán hạng
Nếu muốn thực hiện phép toán với nhiều toán hạng ?
• Phải dùng nhiều câu lệ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ần văn bản đi theo ký hiệu # dành cho chú thích
Kiến trúc Máy tính - Chap 03 5
- ...
Việc cố định số lượng toán hạng trong câu lệnh giúp
đơn giản hóa đáng kể việc thiết kế mạch phần cứng
Nguyên tắc thiết kế 1
Càng đơn giản, càng ổn định
Thí dụ. Dịch đoạn chươ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 6
- ...
Thí dụ. Dịch đoạn chương trình C sau đây sang hợp
ngữ
f = (g + h ) - (i + j)
Giải đáp.
add t0 , g , h # biến phụ t0 chứa g + h
add t1 , i , j # biến phụ t1 chứa i + j
sub f , t0 , t1 # f chính là kết quả cần tìm
Kiến trúc Máy tính - Chap 03 7
- 3.3 Toán hạng
Ở các chương trình viết bằng ngôn ngữ cấp cao, biến
(variable) đóng vai trò của toán hạng
Đối với các câu lệnh (instruction), ngôn ngữ cấp thấp,
toán hạng thường được chứa trong các thanh ghi
Kích thước thanh ghi ở bộ xử lý MIPS là 32 bit.
kích thước toán hạng trong các câu lệnh MIPS bị
giới hạn ở 32 bit, từ (word)
Số lượng thanh ghi cũng giới hạ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ắc thiết kế 2
Càng nhỏ, càng nhanh
Kiến trúc Máy tính - Chap 03 8
- ...
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ồn C
• Các thanh ghi $t0 , $t1 , ... chứa các biến tạm trong quá trình
dịch từ C sang hợp ngữ MIPS
Thí dụ. Dịch đoạn chương trình C sau đây sang hợp
ngữ MIPS với các biến f , g , h , i và j được chứ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ến phụ t0 chứa g + h
add $t1 , $s3 , $s4 # biến phụ t1 chứa i + j
sub $s0 , $t0 , $t1 # f chính là kết quả cần tìm
Kiến trúc Máy tính - Chap 03 9
- ...
Ngoài các biến đơn, còn có các biến phức tạp thể hiện
nhiều kiểu cấu trúc dữ liệu khác nhau, td. array
Các cấu trúc dữ liệu phức tạp có số phần tử dữ liệu
nhiều hơn số thanh ghi của bộ xử lý
Nếu các thanh ghi của bộ xử lý chỉ có thể chứa một
lượng nhỏ dữ liệu thì bộ nhớ của máy tính có thể chứa
được rất nhiều dữ liệu
các cấu trúc dữ liệu phức tạp được chứa trong bộ
nhớ của máy tính
Cần thiết các câu lệnh thực hiện việc chuyển dữ liệu
giữa thanh ghi và bộ nhớ
nhóm lệnh chuyển dữ liệu (data transfer)
Kiến trúc Máy tính - Chap 03 10
- ...
Bộ nhớ có thể được xem như là array một chiều rất lớn
của các ô nhớ
Các ô nhớ được đánh số thứ tự từ 0 trở đi
địa chỉ (address) ô nhớ
Để có thể truy xuất (access) 1 từ nào đó trong bộ nhớ,
cần phải cung cấp địa chỉ ô nhớ
Hình vẽ dưới đây minh họa bộ nhớ
.
. .
.
. .
3 100
2 10
1 101
0 1
Địa chỉ Dữ liệu
Kiến trúc Máy tính - Chap 03 11
- ...
Lệnh chuyển dữ liệu từ bộ nhớ vào thanh ghi gọi là lệnh
nạp (load)
Từ gợi nhớ dùng trong hợp ngữ MIPS là lw (load word)
Thí dụ. Giả sử A là 1 array gồm 100 từ với địa chỉ bắt
đầu (starting address) hay địa chỉ 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ểu sau:
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 12
- ...
Ô nhớ có kích thước 8 bit (byte)
Mỗi từ 32 bit cần dùng đến 4 ô nhớ
• Mỗi từ phải được bắt đầu ở địa chỉ là bội số của 4
(alignment restriction)
• Thứ tự của các byte trong 1 từ: Big Endian hay Little Endian
Hình vẽ minh họa bộ nhớ
11 0
.
. .
.
. . 10 1
12 100 9 0
8 10 8 0
4 101 Big Endian 11 0
0 1 10 0
Địa chỉ Dữ liệu 9 1
8 0
Little Endian
Kiến trúc Máy tính - Chap 03 13
- ...
Câu lệnh ngược lại với lw là sw (store word), ghi dữ
liệu từ thanh ghi ra bộ nhớ
Thí dụ. Giả sử biến h được gán vào thanh ghi $s2 và
$s3 chứa địa chỉ nền của array A. Dịch phát biểu sau
A[12] = h - A[8]
Giải đáp.
lw $t0 , 32($s3) # chứa A[8] vào $t0
add $t0 , $s2 , $t0
sw $t0 , 48($s3) # kết quả vào A[12]
Số biến của chương trình thường nhiều hơn số thanh
ghi của bộ 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
Kiến trúc Máy tính - Chap 03 14
- 3.4 Biểu diễn câu lệnh
Các thanh ghi trong bộ xử lý cũng được gán địa chỉ
tương tự như đối với ô nhớ
• Các thanh ghi $s0 ÷ $s7 có địa chỉ từ 16 đến 23
• Các thanh ghi $t0 ÷ $t7 có địa chỉ từ 8 đến 15
Xét câu lệnh hợp ngữ add $t0 , $s1 , $s2
• Dạng nhị phân
000000 10001 10010 01000 00000 100000
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
• Còn được gọi là dạng ngôn ngữ máy (machine language) hay
mã máy (machine code)
• Câu lệ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
Kiến trúc Máy tính - Chap 03 15
- ...
Các trường trong câu lệnh MIPS
op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
• op : operation code tác vụ cơ bản của câu lệnh
• rs : 1st source operand toán hạng nguồn thứ nhất
• rt : 2nd source operand toán hạng nguồn thứ hai
• rd : destination operand toán hạng đích (kết quả)
• shamt : shift amount có ý nghĩa đối với lệnh dịch và
mang giá trị 00000 đối với các lệnh khác
• funct : function code bổ túc cho vùng op
Làm sao giải quyết trường hợp nếu câu lệnh đòi hỏi
trường dành cho toán hạng phải lớn hơn 5 bits ?
• Td. Lệnh lw cần biểu diễn 2 địa chỉ thanh ghi và 1 hằng số, nếu
giới hạn ở 5 bit, hằng số không lớn hơn 25 = 32
Kiến trúc Máy tính - Chap 03 16
- ...
Nguyên tắc thiết kế 3
Thiết kế tốt đòi hỏi phải có sự dàn xếp tốt
Đối với tập lệ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 đã xem xét là R-type
• Dạng lệnh I-type
op rs rt address
6 bits 5 bits 5 bits 16 bits
• Thí dụ. Câu lệnh lw $t0 , 32($s3)
100011 10011 01000 0000 0000 0000 0000 0000 0010 0000
6 bits 5 bits 5 bits 16 bits
• Ba trường đầu của cả 2 dạng lệnh là giống nhau
Kiến trúc Máy tính - Chap 03 17
- ...
Thí dụ. Tìm hiểu mã máy của đoạn hợp ngữ sau
lw $t0 , 1200($t1)
add $t0 , $s2 , $t0
sw $t0 , 1200($t1)
Giải đáp.
35 9 8 1200
0 18 8 8 0 32
43 9 8 1200
100011 01001 01000 0000 0100 1011 0000
000000 10010 01000 01000 00000 100000
101011 01001 01000 0000 0100 1011 0000
Kiến trúc Máy tính - Chap 03 18
- 3.5 Lệnh ra quyết định
Dựa trên dữ liệu đầu vào cùng với một số giá trị tính
toán mà một câu lệnh khác (không phải là câu lệnh kế
tiếp trong chương trình) được thực thi
Hỗ trợ thực thi cho phát biểu rẽ nhánh ở ngôn ngữ cấp
cao: if , goto , while , ...
Làm quen với 2 câu lệnh hợp ngữ của MIPS
• Branch if equal
beq reg1 , reg2 , L1
• Branch if not equal
bne reg1 , reg2 , L1
Hợp ngữ gọi chúng là các lệnh rẽ nhánh có điều kiện
(conditional branch)
Kiến trúc Máy tính - Chap 03 19
- ...
Thí dụ. Dịch đoạn mã C sau đây sang hợp ngữ MIPS
if ( i == j ) goto L1;
f = g + h;
L1: f = f - i;
giả sử các biến từ 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 20
nguon tai.lieu . vn