Bài tập kiến trúc máy tính chương tập lệnh năm 2024

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 (Computer Architecture) - 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_computer_architecture_chuong_5.pdf

Chủ đề