Bài 5

CẤU TRÚC BỘ XỬ LÝ VÀ THỰC THI CHƯƠNG TRÌNH

Nguyễn Hồng Sơn

Công việc của CPU

(cid:1) CPU phải

(cid:1) Fetch instructions (cid:1) Interpret instructions (cid:1) Fetch data (cid:1) Process data (cid:1) Write data

1

CPU với system bus

Cấu trúc bên trong của CPU

2

Tổ chức các thanh ghi

(cid:1) CPU cần có các vùng nhớ tạm để làm việc,

gọi là các thanh ghi (registers)

(cid:1) Số lượng và chức năng thay đổi tùy vào

thiết kế của bộ xử lý.

(cid:1) Là một trong các quyết định thiết kế quan

trọng.

(cid:1) Mức cao nhất trong phân cấp bộ nhớ.

User-visible register

User-visible register là thanh ghi có thể được tham

chiếu qua ngôn ngữ máy, bao gồm các loại: (cid:1) General Purpose: đa chức năng, chứa operand của

chỉ thị

(cid:1) Data: chỉ chứa data, không được dùng để tính toán

địa chỉ.

(cid:1) Address: dùng cho chế độ địa chỉ như segment

pointer, index register, stack pointer

(cid:1) Condition Codes: chứa các mã điều kiện (còn gọi là

các flag)

3

Control & status register

(cid:1) Có một số thanh ghi được dùng để điều khiển

hoạt động của CPU (cid:1) Program Counter (cid:1) Instruction Decoding Register (cid:1) Memory Address Register (cid:1) Memory Buffer Register

(cid:1) Tất cả các thiết kế đều có một hay tập thanh

ghi gọi là PSW (Program Status Word)

PSW

(cid:1) PSW chứa các mã điều kiện cùng với các thông tin trạng thái khác. Các field hay flag phổ biến gồm: (cid:1) Sign (cid:1) Zero (cid:1) Carry (cid:1) Equal (cid:1) Overflow (cid:1) Interrupt enable/disable (cid:1) Supervisor: chỉ mode là user hay supervisor

4

Supervisor mode

(cid:1) Các chỉ thị đặc quyền chỉ có thể thực thi

trong supervisor mode.

(cid:1) Vùng nhớ đặc biệt chỉ có thể truy xuất trong

supervisor mode

(cid:1) Được dùng bởi hệ điều hành (cid:1) Không khả dụng đối với các chương trình

của user.

Ví dụ tổ chức thanh ghi

5

Tổng Quan Thực thi chương trình

(cid:1) Một chương trình ñược thực thi gồm một

tập chỉ thị được lưu giữ trong bộ nhớ.

(cid:1) CPU coù nhiệm vụ thực thi từng chỉ thị được

chỉ ñịnh trong chương trình

(cid:1) Quùa trình xử lyù chỉ thị gồm coù hai bước:

(cid:1) CPU đñọc chỉ thị từ bộ nhớ (cid:1) CPU thực thi chỉ thị, coù thể gồm một số hoạt

ñộng

Thực thi chương trình …

(cid:1) Chu kỳ chỉ thị (instruction cycle): Quá trình

xử lý cho một chỉ thị.

(cid:1) Chu kỳ lấy chỉ thị (cid:1) Chu kỳ thực thi

6

Chu kỳ chỉ thị cơ bản

Chu kỳ lấy chỉ thị

bắt đầu

Chu kỳ thực thi

lấy chỉ thị kế

thực thi chỉ thị

Treo máy

Chu kỳ lấy chỉ thị và thực thi

(cid:1) Bắt ñầu mỗi chu kỳ chỉ thị, CPU nạp chỉ thị từ bộ

nhớ

(cid:1) PC (program counter): laø thanh ghi hướng dẫn

chọn chỉ thị kế tiếp

(cid:1) Mặc ñịnh sau mỗi lần nạp, PC sẽ tăng một ñơn vị (chỉ tới chỉ thị kế tiếp theo tuần tự trong chương trình)

(cid:1) Chị thị được nạp vaøo thanh ghi IR (instruction

register)

7

Chu kỳ lấy chỉ thị và thực thi…

(cid:1) Chỉ thị tồn tại ở dạng mã nhị phân, chỉ cho CPU

biết noù phải laøm công việc gì.

(cid:1) CPU sẽ phiên dịch (giải mã lệnh) ñể nhận biết

công việc phải laøm.

(cid:1) Caùc công việc thường rơi vaøo một trong bốn

nhoùm: (cid:1) CPU-Memory (cid:1) CPU-I/O (cid:1) Xử lyù data (cid:1) Điều khiển: ví dụ thay ñổi tuần tự

Chu kỳ lấy chỉ thị và thực thi…

(cid:1) Việc thực thi một chỉ thị cụ thể liên quan

đeán nhiều công việc.

(cid:1) Một chu kỳ thực thi coù thể coù nhiều tham

chiếu đến bộ nhớ.

(cid:1) Một chu kỳ thực thi coù thể coù nhiều tham

chiếu đến I/O

