Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ máy - Tập lệnh - Nguyễn Thanh Sơn

Kiến trúc Máy tính  
Khoa học & Kỹ thuật Máy tính  
Chương 2  
Ngôn ngMáy:  
Tp lnh  
BK  
TP.HCM  
Các thành phần & Cấu trúc  
BK  
TP.HCM  
2
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Các bước thực hiện lệnh  
. Nạp lệnh: từ bộ nhớ  
. PC tăng lên sau mỗi lần nạp lệnh  
. PC lưu địa chỉ lệnh kế tiếp  
. Thực hiện lệnh: giải mã & thực hiện lệnh  
BK  
TP.HCM  
3
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Tập lệnh (Instruction Set)  
Tập các lệnh của 1 máy tính  
Máy tính khác nhau có các tập lệnh  
khác nhau  
Tuy vậy, có thể có nhiều điểm giống nhau  
Máy tính ở các thế hệ trước thường có  
tập lệnh rất đơn giản  
Lý do: dễ thực hiện  
Một số máy tính hiện nay cũng có tập  
lệnh đơn giản  
BK  
TP.HCM  
4
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Tập lệnh MIPS  
Được sử dụng trong môn học này  
Stanford MIPS được thương mại hóa bởi  
MIPS Technologies (www.mips.com)  
Có thị phần lớn với lõi nhúng (embedded  
core)  
Ứng dụng trong thiết bị điện tử, Mạng, lưu trữ,  
Camera, máy in, v.v., …  
Đặc thù cho nhiều kiến trúc tập lệnh mới  
Tham khảo MIPS Data tear-out card, và trong phụ  
lục B, E của sách giáo khoa  
BK  
TP.HCM  
5
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Phép tính số học  
Phép cộng (+) và trừ (-): 3 toán hạng  
2 nguồn và 1 đích  
add a, b, c # a = b + c  
Các phép tính số học đều có dạng trên  
Nguyên tắc thiết kế 1: Đơn giản dễ tạo  
tính quy tắc  
Tính quy tắc sẽ đơn giản hơn việc thực  
hiện  
Đơn giản sẽ nâng hiệu xuất, giảm giá  
thành.  
BK  
TP.HCM  
6
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Ví dụ: thực hiện phép số học  
C code:  
f = (g + h) - (i + j);  
Sau khi biên dịch thành MIPS code:  
add t0, g, h # temp t0 = g + h  
add t1, i, j # temp t1 = i + j  
sub f, t0, t1 # f = t0 - t1  
BK  
TP.HCM  
7
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Toán hạng là thanh ghi  
Có nhiều lệnh số học sử dụng các thanh ghi  
làm toán hạng  
MIPS có tệp 32 thanh ghi 32-bit  
Use for frequently accessed data  
Đánh số từ 0 đến 31  
32-bit dữ liệu được gọi là 1 “từ” (“word”)  
Được đặt tên gợi nhớ (Ass. Names):  
$t0, $t1, …, $t9 chứa các giá trị tạm thời  
$s0, $s1, …, $s7 chứa các biến  
Nguyên tắc thiết kế 2: Càng nhỏ, càng nhanh  
Ngược lại với bộ nhớ chính: hàng triệu ô nhớ.  
BK  
TP.HCM  
8
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Ví dụ: toán hạng thanh ghi  
C code:  
f = (g + h) - (i + j);  
f, …, j chứa trong $s0, …, $s4  
Sau khi biên dịch thành MIPS code:  
add $t0, $s1, $s2  
add $t1, $s3, $s4  
sub $s0, $t0, $t1  
BK  
TP.HCM  
9
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Toán hạng là bộ nhớ  
Bộ nhớ chính dùng để lưu trữ toán hạng có  
cấu trúc  
Arrays, structures, dynamic data  
Sử dụng cho các phép số học  
Nạp các giá trị từ bộ nhớ vào các thanh ghi  
Lưu giữ các kết quả trong thanh ghi ra bộ nhớ  
Bộ nhớ được định vị theo đơn vị từng byte  
Mỗi địa chỉ định vị trí cho một 8-bit byte  
1 từ được sắp xếp gồm 4 bytes trong bộ nhớ  
Địa chỉ truy xuất = Địa chỉ biểu diễn * 4 byte  
MIPS chứa dữ liệu theo Big Endian  
Big Enở địa chỉ thấp  
Little Endian: Byte có giá trị nhỏ nhất Địa chỉ  
thấp  
BK  
TP.HCM  
10  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Ví dụ 1: Toán hạng bộ nhớ  
C code:  
g = h + A[8];  
g chứa trong $s1, h trong $s2, địa chỉ cơ  
sở của A chứa trong $s3  
Sau khi biên dịch thành MIPS code:  
Chỉ số 8 tương đương với độ dời 32  
4 bytes/word  
lw $t0, 32($s3) # Nạp 1 từ (4bytes)  
add s2,
BK  
TP.HCM  
11  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Ví dụ 2: Toán hạng bộ nhớ  
C code:  
A[12] = h + A[8];  
h chứa trong $s2, địa chỉ cơ sở của A chứa  
trong $s3  
Sau khi biên dịch thành MIPS code:  
Chỉ số 8 tương đương với độ dời 32  
lw $t0, 32($s3) # Nạp 1 từ  
add $t0, $s2, $t0  
sw $t0, 48($s3) # Nhớ 1 từ  
BK  
TP.HCM  
12  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
So sánh toán hạng thanh ghi & bộ nhớ  
Truy cập toán hạng thanh ghi nhanh  
hơn bộ nhớ  
Thực hiện toán hạng thanh ghi cần nạp  
và cất dữ liệu cần nhiều lệnh thực  
hiện hơn  
Trình biên dịch yêu cầu các biến chứa  
trong thanh ghi tối đa  
Chỉ chứa các biến trong bộ nhớ khi chúng  
ít được dùng đến  
Tối ưu thanh ghi rất quan trọng!  
BK  
TP.HCM  
13  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Toán hạng trực tiếp  
Các dữ liệu hằng trong 1 lệnh, như  
addi $s3, $s3, 4  
Không tồn tại lệnh trừ với toán hạng  
trực tiếp (?????)  
Tương đương với cộng 1 số âm  
addi $s2, $s1, -1  
Nguyên tắc thiết kế 3: Làm cho các  
trường hợp phổ biến thực hiện nhanh  
Hằng có giá trị nhỏ rất phổ biến  
Toán hạng trực tiếp trách được lệnh nạp  
BK  
TP.HCM  
14  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Thanh ghi Hằng 0 (Zero)  
Thanh ghi MIPS 0 ($zero) là hằng cố  
định có giá trị 0  
Giá trị không thay đổi được  
Có ích cho các tác vụ thường gặp như:  
Ví dụ, gán giá trị một thanh ghi cho thanh  
ghi khác  
add $t2, $s1, $zero # $t2 = $s1  
BK  
TP.HCM  
15  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Số nguyên nhị phân không dấu  
Cho 1 số n-bit, có dạng  
Tầm vực giá trị sẽ là: 0 đến +2n 1  
Ví dụ:  
0000 0000 0000 0000 0000 0000 0000 10112  
= 0 + … + 1×23 + 0×22 +1×21 +1×20  
= 0 + … + 8 + 0 + 2 + 1 = 1110  
Giá trị 1 số nhị phân không dấu 32-bit  
sẽ là:  
0 đến +4,294,967,295 (giá trị thập phân)  
BK  
TP.HCM  
16  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Số nguyên có dấu dạng bù 2  
Cho 1 số n-bit như sau:  
Tầm giá trị: –2(n 1) đến +2(n 1) 1  
Ví dụ:  
1111 1111 1111 1111 1111 1111 1111 11002  
= 1×231 + 1×230 + … + 1×22 +0×21 +0×20  
= 2,147,483,648 + 2,147,483,644 = 410  
Giá trị 1 số nhị phân có dấu 32-bit sẽ  
là  
2,147,483,648 đến +2,147,483,647  
BK  
TP.HCM  
17  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Số nguyên có dấu dạng bù 2 (tt.)  
Bit 31 là bit dấu  
1 có nghĩa là số âm (-)  
0 có nghĩa là số không âm (+)  
Dạng –(2n 1) không tồn tại  
Các số không âm biểu diễn giống số không  
dấu và số bù 2  
Vài số đặc biệt như:  
0: 0000 0000 … 0000  
1: 1111 1111 … 1111  
Số âm nhỏ nhất: 1000 0000 … 0000  
Số dương lớn nhất: 0111 1111 … 1111  
BK  
TP.HCM  
18  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Số âm có dấu  
Đảo giá trị bit và cộng 1  
Đảo giá trị bit: 1 0, 0 1  
Ví dụ: giá trị (-) 2  
+2 = 0000 0000 … 0010
–2 = 1111 1111 … 11012 + 1  
= 1111 1111 … 11102  
BK  
TP.HCM  
19  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Mở rộng bit với số có dấu  
Biểu diễn với số bit nhiều hơn  
Dữ nguyên giá trị  
Ví dụ: Trong tập lệnh MIPS  
addi: mở rộng số bit giá trị toán hạng trực tiếp  
lb, lh: mở rộng số bit với byte/(1/2 từ) được nạp  
beq, bne: mở rộng số bit của độ dời địa chỉ  
Thêm giá bit dấu vào các bit mở rộng bên trái  
Đối với giá trị không dấu: gán 0s  
Ví dụ: chuyển số 8-bit thành số 16-bit  
+2: 0000 0010 => 0000 0000 0000 0010  
2: 1111 1110 => 1111 1111 1111 1110  
BK  
TP.HCM  
20  
4/5/2019  
Khoa Khoa học & Kỹ thuật Máy tính  
Tải về để xem bản đầy đủ
pdf 68 trang yennguyen 12/04/2022 2660
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 2: Ngôn ngữ máy - Tập lệnh - Nguyễn Thanh Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_2_ngon_ngu_may_tap_lenh.pdf