Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương

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

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 1

Trang 1

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 2

Trang 2

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 3

Trang 3

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 4

Trang 4

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 5

Trang 5

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 6

Trang 6

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 7

Trang 7

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 8

Trang 8

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 9

Trang 9

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 45 trang xuanhieu 3780
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương

Bài giảng Kiến trúc máy tính - Chương 12: Tập lệnh - Đặc điểm và chức năng - Nguyễn Hằng Phương
 1 
+ Chương 12 
 Tập lệnh: 
 Đặc điểm và chức năng 
+ 2 
 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 
+ 3 
 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 
+ 4 
 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 
 5 
Sơ đồ trạng thái chu kỳ lệnh 
 6 
Toán hạng có thể ở một trong 4 vùng sau: 
 Bộ nhớ chính/bộ nhớ ảo Thanh ghi 
  phải cung cấp địa chỉ bộ  Một VXL chứa một hoặc nhiều 
 nhớ chính hoặc bộ nhớ ảo, thanh ghi, các thanh ghi này có thể 
 như với tham chiếu đến được các lệnh tham chiếu đến. 
 lệnh tiếp theo  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 
 Thiết bị vào/ra (I/O) thanh ghi nào phải chứa chỉ số của 
  Lệnh phải chỉ ra thiết bị và thanh ghi đó 
 module vào/ra cho hành 
 động. Nếu sử dụng I/O ánh 
 xạ bộ nhớ thì đó chỉ là 1 địa Immediate (tức thời) 
 chỉ bộ nhớ chính hoặc bộ  Giá trị của toán hạng đặt trong1 
 nhớ ảo khác trường trong lệnh đang thực hiện 
+ 7 
 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 
 8 
+ 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ó 
+ 9 
 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 
+ 10 
 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ả 
+ 11 
 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 
+ 12 
 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 
+ 13 
 Sử dụng các địa chỉ lệnh 
 (Các câu lệnh không rẽ nhánh) 
+ 14 
 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 
 15 
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 
 16 
2. Các loại toán hạng 
+ 17 
 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 
+ 18 
 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 
+ 19 
 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 
+ 20 
 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 
 21 
 Các 
 kiểu 
 dữ 
x86 Data Types liệu 
 x86 
+ 
 Định dạng 
 dữ liệu số 
 x86 
 24 
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 
 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 
 27 
Hoạt động của VXL đối với từng loại hành động 
 28 
a. Các lệnh chuyển dữ liệu 
Loại lệnh cơ bản nhất 
. 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 
 Ví dụ 29 
hành động chuyển dữ liệu của IBM EAS/390 
 30 
b. Các lệnh số họ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 
. 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ờ 
 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 
 32 
 Phép toán logic 
 P Q AND OR XOR 
 0 0 0 0 0 
. Giả sử có 2 thanh ghi chứa dữ liệu: 0 1 0 1 1 
 (R1) = 1010 1010 1 0 0 1 1 
 1 1 1 1 0 
 (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. 
 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. 
+ 36 
 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 
 37 
 Các lệnh chuyển điều khiển 
. JUMP (BRANCH) - Lệnh nhảy không điều kiện (nạp vào PC một 
 địa chỉ xác định) 
. JUMP - Lệnh nhảy có điều kiện: 
 CONDITIONAL • „đ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ả 
. CALL - 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 
. „ RETURN - 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 
 có điều kiện 
 Kiểm tra điều kiện trong 
 lệnh: 
 Rẽ nhánh • Nếu đúng chuyển 
không điều kiện tới thực hiện lệnh ở vị 
 trí có địa chỉ XX 
 Chuyển tới thực PC  XXX 
 hiện lệnh ở vị trí • Nếu sai chuyển 
 có địa chỉ XX: sang thực hiện lệnh 
 PC  XX kế tiếp 
 39 
Lệnh skip 
. 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 
+ 40 
 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 
 Các 
thủ tục 
 lồng 
 nhau 
 42 
Sử dụng ngăn xếp để thực hiện 
các thủ tục lồng nhau 
 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ý Không đòi hỏi phần cứng và khả năng 
mạnh hơn 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ụ 
 46 
+ Tổng kết Tập lệnh: 
 Đặc điểm và chức 
 năng 
 Chương 12 
  Các kiểu dữ liệu Intel x86 và ARM 
  Đặc điểm tập lệnh 
  Các loại hành động 
  Các thành phần của tập lệnh 
  Truyền dữ liệu 
  Biểu diễn lệnh 
  Tính toán số học 
  Các loại lệnh 
  Logic 
  Số lượng địa chỉ 
  Chuyển đổi 
  Thiết kế tập lệnh 
  Vào/ra 
  Các loại toán hạng 
  Điều khiển hệ thống 
  Số 
  Truyền điều khiển 
  Ký tự 
  Dữ liệu logic  Các loại hành động trong Intel x86 
 và ARM 
+ Câu hỏi chương 12 47 
 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? 

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_12_tap_lenh_dac_diem_va.pdf