Giáo trình Lập trình hệ thống - Chương 1: Kiến trúc và hoạt động của hệ vi xử lý/máy tính

1. Cấu trúc luận lý

Máy tính số (Digital computer) là máy giải quyết các vấn đề bằng cách thực hiện

các chỉ thị do con người cung cấp. Chuỗi các chỉ thị này gọi là chương trình (program).

Các mạch điện tử trong một máy tính số sẽ thực hiện một số giới hạn các chỉ thị đơn giản

cho trước. Tập hợp các chỉ thị này gọi là tập lệnh của máy tính. Tất cả các chương trình

muốn thực thi đều phải được biến đổi sang tập lệnh trước khi được thi hành. Các lệnh cơ

bản là:

- Cộng 2 số.

- So sánh với 0.

- Di chuyển dữ liệu.

Tập lệnh của máy tính tạo thành một ngôn ngữ giúp con người có thể tác động lên

máy tính, ngôn ngữ này gọi là ngôn ngữ máy (machine language). Tuy nhiên, hầu hết các

ngôn ngữ máy đều đơn giản nên để thực hiện một yêu cầu nào đó, người thiết kế phải

thực hiện một công việc phức tạp. Đó là chuyển các yêu cầu này thành các chỉ thị có chứa

trong tập lệnh của máy. Vấn đề này có thể giải quyết bằng cách thiết kế một tập lệnh mới

thích hợp cho con người hơn tập lệnh đã cài đặt sẵn trong máy (built-in). Ngôn ngữ máy

sẽ được gọi là ngôn ngữ cấp 1 (L1) và ngôn ngữ vừa được hình thành gọi là ngôn ngữ cấp

2 (L2).

Tuy nhiên, trong thực tế, để có thể thực hiện được, các ngôn ngữ L1 và L2 không

được khác nhau nhiều. Như vậy, ngôn ngữ L2 cũng không thật sự giúp ích nhiều cho

người thiết kế. Do đó, một tập lệnh kế tiếp được hình thành sẽ hướng về con người nhiều

hơn là máy tính, tập lệnh này sẽ tạo thành một ngôn ngữ và ta gọi là ngôn ngữ L3. Ta có

thể viết các chương trình trong L3 như là đã tồn tại máy tính sử dụng ngôn ngữ L3 (máy

ảo L3). Các chương trình này sẽ được dịch sang ngôn ngữ L2 và được thực thi bằng một

chương trình dịch L2.

