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 ngữ Máy:
Tập lệnh
BK
TP.HCM
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
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 đủ
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:
- bai_giang_kien_truc_may_tinh_chuong_2_ngon_ngu_may_tap_lenh.pdf