Bài giảng Kiến trúc máy tính - Chương 5: Kiến trúc tập lệnh - Nguyễn Kim Khánh
NKK-HUST
Kiến trúc máy tính
Chương 5
KIẾN TRÚC TẬP LỆNH
Nguyễn Kim Khánh
Trường Đại học Bách khoa Hà Nội
2017
Kiến trúc máy tính
194
NKK-HUST
Nội dung học phần
Chương 1. Giới thiệu chung
Chương 2. Cơ bản về logic số
Chương 3. Hệ thống máy tính
Chương 4. Số học máy tính
Chương 5. Kiến trúc tập lệnh
Chương 6. Bộ xử lý
Chương 7. Bộ nhớ máy tính
Chương 8. Hệ thống vào-ra
Chương 9. Các kiến trúc song song
2017
Kiến trúc máy tính
195
NKK-HUST
Nội dung của chương 5
5.1. Giới thiệu chung về kiến trúc tập lệnh
5.2. Lệnh hợp ngữ và toán hạng
5.3. Mã máy
5.4. Cơ bản về lập trình hợp ngữ
5.5. Các phương pháp định địa chỉ
5.6. Dịch và chạy chương trình hợp ngữ
2017
Kiến trúc máy tính
196
NKK-HUST
5.1. Giới thiệu chung về kiến trúc tập lệnh
n Kiến trúc tập lệnh (Instruction Set Architecture):
cách nhìn máy tính bởi người lập trình
n Vi kiến trúc (Microarchitecture): cách thực hiện
kiến trúc tập lệnh bằng phần cứng
n Ngôn ngữ trong máy tính:
n
Hợp ngữ (assembly language):
n
n
dạng lệnh có thể đọc được bởi con người
biểu diễn dạng text
n
Ngôn ngữ máy (machine language):
n
n
n
còn gọi là mã máy (machine code)
dạng lệnh có thể đọc được bởi máy tính
biểu diễn bằng các bit 0 và 1
2017
Kiến trúc máy tính
197
NKK-HUST
Mô hình lập trình của máy tính
Bộ nhớ chính
CPU
lệnh
lệnh
lệnh
PC
Đơn vị
lệnh
điều khiển
.
.
.
dữ liệu
dữ liệu
dữ liệu
ALU
dữ liệu
.
.
.
Tập thanh ghi
Vào-ra
.
.
.
2017
Kiến trúc máy tính
198
NKK-HUST
CPU nhận lệnh từ bộ nhớ
n Bộ đếm chương trình PC
(Program Counter) là thanh ghi
của CPU giữ địa chỉ của lệnh cần
nhận vào để thực hiện
lệnh
lệnh
lệnh
n CPU phát địa chỉ từ PC đến bộ
lệnh được
nhận vào
PC
nhớ, lệnh được nhận vào
lệnh kế tiếp
lệnh
n Sau khi lệnh được nhận vào, nội
dung PC tự động tăng để trỏ sang
lệnh kế tiếp
lệnh
n PC tăng bao nhiêu?
n
Tùy thuộc vào độ dài của lệnh vừa
được nhận
n
MIPS: lệnh có độ dài 32-bit, PC tăng 4
2017
Kiến trúc máy tính
199
NKK-HUST
Giải mã và thực hiện lệnh
n Bộ xử lý giải mã lệnh đã được nhận và phát các
tín hiệu điều khiển thực hiện thao tác mà lệnh yêu
cầu
n Các kiểu thao tác chính của lệnh:
n
n
n
Trao đổi dữ liệu giữa CPU và bộ nhớ chính hoặc cổng
vào-ra
Thực hiện các phép toán số học hoặc phép toán logic
với các dữ liệu (được thực hiện bởi ALU)
Chuyển điều khiển trong chương trình (rẽ nhánh, nhảy)
2017
Kiến trúc máy tính
200
NKK-HUST
CPU đọc/ghi dữ liệu bộ nhớ
n Với các lệnh trao đổi dữ liệu với bộ nhớ,
CPU cần biết và phát ra địa chỉ của ngăn
nhớ cần đọc/ghi
n Địa chỉ đó có thể là:
n
n
n
Hằng số địa chỉ được cho trực tiếp trong lệnh
Giá trị địa chỉ nằm trong thanh ghi con trỏ
Địa chỉ = Địa chỉ cơ sở + giá trị dịch chuyển
2017
Kiến trúc máy tính
201
NKK-HUST
Hằng số địa chỉ
n Trong lệnh cho hằng số
dữ liệu
dữ liệu
địa chỉ cụ thể
dữ liệu
n CPU phát giá trị địa chỉ
này đến bộ nhớ để tìm
ra ngăn nhớ dữ liệu cần
đọc/ghi
Hằng số địa chỉ
dữ liệu cần đọc/ghi
dữ liệu
dữ liệu
dữ liệu
dữ liệu
2017
Kiến trúc máy tính
202
NKK-HUST
Sử dụng thanh ghi con trỏ
n Trong lệnh cho biết
dữ liệu
dữ liệu
tên thanh ghi con trỏ
n Thanh ghi con trỏ
dữ liệu
Thanh ghi
dữ liệu cần đọc/ghi
dữ liệu
chứa giá trị địa chỉ
n CPU phát địa chỉ này
ra để tìm ra ngăn
nhớ dữ liệu cần
đọc/ghi
dữ liệu
dữ liệu
dữ liệu
2017
Kiến trúc máy tính
203
NKK-HUST
Sử dụng địa chỉ cơ sở và dịch chuyển
n Địa chỉ cơ sở (base address):
địa chỉ của ngăn nhớ cơ sở
n Giá trị dịch chuyển địa chỉ (offset):
gia số địa chỉ giữa ngăn nhớ cần
đọc/ghi so với ngăn nhớ cơ sở
Địa chỉ cơ sở
Offset
Ngăn nhớ cơ sở
n Địa chỉ của ngăn nhớ cần đọc/ghi
= (địa chỉ cơ sở) + (offset)
dữ liệu cần đoc/ghi
n Có thể sử dụng các thanh ghi để
quản lý các tham số này
n Trường hợp riêng:
n
Địa chỉ cơ sở = 0
n
Offset = 0
2017
Kiến trúc máy tính
204
NKK-HUST
Ngăn xếp (Stack)
n Ngăn xếp là vùng nhớ dữ liệu có cấu trúc
LIFO (Last In - First Out vào sau - ra trước)
n Ngăn xếp thường dùng để phục vụ cho
chương trình con
n Đáy ngăn xếp là một ngăn nhớ xác định
n Đỉnh ngăn xếp là thông tin nằm ở vị trí trên
cùng trong ngăn xếp
n Đỉnh ngăn xếp có thể bị thay đổi
2017
Kiến trúc máy tính
205
NKK-HUST
Con trỏ ngăn xếp SP (Stack Pointer)
n SP là thanh ghi chứa địa chỉ của
ngăn nhớ đỉnh ngăn xếp
n Khi cất một thông tin vào ngăn
xếp:
SP
đỉnh ngăn xếp
n
Giảm nội dung của SP
Thông tin được cất vào ngăn nhớ
được trỏ bởi SP
chiều
địa
chỉ
tăng
dần
n
n Khi lấy một thông tin ra khỏi
ngăn xếp:
n
Thông tin được đọc từ ngăn nhớ
được trỏ bởi SP
đáy ngăn xếp
n
Tăng nội dung của SP
n Khi ngăn xếp rỗng, SP trỏ vào
đáy
2017
Kiến trúc máy tính
206
NKK-HUST
Thứ tự lưu trữ các byte trong bộ nhớ chính
n Bộ nhớ chính được đánh địa chỉ cho từng byte
n Hai cách lưu trữ thông tin nhiều byte:
n
Đầu nhỏ (Little-endian): Byte có ý nghĩa thấp được
lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa
cao được lưu trữ ở ngăn nhớ có địa chỉ lớn.
n
Đầu to (Big-endian): Byte có ý nghĩa cao được lưu
trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa thấp
được lưu trữ ở ngăn nhớ có địa chỉ lớn.
n Các sản phẩm thực tế:
n
n
n
Intel x86: little-endian
Motorola 680x0, SunSPARC: big-endian
MIPS, IA-64: bi-endian (cả hai kiểu)
2017
Kiến trúc máy tính
207
NKK-HUST
Ví dụ lưu trữ dữ liệu 32-bit
Số
nhị phân
0001 1010 0010 1011 0011 1100 0100 1101
Số Hexa
1A
2B
3C
4D
4D
3C
2B
1A
4000
1A
2B
3C
4D
4000
4001
4002
4003
4001
4002
4003
little-endian
big-endian
2017
Kiến trúc máy tính
208
NKK-HUST
Tập lệnh
n Mỗi bộ xử lý có một tập lệnh xác định
n Tập lệnh thường có hàng chục đến hàng trăm
lệnh
n Mỗi lệnh máy (mã máy) là một chuỗi các bit (0,1)
mà bộ xử lý hiểu được để thực hiện một thao
tác xác định.
n Các lệnh được mô tả bằng các ký hiệu gợi nhớ
dạng text, đó chính là các lệnh của hợp ngữ
(assembly language)
2017
Kiến trúc máy tính
209
NKK-HUST
Dạng lệnh hợp ngữ
n Mã C:
a = b + c;
n Ví dụ lệnh hợp ngữ:
add a, b, c # a = b + c
trong đó:
n
add: ký hiệu gợi nhớ chỉ ra thao tác (phép toán)
cần thực hiện.
n
Chú ý: mỗi lệnh chỉ thực hiện một thao tác
n
n
n
b, c: các toán hạng nguồn cho thao tác
a: toán hạng đích (nơi ghi kết quả)
phần sau dấu # là lời giải thích (chỉ có tác dụng
đến hết dòng)
2017
Kiến trúc máy tính
210
NKK-HUST
Các thành phần của lệnh máy
Mã thao tác
Địa chỉ toán hạng
n Mã thao tác (operation code hay opcode): mã
hóa cho thao tác mà bộ xử lý phải thực hiện
n
n
n
n
Các thao tác chuyển dữ liệu
Các phép toán số học
Các phép toán logic
Các thao tác chuyển điều khiển (rẽ nhánh, nhảy)
n Địa chỉ toán hạng: chỉ ra nơi chứa các toán
hạng mà thao tác sẽ tác động
n
Toán hạng có thể là:
n
n
n
Hằng số nằm ngay trong lệnh
Nội dung của thanh ghi
Nội dung của ngăn nhớ (hoặc cổng vào-ra)
2017
Kiến trúc máy tính
211
NKK-HUST
Số lượng địa chỉ toán hạng trong lệnh
n Ba địa chỉ toán hạng:
n
add r1, r2, r3 # r1 = r2 + r3
n
Sử dụng phổ biến trên các kiến trúc hiện nay
n Hai địa chỉ toán hạng:
n
add r1, r2 # r1 = r1 + r2
n
Sử dụng trên Intel x86, Motorola 680x0
n Một địa chỉ toán hạng:
n
add r1
# Acc = Acc + r1
n
Được sử dụng trên kiến trúc thế hệ trước
n 0 địa chỉ toán hạng:
n
Các toán hạng đều được ngầm định ở ngăn xếp
n
Không thông dụng
2017
Kiến trúc máy tính
212
NKK-HUST
Các kiến trúc tập lệnh CISC và RISC
n CISC: Complex Instruction Set Computer
n
Máy tính với tập lệnh phức tạp
n
Các bộ xử lý: Intel x86, Motorola 680x0
n RISC: Reduced Instruction Set Computer
n
n
n
n
Máy tính với tập lệnh thu gọn
SunSPARC, Power PC, MIPS, ARM ...
RISC đối nghịch với CISC
Kiến trúc tập lệnh tiên tiến
2017
Kiến trúc máy tính
213
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 5: Kiến trúc tập lệnh - Nguyễn Kim Khánh", để 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_5_kien_truc_tap_lenh_ngu.pdf