(cid:1) Một chu kỳ thực thi coù thể coù nhiều tham

chiếu đến bộ nhớ vaø cả I/O

8

Các trạng thái trong một chu kỳ chỉ thị

(cid:1) (1)Tính toaùn ñịa chỉ của chỉ thị: xaùc ñịnh ñịa chỉ của chỉ thị kế tiếp,

(cid:1) (2)Lấy lệnh (cid:1) (3)Giải mã chỉ thị: phân tích ñể xaùc ñịnh công việc phải laøm vaø toaùn

thường laø cộng một hằng số vaøo ñịa chỉ của chỉ thị trước.

(cid:1) (4)Tính toaùn ñòa chỉ toaùn hạng: nếu công việc cần lấy thông số

hạng ñược duøng.

(cid:1) (5)Lấy toaùn hạng (cid:1) (6)Xử lý trên dữ liệu theo công việc ñược chỉ ñịnh. (cid:1) (7)Lưu toaùn hạng (data)

CPU truy xuất

(data) từ bộ nhớ hay I/O.

MM hay I/O

nhiều toán hạng

nhiều kết quả

Hoạt đñộng

7 2 5

beân trong CPU

chỉ thị kế

Vetor hay string

4 3 6 4 1

9

Các trạng thái…

(cid:1) Trên một số maùy tính, một chỉ thị cuï thể chỉ ñịnh một toaùn tử thực hiện trên một vector (mảng một chiều) hay chuỗi của caùc kyù tự. Điều naøy liên quan ñến lặp ñi lặp lại việc lấy dữ liệu hay lưu trữ dữ liệu.

Ví dụ máy giả thuyết

(cid:1) Từ nhớ 16 bit

(cid:1) Instruction: 4 bit mã vaø 12 bit ñịa chỉ (cid:1) Data: 1 bit dấu vaø 15 bit ñịnh lượng

(cid:1) Gồm coù caùc thanh ghi:

(cid:1) PC (cid:1) IR (cid:1) AC(accumulator): thanh ghi tạm

(cid:1) 4 trong số 16 mã lệnh cuï thể

(cid:1) 0001: nạp nội dung từ bộ nhớ vaøo AC (cid:1) 0010: ghi nội dung AC vaøo bộ nhớ (cid:1) 0101: cộng nội dung từ bộ nhớ với nội dung của AC. (cid:1) 0110: nhân nội dung từ bộ nhớ với nội dung của AC.

10

Ví dụ…

(cid:1) Chỉ thị được cất giữ từ vị trí 0x300 trong bộ nhớ. (cid:1) Trình baøy hoạt ñộng cộng nội dung tại ñịa chỉ 0x940 với

nội dung của 0x941, lưu kết quả tại 0x941.

(cid:1) Chương trình

(cid:1) Nạp nội dung từ 0x940 vaøo AC (cid:1) Cộng nội dung của 0x941 với AC (cid:1) Ghi nội dung của AC vaøo 0x941

(cid:1) Như vậy coù 3 chu kỳ nạp vaø 3 chu kỳ thực thi.

Bộ nhớ

Các thanh ghi

300

300

PC

PC

AC

AC

301

301

300 1940 1940 300

IR

IR

302

302

5941 5941 0003

940

940

1940 2941 2941 1940

941

941

0003 0003

0002 0002

11

300

300

PC

PC

AC

AC

301

301

1940 301 1940 301

IR

IR

302

302

5941 0003 5941 0005

2941 5941 2941 5941

940

940

941

941

3h + 2h=5h 0003 0003

300

300

PC

PC

0002 0002

AC

AC

301

301

1940 302 302 1940

IR

IR

302

302

5941 0005 0005 5941

940

940

2941 2941 2941 2941

941

941

0003 0003

0002 0005

12

Ví dụ 2

(cid:1) Trình bày các chu kỳ thực hiện phép tính

(3+2)*5 (5 tai 942), ghi kết quả tại 0x942

(cid:2) Tất cả sinh viên tự làm bài.

300

PC

300

PC

AC

301

AC

301

IR

302

IR

302

303

303

940

1940 1940 300 300 0003 5941 5941 1940 1940 6942 2942 6942 2942

940

941

941

942

0005

942

0005

0003 0003 0002 0002

13

Bài tập về nhà

(cid:1) Trình baøy tất cả caùc chu kỳ chỉ thị khi tính (2+3)*(3+4)

trên máy giả thuyết, cho 0004 chứa tại 0x942, ghi kết quả tại 0x942.

(cid:1) Vieát tuaàn töï chæ thị thöïc hieän pheùp tính sau trên maùy IAS

(maùy tính Von Neumann)

(4+2)*5, ghi kết quả tại vị trí 202h

Hãy trình baøy taát caû caùc chu kyø chỉ thị khi thöïc hieän pheùp tính trên. Cho mã chöơng trình ñöơïc naïp vaøo boä nhớ baét ñaàu taïi vị trí 100h vaø dữ lieäu ñược caát giữ baét ñaàu töø vị trí 200h.

14