Giáo trình Kiến trúc máy tính - Chương 12: Tập lệnh: Đặc điểm và chức năng
Đặc điểm tập lệnh
Các thành phần của tập lệnh
Biểu diễn lệnh
Các loại lệnh
Số lượng địa chỉ
Thiết kế tập lệnh
Các loại toán hạng
Số
Ký tự
Dữ liệu logic
Các kiểu dữ liệu Intel x86 và ARM
Các loại hành động
Truyền dữ liệu
Tính toán số học
Logic
Chuyển đổi
Vào/ra
Điều khiển hệ thống
Truyền điều khiển
Các loại hành động trong Intel x86
và ARM
45 trang |
Chia sẻ: thucuc2301 | Lượt xem: 871 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Kiến trúc máy tính - Chương 12: Tập lệnh: Đặc điểm và chức năng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
+
Chương 12
Tập lệnh:
Đặc điểm và chức năng
1
+
NỘI DUNG
1. Đặc điểm tập lệnh
2. Các loại toán hạng
3. Các loại dữ liệu trong Intel x86 và ARM
4. Các loại Hành động (operation)
5. CISC và RISC
2
+
1. Đặc điểm tập lệnh
Lệnh máy (machine instructions hay computer instructions): các
lệnh mà VXL thực hiện, quyết định hành động của VXL
Tập lệnh (instruction set): tập hợp các lệnh khác nhau mà VXL
có thể hiểu & thực hiện
Mỗi bộ xử lý có một tập lệnh xác định
Tập lệnh thường có hàng chục đến hàng trăm lệnh
Mỗi lệnh phải có những thông tin cần thiết cho bộ xử lý thực
hiện hành động
3
+
Các thành phần của lệnh
Mã lệnh - (opcode): chỉ ra hành động cần thực hiện. Opcode
được xác định bởi một mã nhị phân.
Địa chỉ toán hạng nguồn: 1 hành động có thể liên quan đến
một hoặc nhiều toán hạng nguồn. Toán hạng nguồn là đầu vào
của hành động
Địa chỉ toán hạng đích: 1 hành động có thể tạo ra một kết quả
đích
Địa chỉ lệnh tiếp theo: chỉ cho VXL nơi để lấy lệnh tiếp theo sau
khi hoàn thành lệnh này
4
Sơ đồ trạng thái chu kỳ lệnh
5
Toán hạng có thể ở một trong 4 vùng sau:
Thanh ghi
Một VXL chứa một hoặc nhiều
thanh ghi, các thanh ghi này có thể
được các lệnh tham chiếu đến.
Nếu có nhiều thanh ghi, mỗi
thanh ghi được gán 1 tên hoặc chỉ
số riêng. Lệnh tham chiếu đến
thanh ghi nào phải chứa chỉ số của
thanh ghi đó
Thiết bị vào/ra (I/O)
Lệnh phải chỉ ra thiết bị và
module vào/ra cho hành
động. Nếu sử dụng I/O ánh
xạ bộ nhớ thì đó chỉ là 1 địa
chỉ bộ nhớ chính hoặc bộ
nhớ ảo khác
Bộ nhớ chính/bộ nhớ ảo
phải cung cấp địa chỉ bộ
nhớ chính hoặc bộ nhớ ảo,
như với tham chiếu đến
lệnh tiếp theo
Immediate (tức thời)
Giá trị của toán hạng đặt trong1
trường trong lệnh đang thực hiện
6
+
Biểu diễn lệnh
Trong máy tính, mỗi lệnh được biểu diễn bằng một chuỗi bit
Lệnh được chia ra thành các trường tương ứng với các thành
phần cấu thành của lệnh
Để thuận tiện, sử dụng biểu diễn ký tự gợi nhớ
VD: ADD, SUB, LOAD
7
+ Các loại lệnh
Xử lý dữ liệu
Lệnh số học cung cấp khả năng tính toán để xử lý dữ liệu số
Lệnh logic (Boolean) thực hiện trên các bit của một từ dưới dạng bit chứ
không phải là số, do đó chúng cung cấp khả năng xử lý bất kỳ loại dữ liệu
nào mà người dùng muốn
Lưu trữ dữ liệu
Việc chuyển dữ liệu vào hay ra thanh ghi và/hoặc bộ nhớ
Di chuyển dữ liệu
Lệnh vào/ra được sử dụng để truyền chương trình và dữ liệu vào bộ nhớ,
truyền kết quả tính toán lại cho người dùng
Điều khiển
Lệnh kiểm tra: kiểm tra giá trị của dữ liệu hoặc trạng thái của 1 phép toán
Lệnh rẽ nhánh: rẽ nhánh tới 1 tập lệnh khác dựa vào điều kiện sẵn có
8
+
Số lượng địa chỉ trong lệnh (a)
3 địa chỉ
Toán hạng 1, Toán hạng 2, Kết quả
c = a + b;
Từ lệnh phải rất dài để lưu được cả 3 địa chỉ của 3 toán hạng
Ví dụ: Y = (A – B)/[C + (D * E)]
T – vị trí tạm thời, lưu trữ kết quả trung gian
9
+
Số lượng địa chỉ trong lệnh (b)
2 địa chỉ
1 địa chỉ phải nhận 2 vai trò là toán hạng nguồn và kết quả, địa chỉ
còn lại là của toán hạng nguồn
a = a + b
Giảm độ dài lệnh
Phát sinh thêm công việc: Lưu trữ tạm thời một số kết quả
10
+
Số lượng địa chỉ trong lệnh (c)
1 địa chỉ
Một toán hạng được chỉ ra trong lệnh
Một toán hạng là ngầm định thường là 1 thanh ghi (AC - tích luỹ)
Phổ biến trong các máy tính đời đầu
11
+
Số lượng địa chỉ trong lệnh (d)
0 địa chỉ
Tất cả địa chỉ toán hạng được ngầm định
Sử dụng ngăn xếp (stack)
Stack là các vị trí nhớ LIFO
Ví dụ:
push a
push b
add
pop c
Có nghĩa là: c = a+b
„Không thông dụng
12
+
Sử dụng các địa chỉ lệnh
(Các câu lệnh không rẽ nhánh)
13
+
Số lượng địa chỉ bao nhiêu là đủ?
Nhiều địa chỉ hơn
Lệnh phức tạp hơn, dài hơn
Thực hiện lệnh chậm hơn
Cần nhiều thanh ghi hơn
Tham chiếu thanh ghi bên trong nhanh hơn tăng tốc độ xử lý
Ít lệnh trên 1 chương trình
Ít địa chỉ hơn
Lệnh ít phức tạp hơn, ngắn hơn
Truy xuất/thực thi lệnh nhanh hơn
Nhiều lệnh trên 1 chương trình chương trình dài, phức tạp hơn
14
Các vấn đề thiết kế tập lệnh
Danh sách các hành động
Bao nhiêu hành động? Hành động nào? Độ phức tạp của hành
động?
Các kiểu dữ liệu
Các kiểu dữ liệu mà các hành động tham chiếu đến
Định dạng lệnh
Độ dài lệnh (bit), số lượng địa chỉ, kích thước các trường, ...
Các thanh ghi
Số lượng thanh ghi của VXL mà lệnh có thể tham chiếu đến?
Cách sử dụng thanh ghi?
Các phương pháp định địa chỉ
Một hoặc nhiều chế độ định địa chỉ của toán hạng
RISC hay CISC
„ Reduced Instruction Set Computing
„ Complex Instruction Set Computing
15
2. Các loại toán hạng
16
+
Số
Tất cả các ngôn ngữ máy đều có dữ liệu dạng số
Số được lưu trữ trong máy tính là hữu hạn
Độ lớn của số biểu diễn được trên máy bị giới hạn
Độ chính xác bị giới hạn (số dấu chấm động)
Ba kiểu dữ liệu số thông thường:
Số nguyên nhị phân hoặc số nhị phân dấu chấm tĩnh
Số nhị phân dấu chấm động
Sô thập phân
Packed decimal
Mỗi chữ số thập phân được biểu diễn bởi một mã 4 bit, 2 chữ số đươc
lưu trữ trên một byte
Để tạo số, các mã 4 bit được nối với nhau, thường là bội của 8 bit
17
+
Ký tự
Một trong những dạng dữ liệu cơ bản là văn bản (text) hoặc xâu
ký tự (character strings)
Dữ liệu văn bản dưới dạng ký tự không thể lưu trữ hoặc truyền
qua hệ thống xử lý dữ liệu và truyền thông vì các hệ thống này
được thiết kế cho dữ liệu nhị phân
Bảng mã mã hóa ký tự được sử dụng phổ biến nhất là bảng mã
IRA (International Reference Alphabet)
Còn được gọi là mã ASCII (American Standard Code for Information
Interchange)
Bảng mã EBCDIC (Extended Binary Coded Decimal Interchange
Code) được sử dụng trong các máy mainframe của IBM
18
+
Dữ liệu logic
Một khối n-bit gồm n phần tử dữ liệu 1 bit, mỗi phần tử có
giá trị 0 hoặc 1
Hai ưu điểm của view theo bit:
Bộ nhớ được sử dụng hiệu quả nhất để lưu trữ một mảng
các phần tử dữ liệu nhị phân/ Boolean, trong đó mỗi phần tử
chỉ nhận giá trị 1 (đúng) hoặc 0 (sai)
Để thao tác trên các bit của một phần dữ liệu
Nếu phép toán dấu chấm động thực hiện trong phần mềm, trong
một số phép toán ta cần phải dịch các bit có nghĩa
Để chuyển đổi từ IRA thành packed decimal, ta cần trích xuất 4
bit bên phải của mỗi byte
19
+
3.1. Các kiểu dữ liệu x86
Byte 8 bit
Từ 16 bit
Double word 32 bit
Quad word 64 bit
Double quadword 128 bit
Định địa chỉ cho từng đơn vị 8 bit
Các từ không cần phải căn tại địa chỉ chẵn
Dữ liệu truy cập vào bus 32 bit theo đơn vị double word
được đọc tại các địa chỉ chia hết cho 4
Little endian: byte ít quan trọng nhất được lưu giữ ở địa chỉ
thấp nhất
20
21
x86 Data Types
Các
kiểu
dữ
liệu
x86
+
Định dạng
dữ liệu số
x86
3.2 Các kiểu dữ liệu của ARM
Vi xử lý ARM hỗ trợ các kiểu dữ liệu có kích thước:
8b (byte), 16b (halfword), 32b (word)
Thường thì truy cập halfword/word phải căn (align) theo
halfword/word
Unaligned access: Khi tùy chọn này được kích hoạt, bộ xử
lý sử dụng một hoặc nhiều truy cập bộ nhớ để tạo ra luợt
truyền các byte liền kề trong suốt với lập trình viên
Đối với cả ba kiểu dữ liệu, có hỗ trợ một kiểu biểu diễn
dành cho số nguyên không dấu (số nguyên dương)
Cả ba kiểu dữ liệu cũng có thể được sử dụng cho số
nguyên có dấu bù 2
24
26
4. Các loại hành động
a. Chuyển dữ liệu
b. Xử lý số học với số nguyên
c. Xử lý logic
d. Điều khiển vào-ra
e. Chuyển điều khiển (rẽ nhánh)
f. Điều khiển hệ thống
Hoạt động của VXL đối với từng loại hành động
27
28
a. Các lệnh chuyển dữ liệu
MOVE Copy dữ liệu từ nguồn đến đích
LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý
STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ
EXCHANGE Trao đổi nội dung của nguồn và đích
„CLEAR Chuyển các bit 0 vào toán hạng đích
SET Chuyển các bit 1 vào toán hạng đích
PUSH Cất nội dung toán hạng nguồn vào ngăn xếp
POP Lấy nội dung đỉnh ngăn xếp đưa đến toán
hạng đích
Loại lệnh cơ bản nhất
Ví dụ
hành động chuyển dữ liệu của IBM EAS/390
29
30
b. Các lệnh số học
ADD Cộng hai toán hạng
„SUBTRACT Trừ hai toán hạng
MULTIPLY Nhân hai toán hạng
„DIVIDE Chia hai toán hạng
ABSOLUTE Lấy trị tuyệt đối toán hạng
NEGATE Đổi dấu toán hạng (lấy bù 2)
INCREMENT Tăng toán hạng thêm 1
„DECREMENT Giảm toán hạng đi 1
COMPARE Trừ hai toán hạng để lập cờ
Cung cấp các phép toán số học cơ bản cho số nguyên có dấu,
số dấu chấm tĩnh/động và packed decimal
31
c. Các lệnh logic
AND Thực hiện phép AND hai toán hạng
OR Thực hiện phép OR hai toán hạng
„XOR Thực hiện phép XOR hai toán hạng
NOT Đảo bit của toán hạng (lấy bù 1)
„TEST Thực hiện phép AND hai toán hạng để lập cờ
SHIFT Dịch trái (phải) toán hạng
ROTATE Quay vòng trái (phải) toán hạng
Phép toán logic
Giả sử có 2 thanh ghi chứa dữ liệu:
(R1) = 1010 1010
(R2) = 0000 1111
R1 R1) AND (R2) = 0000 1010
Phép toán AND dùng để xoá một số bit và giữ nguyên một số bit còn
lại của toán hạng.
R1 (R1) OR (R2) = 1010 1111
Phép toán OR dùng để thiết lập một số bit và giữ nguyên một số bit
còn lại của toán hạng.
R1 (R1) XOR (R2) = 1010 0101
Phép toán XOR dùng để đảo một số bit và giữ nguyên một số bit còn
lại của toán hạng.
32
P Q AND OR XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
Hành động dịch
và xoay vòng
Dịch logic:
• 1 đầu, bit dịch bị mất đi
• Đầu kia, 0 được dịch vào
Dịch số học:
• Phải: 1 đầu, bit dịch bị
mất đi; đầu kia, bit có
trọng số cao nhất (LSB)
giữ nguyên giá trị cũ
• Trái: 1 đầu bit 0 được
dịch vào; đầu kia: bit
LSB giữ nguyên giá trị,
bit cạnh LSB mất đi
34
Ví dụ về phép toán dịch và xoay vòng
35
d. Các lệnh vào ra
INPUT Copy dữ liệu từ một cổng xác định đưa đến đích
OUTPUT Copy dữ liệu từ nguồn đến một cổng xác định
Truyền chương trình và dữ liệu vào bộ nhớ và đưa kết quả
tính toán ngược lại cho nguời sử dụng.
+
e. Chuyển điều khiển
Vì sao cần hành động chuyển điều khiển?
Cần thiết để có thể thực thi 1 lệnh hơn một lần, thậm chí
nhiều nghìn lần
Hầu như mọi chương trình đều có sự ra quyết định
Cần có cơ chế phân tách các tác vụ ra thành các công
việc nhỏ hơn để có thể thực hiện từng công việc một.
Các hành động truyền điều khiển:
Rẽ nhánh
Lệnh nhảy – skip
Gọi hàm
36
Các lệnh chuyển điều khiển
JUMP (BRANCH)
JUMP
CONDITIONAL
CALL
„ RETURN
37
- Lệnh nhảy không điều kiện (nạp vào PC một
địa chỉ xác định)
- Lệnh nhảy có điều kiện:
• „điều kiện đúng nạp vào PC một địa chỉ
xác định
• điều kiện sai không làm gì cả
- Lệnh gọi chương trình con:
• Cất nội dung của PC (địa chỉ trở về) ra một
vị trí xác định (thường ở Stack)
• Nạp vào PC địa chỉ của lệnh đầu tiên của
chương trình con
- Lệnh trở về từ chương trình con:„ Khôi phục
địa chỉ trở về trả lại cho PC để trở về chương
trình chính
Lệnh rẽ nhánh
Rẽ nhánh
không điều kiện
Chuyển tới thực
hiện lệnh ở vị trí
có địa chỉ XX:
PC XX
Rẽ nhánh
có điều kiện
Kiểm tra điều kiện trong
lệnh:
• Nếu đúng chuyển
tới thực hiện lệnh ở vị
trí có địa chỉ XX
PC XXX
• Nếu sai chuyển
sang thực hiện lệnh
kế tiếp
Lệnh skip
39
Chứa địa chỉ ngầm định
Lệnh nhảy ngầm định rằng 1 lệnh sẽ bị bỏ qua
Địa chỉ ngầm định là địa chỉ của lệnh tiếp theo cộng với
chiều dài 1 lệnh
Không cần trường địa chỉ đích
Ví dụ: lệnh ISZ - increment-and-skip-if-zero
+
Lệnh CALL và RETURN
Chương trình con (CTC) là chương trình máy tính khép kín
được kết hợp để tạo thành một chương trình lớn hơn
Tại bất kỳ điểm nào trong chương trình, CTC có thể được gọi
VXL đi đến và thực thi toàn bộ CTC rồi quay lại điểm mà lệnh CALL
được tạo ra
Lý do chính sử dụng CTC:
TÍnh kinh tế: một thủ tục có thể được sử dụng nhiều lần
Tính modul: tác vụ lớn chia thành nhiều công việc nhỏ hơn
Gồm hai lệnh cơ bản:
Lệnh CALL: rẽ nhánh từ vị trí hiện tại đến CTC
Lệnh RETURN: trả từ CTC về vị trí mà nó được gọi
40
Các
thủ tục
lồng
nhau
Sử dụng ngăn xếp để thực hiện
các thủ tục lồng nhau
42
43
f. Các lệnh điều khiển hệ thống
HALT Dừng thực hiện chương trình
WAIT Tạm dừng thực hiện chương trình, lặp lại việc
kiểm tra điều kiện cho đến khi thoả mãn thì tiếp
tục thực hiện
„LOCK Cấm không cho xin chuyển nhượng bus
UNLOCK Cho phép xin chuyển nhượng bus
NO OPERATION Không thực hiện gì cả
44
5. CISC và RISC
CISC RISC
Complex Instruction Set Computer Reduced Instruction Set Computer
Máy tính với tập lệnh phức tạp Máy tính với tập lệnh thu gọn
Các bộ xử lý truyền thống: x86, 680x0 SunSPARC, Power PC, ...
Tồn tại nhiều lệnh và chế độ địa chỉ Tồn tại ít lệnh và chế độ địa chỉ
Lệnh thực hiện trong nhiều chu kỳ Lệnh thực hiện trong một nhịp chu kỳ
Đòi hỏi phần cứng và khả năng xử lý
mạnh hơn
Không đòi hỏi phần cứng và khả năng
xử lý quá mạnh
Sử dụng nhiều RAM và ít thanh ghi Sử dụng ít RAM và nhiều thanh ghi
Kích thước mã chương trình nhỏ hơn Kích thước mã chương trình lớn hơn
Các lệnh có độ dài đa dạng Các lệnh có độ dài cố định
45
Ví dụ
+ Tổng kết
Đặc điểm tập lệnh
Các thành phần của tập lệnh
Biểu diễn lệnh
Các loại lệnh
Số lượng địa chỉ
Thiết kế tập lệnh
Các loại toán hạng
Số
Ký tự
Dữ liệu logic
Các kiểu dữ liệu Intel x86 và ARM
Các loại hành động
Truyền dữ liệu
Tính toán số học
Logic
Chuyển đổi
Vào/ra
Điều khiển hệ thống
Truyền điều khiển
Các loại hành động trong Intel x86
và ARM
Chương 12
Tập lệnh:
Đặc điểm và chức
năng
46
+ Câu hỏi chương 12
1 Các thành phần điển hình của một lệnh máy?
2 Toán hạng nguồn và đích có thể được đặt ở đâu?
3 Nếu một lệnh có 4 địa chỉ, mục đích của từng địa chỉ là gì?
4 Trình bày ngắn gọn 5 vấn đề thiết kế tập lệnh quan trọng.
5 Các loại toán hạng điển hình trong tập lệnh máy?
6 Mối quan hệ giữa mã ký tự IRA và biểu diễn packed decimal?
7 Phân biệt dịch số học và dịch logic?
8 Tại sao phải truyền lệnh điều khiển?
9 Trình bày hai cách tạo điều kiện để kiểm tra một lệnh rẽ nhánh
10 Ý nghĩa của thuật ngữ làm thủ tục lồng nhau là gì?
11 Liệt kê ba vị trí có thể lưu trữ địa chỉ trả về của thủ tục có trả về.
12 Phân biệt big endian và little endian?
47
Các file đính kèm theo tài liệu này:
- nguyen_hang_phuongch12_tap_lenh_729_2053841.pdf