pdf32 trang | Chuyên mục: Lập Trình Hệ Thống Và Mạng | Chia sẻ: yen2110 | Lượt xem: 433 | Lượt tải: 0download
Tóm tắt nội dung Giáo trình Lập trình hệ thống - Chương 1: Kiến trúc và hoạt động của hệ vi xử lý/máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
iệc tính toán các biểu thức dùng 
dấu chấm động như cộng, trừ, nhân, chia các số dấu chấm động, căn thức, logarit,  
Chúng cho phép xử lý các phép toán này nhanh hơn nhiều so với CPU. Thời gian xử lý 
giữa 8087 và 8086 như sau (dùng xung clock 8 MHz): 
Phép toán 8087 [μs] 8086 [μs]
Cộng / trừ 
Nhân 
Chia 
Căn bậc hai
Tang 
Lũy thừa 
Lưu trữ 
10.6 
11.9 
24.4 
22.5 
56.3 
62.5 
13.1 
1000 
1000 
2000 
12250 
8125 
10680 
750 
™ 8087: 
8087 gồm một đơn vị điều khiển (CU – Control Unit) dùng để điều khiển bus và 
một đơn vị số học (NU – Numerical Unit) để thực hiện các phép toán dấu chấm động 
trong các mạch tính lũy thừa (exponent module) và mạch tính phần định trị (mantissa 
module). Khác với 8086, thay vì dùng các thanh ghi rời rạc là một ngăn xếp thanh ghi. 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 28 
Đơn vị điều khiển nhận và giải mã lệnh, dọc và ghi các toán hạng, chạy các lệnh 
điều khiển riêng của 8087. Do đó, CU có thể đồng bộ với CPU trong khi NU đang thực 
hiện các công việc tính toán. CU bao gồm bộ điều khiển bus, bộ đệm dữ liệu và hàng 
lệnh. 
Hình 1.22 – Sơ đồ kết nối 8087 và CPU 8086 
Từ điều khiển 
Từ trạng thái 
Đệm dữ liệu 
Điều khiển bus 
Bộ điều 
khiển số 
Module lũy 
thừa 
Module 
định trị 
Từ thẻ 
Thanh ghi 
ngăn xếp 
Bus dữ liệu 
Địa chỉ trạng thái 
Hình 1.21 – Sơ đồ khối của 8087 
CU - Control Unit NU - Numerical Unit 
CLK (8284)
INT (8259)
IRx (8259)
8087
34
32
25
24
19
23
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
39
38
37
36
35
26
27
28
31
33
22
21
BHE/S7
INT
QS0
QS1
CLK
BUSY
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD8
AD9
AD10
AD11
AD12
AD13
AD14
AD15
A16/S3
A17/S4
A18/S5
A19/S6
S0
S1
S2
RQ/GT0
RQ/GT1
READY
RST
8086
34
32
29
25
24
31
30
17
23
33
22
19
21
18
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
39
38
37
36
35
26
27
28
BHE/S7
RD
LOCK
QS0
QS1
RQ/GT0
RQ/GT1
NMI
TEST
MX
READY
CLK
RST
INTR
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD8
AD9
AD10
AD11
AD12
AD13
AD14
AD15
A16/S3
A17/S4
A18/S5
A19/S6
S0
S1
S2
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 29 
Ngăn xếp thanh ghi có tất cả 8 thanh ghi từ R0 ÷ R7, mỗi thanh ghi dài 80 bit trong 
đó bit 79 là bit dấu, bit 64 ÷ 78 dùng cho số mũ và phần còn lại là phần định trị. Dữ liệu 
truyền giữa các thanh ghi này được thực hiện rất nhanh do 8087 có độ rộng bus dữ liệu là 
84 bit và không cần phải biến đổi định dạng. 
Ngay sau khi reset PC, bộ đồng xử lý kiểm tra xem nó có được nối với PC hay 
không bằng các đường BHE /S7. 8087 sẽ điều chỉnh độ dài của hàng lệnh cho phù hợp với 
CPU (nếu dùng 8086 thì độ dài là 6 byte). 
8087 có một thanh ghi trạng thái là thanh ghi từ thẻ (tag word) gồm các cặp bit 
Tag0 ÷ Tag7 để lưu trữ các thông tin liên quan đến nội dung của các thanh ghi R0 ÷ R7 
để cho phép thực hiện một số tác vụ nhanh hơn. Mỗi thanh ghi từ thẻ có 2 bit xác định 4 
giá trị khác nhau của các thanh ghi Ri. 
Tag = 00: xác định 
Tag = 01: zero 
Tag = 10: NAN, giá trị bất thường 
Tag = 11: rỗng 
™ 80287: 
Hình 1.23 – Sơ đồ kết nối giữa 80286 và 80287 
S0
82284
15
16
7
8
1
17
2
3
5
11
6
4
10
12
13S0S1
X1
X2
ARDY
AYEN
SRDY
SYEN
EFI
RES
F/C
READY
CLK
RESET
PCLK
80287
23
22
21
20
19
18
17
16
15
14
12
11
8
7
6
5
26
25
24
40
32
35
37
2
1
38
36
39
27
28
34
33
29
31
3
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
ERROR
BUSY
PEREQ
READY
CLK
RESET
CLK286
S0
S1
HLDA
PEACK
CKM
NPRD
NPWR
NPS1
NPS2
CMD0
CMD1
COD/INTA
S1
S0
82288
19
3
18
1
2
15
14
7
6
13
12
11
17
16
5
4
8
9
S0
S1
M/IO
READY
CLK
CEN/AEN
CENL
CMDLY
MB
INTA
IORC
IOWC
DT/R
DEN
ALE
MCE
MRDC
MWTC
80286
34
33
32
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
8
7
5
4
1
66
65
68
67
6
63
31
29
59
57
64
53
54
61
52
36
38
40
42
44
46
48
50
37
39
41
43
45
47
49
51
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
A17
A18
A19
A20
A21
A22
A23
S0
S1
BHE
COD/INTA
HLDA
LOCK
M/IO
PEACK
READY
CLK
RST
NMI
INTR
HOLD
ERROR
BUSY
PEREQ
CAP
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
S1
82284
15
16
7
8
1
17
2
3
5
11
6
4
10
12
13S0S1
X1
X2
ARDY
AYEN
SRDY
SYEN
EFI
RES
F/C
READY
CLK
RESET
PCLK
S0
S0
S1
S1
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 30 
Do 80286 có chế độ mạch bảo vệ nên mạch ghép nối giữa 80286 và 80287 được 
thiết kế khác 8087 ở đơn vị điều khiển CU. Bộ đồng xử lý ở đây không thực hiện truy 
xuất bộ nhớ trực tiếp. Để truy xuất được bộ nhớ, 80287 không những cần một đơc vị định 
địa chỉ đơn giản của nó mà còn phải được tăng cường thêm chức năng quản lý bộ nhớ của 
80286. Cấu trúc bên trong của 80287 cũng tương tự như 8087, chỉ có đơn vị bus thay đổi 
cho phù hợp với 80286. Khác vơi 8087, 80287 hoạt động không đồng bộ với CPU nên có 
thể dùng xung clock riêng. 
™ 80387: 
Ưu điểm của 80387 so với 80287 là có thể thực hiện các phép toán số học nhanh 
hơn. No có bus dữ liệu 32 bit như CPU và sử dụng công nghệ CMOS nên công suất tiêu 
thụ thấp hơn. 
5. Bộ thanh ghi 
μP 8086/8088 có tất cả 14 thanh ghi nội. Các thanh ghi này có thể phân loại như 
sau: 
- Thanh ghi dữ liệu (data register) 
- Thanh ghi chỉ số và con trỏ (index & pointer register) 
- Thanh ghi đoạn (segment register) 
- Thanh ghi trạng thái và điều khiển (status & control register) 
5.1. Các thanh ghi dữ liệu 
Các thanh ghi dữ liệu gồm có các thanh ghi 16 bit AX, BX, CX và DX trong đó 
nửa cao và nửa thấp của mỗi thanh ghi có thể định địa chỉ một cách độc lập. Các nửa 
thanh ghi này (8 bit) có tên là AH và AL, BH và BL, CH và CL, DH và DL. 
Các thanh ghi này được sử dụng trong các phép toán số học và logic hay trong quá 
trình chuyển dữ liệu. 
Bảng 2.8: 
Thanh ghi Sử dụng trong 
AX MUL, IMUL (toán hạng nguồn kích thước word) 
DIV, IDIV (toán hạng nguồn kích thước word) 
IN (nhập word) 
OUT (xuất word) 
CWD 
Các phép toán xử lý chuỗi (string) 
AL MUL, IMUL (toán hạng nguồn kích thước byte) 
DIV, IDIV (toán hạng nguồn kích thước byte) 
IN (nhập byte) 
OUT (xuất byte) 
XLAT 
AAA, AAD, AAM, AAS (các phép toán ASCII) 
CBW (đổi sang word) 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 31 
DAA, DAS (số thập phân) 
Các phép toán xử lý chuỗi (string) 
AH MUL, IMUL (toán hạng nguồn kích thước byte) 
DIV, IDIV (toán hạng nguồn kích thước byte) 
CBW (đổi sang word) 
BX XLAT 
CX LOOP, LOOPE, LOOPNE 
Các phép toán string với tiếp dầu ngữ REP 
CL RCR, RCL, ROR, ROL (quay với số đếm byte) 
SHR, SAR, SAL (dịch với số đếm byte) 
DX MUL, IMUL (toán hạng nguồn kích thước word) 
DIV, IDIV (toán hạng nguồn kích thước word) 
AX (ACC – Accumulator): thanh ghi tích luỹ 
BX (Base): thanh ghi cơ sở 
CX (Count): đếm 
DX (Data): thanh ghi dữ liệu 
5.2. Các thanh ghi chỉ số và con trỏ 
Bao gồm các thanh ghi 16 bit SP, BP, SI và DI, thường chứa các giá trị offset (độ 
lệch) cho các phần tử định địa chỉ trong một phân đoạn (segment). Chúng có thể được sử 
dụng trong các phép toán số học và logic. Hai thanh ghi con trỏ (SP – Stack Pointer và BP 
– Base Pointer) cho phép truy xuất dễ dàng đến các phần tử đang ở trong ngăn xếp (stack) 
hiện hành. Các thanh ghi chỉ số (SI – Source Index và DI – Destination Index) được dùng 
để truy xuất các phần tử trong các đoạn dữ liệu và doạn thêm (extra segment). Thông 
thường, các thanh ghi con trỏ liên hệ đến đoạn stack hiện hành và các thanh ghi chỉ số liên 
hệ đến doạn dữ liệu hiện hành. SI và DI dùng trong các phép toán chuỗi. 
5.3. Các thanh ghi đoạn 
Bao gồm các thanh ghi 16 bit CS (Code segment), DS (Data segment), SS (stack 
segment) và ES (extra segment), dùng để định địa chỉ vùng nhớ 1 MB bằng cách chia 
thành 16 đoạn 64 KB. 
Tất cả các lệnh phải ở trong đoạn mã hiện hành, được định địa chỉ thông qua thanh 
ghi CS. Offset (độ lệch) của mã được xác định bằng thanh ghi IP. Dữ liệu chương trình 
thường được đặt ở đoạn dữ liệu, định vị thông qua thanh ghi DS. Stack định vị thông qua 
thanh ghi SS. Thanh ghi đoạn thêm có thể sử dụng để định địa chỉ các toán hạng, dữ liệu, 
bộ nhớ và các phần tử khác ngoài đoạn dữ liệu và stack hiện hành. 
5.4. Các thanh ghi điều khiển và trạng thái 
Thanh ghi con trỏ lệnh IP (Instruction Pointer) giống như bộ đếm chương trình 
(Program Counter). Thanh ghi điều khiển này do BIU quản lý nhằm lưu trữ offset từ bắt 
đầu đoạn mã đến lệnh thực thi kế tiếp. Ta không thể xử lý trực tiếp trên thanh ghi IP. 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 32 
Thanh ghi cờ (Flag register) hay từ trạng thái 16 bit chứa 3 bit điều khiển (TF, IF 
và DF) và 6 bit trạng thái (OF, SF, ZF, AF, PF và CF) còn các bit còn lại mà 8086/8088 
không sử dụng thì không thể truy xuất được. 
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
X X X X OF DF IF TF SF ZF X AF X PF X CF 
- OF (Overflow - tràn): OF = 1 xác định tràn số học, xảy ra khi kết quả vượt ra 
ngoài phạm vi biểu diễn 
- DF (Direction- hướng): xác định hướng chuyển string, DF = 1 khi μP làm việc 
với string theo thứ tự từ phải sang trái. 
- IF (Interrupt - ngắt): cho phép hay cấm các interrupt có mặt nạ 
- TF (Trap - bẫy): đặt μP vào chế độ từng bước, dùng cho các chương trình gỡ 
rối (debugger). 
- SF (Sign - dấu): dùng để chỉ các kết quả số học là số dương (SF = 0) hay âm 
(SF = 1). 
- ZF (Zero): = 1 nếu kết quả của phép toán trước là 0. 
- AF (Auxiliary – nhớ phụ): dùng trong các số thập phân để chỉ nhớ từ nửa byte 
thấp hay mượn từ nửa byte cao. 
- PF (Parity): PF = 1 nếu kết quả của phép toán là có tổng số bit 1 là chẵn (dùng 
để kiểm tra lỗi truyền dữ liệu) 
- CF (Carry): CF = 1 nếu có nhớ hay mượn từ bit cao nhất của kết quả. Cờ này 
cũng dùng cho các lệnh quay. 

File đính kèm:

  • pdfgiao_trinh_lap_trinh_he_thong_chuong_1_kien_truc_va_hoat_don.pdf
Tài liệu liên quan