MỤC LỤC
Chương1 ..................................................................................................................................... 3
Kiến trúc máy vi tính PC và đơn vị xử lý trung tâm ......................................................................... 3
1.1. Các thành phần cơ bản của máy tính số ........................................................................................3
1.2. Biểu diễn thơng tin trong máy tính số............................................................................................5
1.3 Kiến trúc cơ bản máy vi tính PC .....................................................................................................14
1.4. Đơn vị xử lý trung tâm CPU (Central Processing Unit) ................................................................18
1.4.1. Cấu hình bên ngồi.................................................................................................................18
1.4.2. Cấu hình bên trong ................................................................................................................20
1.4.3. Quản lý bộ nhớ trong chế độ thực và các thanh ghi đoạn ..................................................21
1.4.4. Các thanh ghi ..........................................................................................................................23
1.4.5 Quản lý bộ nhớ trong chế độ bảo vệ .....................................................................................26
1.4.6. Cơ chế đa nhiệm ....................................................................................................................34
1.4.7 Các chế độ xác định địa chỉ toán hạng...................................................................................35
1.5. Kỹ thuật đường ống và kỹ thuật xử lý song song mức lệnh .......................................................38
1.5.1. Kỹ thuật xử lý lệnh kiểu đường ống (Pipeline) .....................................................................38
1.5.2. Kỹ thuật ILP (xử lý song song mức lệnh) ...............................................................................39
Chương 2 .................................................................................................................................. 41
Tổ chức bộ nhớ trong máy vi tính PC .......................................................................................... 41
2.1. Tổ chức bộ nhớ theo phân cấp .....................................................................................................41
2.2. Tổ chức cache ................................................................................................................................42
2.2.1. Trường hợp mỗi khối chứa một từ (hoặc 1 byte) dữ liệu ..................................................43
2.2.2. Trường hợp mỗi khối chứa nhiều từ dữ liệu........................................................................44
2.2.3. Kỹ thuật tập liên hợp .............................................................................................................45
2.3 Tổ chức bộ nhớ máy vi tính PC ......................................................................................................45
2.3.1. Cơ chế quản lý bộ nhớ theo phân trang ...............................................................................46
2.3.2 Cơ chế truy nhập bộ nhớ theo trang .....................................................................................47
Chương 3 .................................................................................................................................. 49
Các phương pháp vào ra dữ liệu trong máy vi tính ...................................................................... 49
3.1. Cấu trúc phần cứng của hệ thống vào/ra dữ liệu........................................................................49
3.2. Các phương pháp vào/ra dữ liệu ..................................................................................................49
3.2.1 Phân loại ..................................................................................................................................49
3.2.2 Phương pháp vào/ra dữ liệu theo định trình ........................................................................50
3.2.3 Phương pháp vào/ra dữ liệu theo kiểu thăm dò ..................................................................51
3.2.4 Phương pháp vào/ra dữ liệu theo ngắt cứng ........................................................................52
3.2.5 Phương pháp vào/ra dữ liệu theo kiểu DMA (truy nhập trực tiếp bộ nhớ - Direct Memory
Access) .........................................................................................................................................54
Chương 4 .................................................................................................................................. 56
Các thiết bị vào ra ...................................................................................................................... 56
4.1 Các thiết bị giao diện và điều khiển vào/ra dữ liệu ......................................................................56
4.1.1 Ngắt và bộ điều khiển ngắt PIC 8259 .....................................................................................56
1
4.1.2 Truy nhập trực tiếp bộ nhớ và bộ điều khiển DMAC 8237 ..................................................65
4.1.3 Vào-ra nối tiếp và thiết bị giao diện vào-ra nối tiếp UART 8250/16450 .............................72
4.1.4 Thiết bị giao diện song song ...................................................................................................80
4.2. Các thiết bị ngoại vi .......................................................................................................................83
4.2.1. Bàn phím .................................................................................................................................83
4.2.2 Màn hình ..................................................................................................................................87
4.2.3 Đĩa từ ........................................................................................................................................90
2
Chương1
Kiến trúc máy vi tính PC và đơn vị xử lý trung tâm
1.1. Các thành phần cơ bản của máy tính số
Trong lịch sử, máy tính điện tử được phát triển theo 2 hướng kỹ thuật tách biệt, từ đó sinh ra 2 loại
máy tính là Máy tính tương tự (analog computer) và máy tính số (digital computer). Máy tính
tương tự hoạt động trên các loại số liệu liên tục với các mạch điện tử tương tự, cịn máy tính số
hoạt động trên các loại số liệu rời rạc với các mạch điện tử số. Hiện nay các máy tính số chiếm
ưu thế vượt trội nên khi nói đến máy tính người ta cũng thường hiểu ngầm là máy tính số.
Máy tính số gồm các thành phần cơ bản như sau:
- Đơn vị xử lý trung tâm (CPU): được chế tạo bởi một mạch vi điện tử có độ tích hợp rất cao, nó
có nhiệm vụ đọc mã lệnh là các bit thông tin 0 hoặc 1 từ bộ nhớ chính, giải mã các lệnh này
thành một chuỗi các xung điều khiển để điều khiển các khối khác thực hiện từng bước các thao
tác trong lệnh. Để làm được điều này bên trong vi xử lí có các thanh ghi (registers) để chứa địa
chỉ của các lệnh sắp thực hiện (lệnh kế tiếp) như thanh ghi con trỏ lệnh IP (Instruction Pointer)
hay cịn gọi là bộ đếm chương trình PC (Program Counter) và các thanh ghi khác dùng để lưu trữ
dữ liệu tạm thời hoặc các trạng thái của hệ thống. Các thanh ghi này cùng với bộ tính số học và
logic ALU (Arithmetical and Logic Unit) cho phép thực hiện các thao tác với dữ liệu. Trong vi
xử lí thì đơn vị điều khiển CU (Control Unit) là phần phức tạp nhất vì nó có chức năng giải mã
lệnh và tạo các xung điều khiển toàn hệ thống. CPU thực hiện các chức năng chính sau:
- Điều khiển ghi/đọc thông tin lên bộ nhớ
-Hiểu và thực hiện 1 tập hữu hạn các chỉ thị được thể hiện dưới dạng mã số
-Nhập tuần tự các chỉ thị từ bộ nhớ và thực thi các chỉ thị này (chức năng thực hiện chương
trình đang có trong bộ nhớ).
-Điều khiển q trình nhập thông tin từ thiết bị đầu vào và điều khiển q trình xuất thơng
tin qua thiết bị đầu ra.
- Bộ nhớ chính (RAM+ROM): Được tạo bởi các vi mạch nhớ bán dẫn có tốc độ truy cập nhanh
nhưng dung lượng hạn chế, nằm trên bản mạch chính được chia thành các ơ nhớ và mỗi ơ nhớ có
một địa chỉ duy nhất xác định. Địa chỉ của các ô nhớ (xác định vị trí của ơ đó trong bộ nhớ) bắt
đầu từ 0 và tăng dần, mỗi ô nhớ dài 1 byte.
ROM : ROM là bộ nhớ chỉ đọc. Dữ liệu trong ROM được duy trì ngay cả khi khơng có
3
nguồn điện ni. ROM chứa các chương trình kiểm tra hệ thống, chương trình xác lập cấu hình hệ
thống, chương trình đọc cung đĩa khởi động, các chương trình điều khiển các thiết bị vào-ra cơ
bản của máy tính (BIOS-Basic Input/Output/Output System)...
RAM: RAM là bộ nhớ thao tác. Bộ nhớ RAM có chức năng chứa các phần mềm của hệ thống (hệ
điều hành), phần mềm và dữ liệu của một hoặc nhiều chương trình đang hoạt động (chương
trình ứng dụng). Nội dung RAM sẽ bị xóa khi mất điện
Ngồi ra cịn có:
+ Bộ nhớ khối (bộ nhớ ngồi): Lưu giữ tài nguyên phần mềm của máy tính bao gồm: HĐH, các
chương trình và các dữ liệu. Bộ nhớ ngồi được kết nối với hệ thống dưới dạng các thiết bị
vào/ra. Nó có dung lượng lớn nhưng tốc độ truy cập chậm. Các loại bộ nhớ ngoài như: Đĩa cứng,
đĩa mềm,…
+ Bộ nhớ cache: Là thành phần nhớ tốc độ nhanh được đặt đệm giữa CPU và bộ nhớ chính nhằm
tăng tốc độ truy cập bộ nhớ của CPU. Dung lượng nhỏ hơn bộ nhớ chính. Nó được sử dụng để
lưu trữ các lệnh và dữ liệu thường được sử dụng nhiều trong quá trình thực hiện chương trình.
(bộ nhớ này có thể có hoặc ko có).
-Thiết bị vào: Thực hiện chức năng nhập thơng tin cho máy tính
Ví dụ: Bàn phím, chuột,…
-Thiết bị ra: Hiển thị các thơng tin đưa ra từ máy tính ở dạng con người có thể hiểu được
VD: Màn hình, máy in, thiết bị âm thanh,…
- Phối ghép vào/ra (thiết bị giao diện): là các mạch điện tử thực hiện chức năng ghép nối, cho phép
CPU thông tin được với các thiết bị ngoại vi như bàn phím, màn hình, ổ đĩa từ, chuột,…Các
mạch điện tử này gọi là các cổng vào/ra (I/O port). Tùy theo yêu cầu mà chúng có chức năng
hoặc là cổng vào nếu cho phép CPU nhận thơng tin từ ngồi hoặc là cổng ra nếu cho phép CPU
xuất thông tin ra ngồi hoặc cả hai.
Sự có mặt của thiết bị giao diện là do có sự khác biệt rất lớn về dạng thức truyền tải và tốc độ xử
lý thông tin giữa đơn vị xử lý trung tâm và các thiết bị ngoại vi. Bên trong máy tính con số được
sử dụng làm phương tiện truyền tải thông tin, thế giới bên ngồi máy tính thơng tin được truyền
tải dưới dạng ký tự, ánh sáng, âm thanh,..Đơn vị xử lý trung tâm xử lý thông tin với tốc độ rất
cao, các thiết bị bên ngồi máy tính xử lý thơng tin với tốc độ chậm hơn nhiều.
- Hệ thống bus:
Các khối cơ bản của máy tính được kết nối với nhau qua một tập đường dây truyền tín hiệu
gọi là bus hệ thống: Là đường truyền thơng tin trong máy tính.Về mặt vật lý Bus là tập hợp của
các đường dây truyền tín hiệu điện, mỗi một đường dây truyền được một bit thông tin tại một
thời điểm. Đơn vị xử lý trung tâm CPU thực hiện kết nối và trao đổi thông tin với các đơn vị
chức năng khác thông qua hệ thống BUS. Bus hệ thống gồm 3 bus thành phần là:
+ Bus dữ liệu (2 chiều): để truyền tải dữ liệu.
+ Bus địa chỉ (1 chiều: chiều ra từ CPU) để CPU định vị, chọn ô nhớ hoặc chọn thiết bị
ngoại vi cần liên lạc, là loại bus 1 chiều.
4
+ Bus điều khiển(2 chiều): Do CPU hay thiết bị khác phát ra để điều khiển quá trình trao
đổi dữ liệu như tín hiệu để phân biệt đơn vị được CPU truy nhập là thuộc bộ nhớ hay thiết bị
vào/ra, thao tác truy nhập là đọc hay viết,…
Để người sử dụng có thể làm việc được trên máy tính (như viết và cho chạy các chương
trình ứng dụng của riêng họ) thì chỉ với các bộ phận phần cứng trên là không đủ, một phần mềm
gọi là HĐH phải được cài đặt sẵn trong máy tính. Đó là 1 tập hợp các chương trình để sử dụng
các chức năng cơ bản của các bộ phận phần cứng hay phần mềm trên hệ thống máy tính. Khác
với chương trình ứng dụng, HĐH là một chương trình hệ thống đặc biệt chạy trong suốt thời gian
hoạt động của máy tính. Thực ra nó là một tập hợp các chương trình lo việc điều khiển hoạt động
của máy tính cũng như cho phép các chương trình phần mềm khác chạy được. Nó điều khiển
máy tính quyết định cho các chương trình nào chạy trong khoảng thời gian nào, quyết định
nguồn tài nguyên nào (bộ nhớ, thiết bị vào/ra,…) đang được sử dụng,..
Trong các lĩnh vực khoa học và đời sống, máy tính số có thể dùng trong lĩnh vực xử lý dữ
liệu, sử dụng trong đo lường và điều khiển tự động hay được dùng như một bộ xử lí số…
1.2. Biểu diễn thơng tin trong máy tính số
1. Các hệ đếm liên quan tới máy tính
- Trong cuộc sống hàng ngày ta thường dùng hệ đếm cơ số mười hay hệ thập phân là tổ hợp các chữ
số từ 0 tới 9 để biểu diễn giá trị các số. Còn trong máy tính số thì hệ đếm nhị phân được sử dụng
để biểu diễn giá trị các số. Bởi vì máy tính số được xây dựng trên cơ sở các mạch điện, mà các
mạch điện ở từng thời điểm chỉ ở một trong hai trạng thái đóng hoặc mở; có hoặc khơng có dịng
điện trong mạch; điện áp cao hoặc điện áp thấp. Trong hệ nhị phân thì bit (là số 0 hoặc 1) là đơn
vị nhỏ nhất biểu diễn dữ liệu (đơn vị nhỏ nhất mang thơng tin) trong máy tính.
- Để biểu giá trị của một số N bất kỳ ta dùng ký pháp vị trí như sau:
ana n-1 ….a1a0a-1a-2 …a-(m-1)a -m=a n*bn+a n-1 *bn-1+…+a1 *b1+a0 *b0+a-1 *b-1+a-2 *b-2 +…+a-(m-1)*b(m-1)
+a-m*b-m
Trong đó:
b : là cơ số ;
bn-1,…,b2,b1,b0,b-1,b-2,…,b-(m-1),b-m là các trọng số.
an , an-1,an-2,…,a1,a0,a-1 ,a-2,…a-(m-1),a-m : là các số nằm ở vị trí tương ứng với trọng số.
Khi cần phân biệt rõ hệ đếm thường viết thêm chỉ số dưới ký hiệu cơ số vào các số. Ví dụ số 65
trong hệ thập phân được viết là 6510, trong hệ nhị phân được viết là 1001022.
Ví dụ:
- Biểu diễn số 541.2510 :
541.2510 = 5*10-2 + 2*10-1 + 1*100 + 4*101 + 5*102
Trong đó : 10 - cơ số ;
10-2, 10-1, 100, 101, 102 – các trọng số
5, 2, 1, 4, 5 – là các chữ số được đặt ở vị trí tương ứng với trọng số
-
357.123 = 3*102 + 5*101 + 100 + 1*10-1+2*10-2+3*10-3
Một giá trị 126.5 hệ thập phân sẽ được biểu diễn ở hệ nhị phân dưới dạng :
1111110.12=1*26+1*25+1*24+1*23+1*22+1*21+0*20+1*2-1
5
Trong đó :
2 - cơ số ;
2-1, 20, 21, 22, 23 ,24, 25, 26– các trọng số
1, 0, 1, 1, 1,1,1,1 – là các chữ số được đặt ở vị trí tương ứng với trọng số.
- Hiện nay có 4 hệ đếm hay được dùng trong những bài toán liên quan đến máy tính đó là :
Hệ mười (decimal)
b=10 a={0,1,2,3,4,5,6,7,8,9}
Hệ nhị phân (binary) b=2
Hệ tám (octal)
a={0,1}
b=8 a={0,1,2,3,4,5,6,7}
Hệ mười sáu (hexaldecimal) b=16 a={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
Giữa các hệ đếm thường xuyên phải có sự chuyển đổi qua lại :
+ Đổi số thập phân sang các số có hệ cơ số r được thực hiện bằng cách tách số đó thành 2
phần : Phần nguyên và phần phân số để biến đổi riêng rẽ. Sự biến đổi phần nguyên được thực
hiện bằng cách chia liên tiếp cho r và tích lũy các số dư lại. Biến đổi phần phân số được thực
hiện bằng cách nhân liên tiếp với r và tích lũy các số nguyên nhận được. Ví dụ dưới đây là q
trình biến đổi số thập phân sang số nhị phân :
Đổi 23.37510 sang nhị phân. Chúng ta sẽ chuyển đổi phần nguyên dùng phương thức số
dư :
KQ : 23.37510 = 10111.0112
Tuy nhiên, trong việc biến đổi phần lẻ của một số thập phân sang số nhị phân theo phương
thức nhân, có một số trường hợp việc biến đổi số lặp lại vô hạn như:
6
+ Đổi số nhị phân sang số thập phân: Bằng cách cộng các số mũ 2 ứng với các số bằng 1
trong số nhị phân.
Ví dụ:
1
0
1
0
1
1
1
Số nhị phân
26
25
24
23
22
21
20
Các trọng số
64
0
16
0
4
2
1
Kết quả =87
+ Chuyển đổi giữa các số nhị phân và số hệ thập lục: Một nhóm số nhị phân 4 bit vừa đủ
biểu diễn một chữ số trong hệ mười sáu nên ta sẽ nhóm số nhị phân cần chuyển đổi thành các
nhóm 4bit và đổi mỗi nhóm đó ra 1 chữ số mười sáu:
Ví dụ:
11000001112 nhóm: 11 0000 0111 kết quả là: 30716
+ Chuyển đổi một số hệ thập lục phân sang số nhị phân chỉ việc đổi mỗi chữ số hệ thập lục
sang một nhóm 4bit
Ví dụ :
AB4C = 1010 1011 0100 1100 2
+ Giữa hệ thập phân và nhị phân tồn tại một hệ lai BCD (binary coded decimal): Hệ này
mã hóa mỗi con số trong hệ thập phân bằng một só nhị phân. Thường dùng một số nhị phân 4 bit
để mã hóa cho các chữ số từ 0 đến 9. Như vậy không dùng hết các tổ hợp có thể có của 4bit
(24=16).
Ví dụ: Số 52010 nếu biểu diễn theo số BCD sẽ là:
Số thập phân
5
2
0
Các số BCD
0101BCD
0010BCD
0000BCD
2. Các phép toán đối với các số nhị phân
- Phép cộng : Ta có nguyên tắc sau
0+0=0
0+1=1
1+0=1
1 + 1 = 0 nhớ 1 (để cộng vào hàng trước nó, tương tự như phép cộng số thập
phân). Giá trị 1 + 1 = 2, nhưng vì trong hệ nhị phân chỉ có hai số 0 và 1, mặt khác
7
biểu diễn của 2 trong hệ nhị phân là 2 = 1*21 + 0*20 = 10 nên kết quả chính là 0
và nhớ 1.
Ví dụ: Cộng hai số 1000111 (số 71 trong hệ thập phân) và số 11110 (số 30 trong hệ thập phân).
Cột
7
6
5
4
3
2
1
71 =
1
0
0
0
1
1
1
1
1
1
1
0
30 =
Bit nhớ
0
1
1
1
1
0
101
1
1
0
0
1
0
1
Và kết quả chúng ta được: 1000111 + 11110 = 1100101 (71 + 30 = 101, ta có thể kiếm tra lại
bằng cách đổi số 101 sang nhị phân xem có đúng kết quả vừa làm ra không).
- Phép trừ : Nguyên tắc
0–0=0
0 – 1 = 1 mượn 1 (vì số bị trừ nhỏ hơn số trừ nên phải mượn 1từ số
ở vị trí cao hơn bên trái)
1–0=1
1–1=0
Ví dụ: Thực hiện phép trừ 51 – 28 = 23
Số 5110 = 1100112, số 2810 = 111002
Cột
6
5
4
3
2
1
51 =
1
1
0
0
1
1
28 =
0
1
1
1
0
0
Bit mượn
1
1
1
0
0
23 =
0
1
0
1
1
1
Vậy 110011 – 11100 = 010111 (tương ứng với 51 – 28 = 23)
Ví dụ : 6 – 3 = 3
110
- 011
11
phần nợ
011
- Nhân hai số nhị phân: Phép tính nhân trong hệ nhị phân cũng tương tự như phương
pháp làm trong hệ thập phân. Hai số A và B được nhân với nhau bởi những tích số của các kí số
0 và 1 của A và B: với mỗi con số ở B, tích của nó với một con số trong A được tính và viết
xuống một hàng mới, mỗi hàng mới phải chuyển dịch vị trí sang bên trái 1 bit. Tổng của các tích
cục bộ này cho ta kết quả tích số cuối cùng.
Nguyên tắc: 0 * 0 = 0 ; 1 * 0 = 0; 0 * 1 = 0; 1 * 1 = 1
Ví dụ: 9 x 6 = 54 (1001 x 110 = 110110)
8
Để dễ hiểu, xem 2 hình dười đây, hình thứ nhất biểu diễn cách nhân 2 số thập phân và hình
thứ 2 là cách nhân 2 số nhị phân.
- Chia 2 số nhị phân: Phép chia số nhị phân tương đối phức tạp hơn phép cộng, trừ và nhân. Cách
chia số nhị phân cũng giống như chia 2 số thập phân, do đó các bạn cần nắm vững cách chia trên
số thập phân, đồng thời cần nắm vững cách trừ 2 số nhị phân. Đầu tiên hãy xem hình 1 để nhớ lại
cách chia 2 số thập phân, sau đó xem hình 2 các bạn sẽ hiểu cách chia số nhị phân.
Nguyên tắc: 0 : 1 = 0; 1 : 1 = 1
3. Biểu diễn số nguyên không dấu và có dấu trong máy tính
3.1. Biểu diễn số ngun khơng dấu
Tất cả các số cũng như các mã ... trong máy vi tính đều được biểu diễn bằng các chữ số nhị phân.
Để biểu diễn các số nguyên không dấu, người ta dùng n bit. Tương ứng với độ dài của số bit
được sử dụng, ta có các khoảng giá trị xác định như sau:
Khoảng giá trị
Số bit
n bit:
8 bit (Byte)
0 2n - 1
0255
16 bit(Word)
065535
9
3.2. Biểu diễn số ngun có dấu trong máy tính
Các số nguyên có dấu dùng bit tận cùng bên trái làm bit dấu : bit bằng 0 biểu diễn cho dấu (+)
và bằng 1 cho dấu (-). Một cách tổng quát ta có
Số bit
Khoảng giá trị
-(2 n) +(2 n-1)
n bit:
8 bit
-128 +127
Một số nguyên dương trong khoảng này sẽ được biểu diễn như mã nhị phân thơng thường
có số 0 ở bit cao nhất.
Ví dụ : +25 = 00011001
10
2
+6510=0100 00012
Một số nguyên âm trong khoảng này sẽ được biểu diễn theo mã số bù 2 của số nguyên
dương tương ứng.
Số bù 2 của một số nhị phân được tạo ra bằng cách lấy 1 trừ mỗi chữ số và cộng 1 vào chữ
số có ý nghĩa thấp nhất của số vừa được tạo ra. Phương pháp tạo số bù 2 của một số trên thực tế
đuợc thực hiện bằng cách đổi số 0 thành số 1, đổi số 1 thành số 0 và cộng 1 vào chữ số có ý
nghĩa thấp nhất của số vừa được tạo ra.
Ví dụ : Số bù 2 của
-25 = 11100111
10
2
-6510=1011 1111
Với hệ thống bù 2 các phép tính cộng và trừ hai số nhị phân được thực hiện qua chỉ một
phép tính cộng. Trong hệ thống bù 2 khi thực hiện cộng hai số có thể có bốn tình huống xảy ra:
+ Cả 2 số là dương : Khi thực hiện phép cộng thì cộng từng số từ phải qua trái, kể cả bit
dấu. Ví dụ cộng hai số dương 4 bit :
+ Một số là dương, một số là âm và số âm có trị tuyệt đối nhỏ hơn. Bù 2 của số âm được
tạo và thêm bit dấu vào vị trí cao nhất.
Khi thực hiện phép cộng, một bit nhớ sẽ được tạo ra từ bit dấu. Cần bỏ bit nhớ đi. Kết quả
là một số dương.
Ví dụ cộng hai số khác dấu 4 bit :
10
+ Một số là dương, một số là âm và số âm có trị tuyệt đối lớn hơn.
Khi thực hiện phép cộng, khơng có nhớ từ bit dấu. Kết quả là một số âm ở dạng bù 2. Cần
bỏ bit dấu ở kết quả và phải tạo số bù 2 với số đó để nhận được kết quả thật.
Ví dụ cộng hai số khác dấu 4 bit :
+ Cả hai số là âm : Khi thực hiện phép cộng, có nhớ được tạo ra từ bit dấu. Cần bỏ bit nhớ và
kết quả là một số âm ở dạng bù 2. Phải bỏ bit dấu và tạo số bù 2 với số đó để nhận được kết quả
thật.
Ví dụ cộng hai số âm 4 bit :
4. Biểu diễn số thực trong máy tính
Trong các hệ đếm để mơ tả các giá trị có phần nhỏ hơn 1 người ta dùng 1 dấu “.” (theo tiếng Anh)
hay dấu “,” (theo tiếng Việt) để phân cách 2 phần: Phần nguyên và phần phân số. Vì vậy trong
mục này ta sẽ gọi số có dấu phảy là số có dấu chấm.
Có 2 cách biểu diễn một số thực trong hệ nhị phân : Số có dấu chấm cố định (fixed point number) và
số có dấu chấm động (floating point number).
4.1. Biểu diễn số có dấu chấm cố định
Tương tự như cách biểu diễn 1 số thực thông thường của hệ thập phân gồm 2 phần : Phần
nguyên và phần sau dấu chấm. Công thức như sau :
an-1a n-2….b1 b2…bm-1 bm=a n-1 *En-1+a n-2 *En-2+…+a1 *E1+a0 *E0+b1 *E-1+b2*E-2
+…+bm-1 *E-
(m-1)
+bm*E-m
VD : 111.11=2*2-2 + 2*2-1 + 2*20 + 2*21 + 2*22
4.2. Biểu diễn số có dấu chấm động
Khi cần biểu diễn và xử lí những phân số và những số rất dài, thí dụ các số bao gồm rất
nhiều con số 0 mà chỉ có một ít con số có ý nghĩa như hai số sau :
Khối lượng mặt trời : 199000000000000000000000000000000000g
11
Khối lượng điện tử : 0.000000000000000000000000000000910956g
Khi này máy tính sẽ phải dùng đến một số lớn byte nhớ để lưu trữ các con số 0 như vậy.
Như đã biết rằng 1 byte biểu diễn được 256 số (từ 0 tới 255) thì để biểu diễn một số trong dải rất
rộng từ lớn đến nhỏ như vậy cần đến cỡ 14 byte cho phần nguyên và 12 byte cho phần thập phân.
Rõ ràng trong trường hợp này dùng loại số có dấu chấm tĩnh sẽ rất bất tiện. Máy tính số thường
biểu diễn và lưu trữ những số trên trong dạng dấu chấm động như sau : 1.99*1033g và
0.910956*10-27g hay theo cách viết khoa học là 1.99E33g và 0.910956E-27g. Tổng quát lên thì
một số dấu chấm động sẽ có dạng là:
Ví dụ :
± Định trị *Cơ số± số mũ
490000=0.49*106
0.00023=0.23*10-3
Giá trị dấu chấm động được biểu diễn ở dạng mã nhị phân tuân theo chuẩn IEEE754. Có 2
dạng số dấu chấm động : Dạng đơn giản và dạng độ chính xác gấp đôi.
+ Dạng đơn giản : Số dấu chấm động được lưu trữ dưới dạng dữ liệu 32bit :
Dữ liệu này biểu diễn giá trị : V=(-1)S*2E-127 *1.F
V : giá trị của số dấu chấm động
S : bit dấu
E : Số nguyên nhị phân
F : Phần sau dấu chấm nhị phân (dạng mã nhị phân). Phần định trị có dạng 1.F
+ Dạng độ chính xác gấp đơi : Giá trị dấu chấm động độ chính xác gấp đơi được lưu trữ
dưới dạng dữ liệu 64bit :
Dữ liệu này biểu diễn giá trị :
V=(-1)S*2E-1023 *1.F
Phạm vi biểu diễn của số dấu chấm động 64bit được hiểu theo cách tương tự như với số
chấm động 32bit.
Ví dụ các bước biến đổi số thập phân -12.625 sang số chấm động chuẩn IEEE 754 chính
10
xác đơn (32 bit):
Bước 1: Đổi số -12.625 sang nhị phân: -12.625 = -1100.101 .
10
10
3
2
Bước 2: Chuẩn hoá: -1100.101 = -1.100101 * 2 (Số 1.100101 dạng 1.f)
2
2
2
Bước 3: Điền các bit vào các trường theo chuẩn:
Số âm: bit dấu S có giá trị 1. Phần mũ E với số thừa K=127, ta có: E-127=3
⇒ E = 3 + 127 = 130 (1000 0010 ).
2
12
1.2.4. Biểu diễn các ký tự
Tuỳ theo các hệ thống khác nhau, có thể sử dụng các bảng mã khác nhau: ASCII,
EBCDIC, UNICODE,....
+ Bảng mã ASCII (American Standard Codes for Information Interchange) : Bảng mã này gán cho
mỗi ký tự đọc được và không đọc được (ký tự điều khiển) một số nhị phân nhất định. Bảng mã
này dùng một byte để biểu diễn một ký tự. Với chuẩn mã ASCII này khi biểu diễn thì sẽ gặp phải
khó khăn trong việc biểu diễn các bảng chữ cái không phải là tiếng anh như tiếng Việt, hay cho
các hệ chữ tượng hình như (hán, hàn, nhật).
Ký tự
Mã thập phân
Mã thập lục phân
Null
0
00
31 ký tự điều khiển
1 – 31
01-1F
Các dấu
32 – 47
20 – 2F
Số 0-9
48-57
30-39
Các dấu khác
58-64
3A-40
A-Z
65-90
41-5A
Các dấu khác
91-96
5B-60
a-z
97-122
61-7A
Các dấu khác
123-127
7B-7F
+ Chuẩn Unicode : Dùng 2 byte để mã hóa một ký tự. Đặc điểm chính của Unicode là nó khơng
chứa ký tự điều khiển và dùng cả 16bit để mã hóa ký tự.
Tuỳ theo các hệ thống khác nhau, có thể sử dụng các bảng mã khác nhau: ASCII, EBCDIC,
UNICODE,....Các hệ thống trước đây thường dùng bảng mã ASCII (American Standard Codes
for Information Interchange) để biểu diễn các chữ, số và một số dấu thường dùng mà ta gọi
chung là ký tự.
1.2.5. Biểu diễn các dạng thông tin khác
- Biểu diễn hình ảnh :
Ảnh thực chất là một tập hợp các điểm màu liên tiếp liền nhau hoặc 1 tập hợp các đường hình học
nhằm miêu tả 1 phong cảnh sự vật hay một chủ đề nào đó. Trên máy tính ảnh được lưu trên các
file nhị phân theo các định dạng do nhà sản xuất quy định. Hiện tại có hơn 50 định dạng ảnh
khác nhau được chia làm 2 loại cơ bản nhất là ảnh bitmap và ảnh vecto. Như ảnh bitmap mỗi bit
tương ứng một điểm ảnh (giá trị 1 – màu đen, giá trị 0 – màu trắng)
Ta có thể gặp rất nhiều các định dạng ảnh khác nhau như : BMP,ICO,GIF, JPG,…
- Biểu diễn âm thanh : ta có thể mã hóa âm thanh theo hệ đếm nhị phân bằng cách ngắt âm thanh ra
thành nhiều giá trị sau một khoảng thời gian nhất định. Sau đó gán cho mỗi giá trị một mã nhị
phân và lưu trữ chúng tuần tự trong một tệp. Ví thính giác con người chỉ phân biệt được tần số
13
âm thanh tối đa là fmax=20Khz, nên theo quy luật lấy mẫu tần số ngắt âm thanh tối thiểu phải
lớn gấp đơi tần số tối đa fmax.
Mã hóa âm thanh bằng 8bit sẽ cho 256 giá trị khác nhau. Những khổ âm thanh thường gặp là
WAVE, MPEG,…
1.3 Kiến trúc cơ bản máy vi tính PC
Một máy tính PC được xây dựng trên cơ sở các khối chức năng cơ bản sau:
1. Đơn vị xử lý trung tâm CPU 80286
CPU 80286 là loại 16 bít (độ rộng của dữ liệu hoặc mã lệnh là 16 bit). Chức năng chính của
CPU:
+ Quản lý bộ nhớ.
CPU 80286 có Bus địa chỉ 24bit và quản lý được 24 *220 = 16M ô nhớ vật lý.
+ Hiểu và xử lý một tập hữu hạn các lệnh.
- Chuyển dữ liệu giữa CPU và bộ nhớ (MOV, PúH, POP v.v.)
- Số học và logic (ADD, SUB, MUL, DIV v.v...)
- Xử lý bit (SHL.SHR.ROL.Rỏ v.v...)
- Rẽ nhánh (JMP. CALL, RET. INT v.v...)
- Vào/ra dữ liệu các cổng (IN, OUT)
- Các lệnh khác (CLI. STI v.v...)
+ Thực hiện chương trình theo cơ chế nhập tuần tự từng lệnh từ bộ nhớ và xử lý.
+ Điều khiển hoạt động trao đổi dữ liệu giữa CPU và bộ nhớ, giữa CPU với thiết bị vào/ra
và với các thiết bị khác.
CPU 80286 có hai chế độ làm việc.
14
+ Chế độ thực: là chế độ hoạt động giống như CPU.8086. Khi bật nguồn điện thì CPU được
đặt ở chế độ thực. Trong chế độ này CPU quản lý bộ nhớ vật lý lớn đến 24*216 = 1Mb, và có thể
mở rộng đến 16Mb.
+ Chế độ bảo vệ
Chế độ bảo vệ cung cấp cơ chế bảo vệ bộ nhớ và công cụ hỗ trợ quản lý bộ nhớ ảo. Trong
chế độ này CPU quản lý được 214 * 216 = 230 = 1G ô nhớ. Các CPU từ 80286 trở về sau đều có
khả năng làm việc ở chế độ này.
2. Bộ đồng xử lý
Bộ đồng xử lý trợ giúp CPU xử lý các phép tính số học có giá trị là dấu chấm động, các
phép tính logarit, lượng giác với tốc độ nhanh và với độ chính xác cao.
3. Bộ nhớ chính
Bộ nhớ chính được hiểu là bộ nhớ có tốc độ truy nhập cao (bộ nhớ bán
dẫn). Bộ nhớ chính được tổ chức kiểu tuyến tính. Địa chỉ của các ơ nhớ (xác định
vị trí của ơ đó trong bộ nhớ) bắt đầu từ 0 và tăng dần. Bộ nhớ chính chứa mã lệnh
chương trình và dữ liệu của chương trình đang chạy hiện thời. Khi CPU phát địa
chỉ lên Bus địa chỉ là để truy nhập bộ nhớ chính. Bộ nhớ chính có hai phần ROM
và RAM.
ROM : ROM là bộ nhớ chỉ đọc. Dữ liệu trong ROM được duy trì ngay cả khi khơng có
nguồn điện nuôi. ROM chứa các phần mềm cơ bản sau:
- Các chương trình kiểm tra hệ thống (quá trình POST): Kiểm tra CPU,
kiểm tra RAM, kiểm tra các thiết bị điều khiển và giao diện, các thiết bị ngoại vi như bàn phím, ổ
đĩa, v.v...
- Chương trình xác lập cấu hình hệ thống.
- Chương trình quét ROM mở rộng (Tại các địa chỉ C000 : 0000, D000:
000. Nếu tìm thấy bất kỳ ROM nào có chương trình thì nó sẽ được thực thi).
- Chương trình đọc cung khởi động (mặt 0, rãnh 0, cung vật lý 1) của ổ đĩa khởi động mặc
định.
BIOS
thường
cho
phép
chọn
ổ
đĩa
khởi
động
mặc
định.
Nếu khởi động từ đĩa mềm thì cung khởi động (Boot Record) được đọc. Nếu khởi động từ ổ
cứng
thì
cung
khởi
động
chủ
(Master
Boot
Record-MBR)
của
ổ
đĩa cứng thứ nhất được đọc. Nội dung cung này được nạp vào RAM tại địa chỉ
0000 : 7C00. CPU chạy chương trình khởi động hệ điều hành tại địa chỉ này.
ROM cịn chứa các chương trình điều khiển các thiết bị vào-ra cơ bản của máy tính (BIOSBasic Input/Output/Output System). BIOS là cầu nối giữa phần cứng và phần mềm trong hệ
thống máy tính. Các chương trình điều khiển này ln gắn với cấu hình phần cứng của máy
tính. Thơng qua các chương trình này hệ điều hành có thể giao diện được với phần cứng của từng
máy tính.
RAM: RAM là bộ nhớ thao tác. Bộ nhớ RAM có chức năng chứa các phần mềm của hệ
thống (hệ điều hành), phần mềm và dữ liệu của một hoặc nhiều chương trình đang hoạt động
(chương trình ứng dụng).
Phân bổ địa chỉ của các vùng chức năng tại vùng nhớ đầu tiên như sau:
15
Địa
chỉ
lý
vật
(hexadecimal)
Địa chỉ đoạn
Tên và chức năng vùng nhớ
(hexadecimal)
000000-09FFFF
00000
Vùng nhớ quy ước 640Kb dành cho hệ điều hành và
người sử dụng
0A0000-0BFFFF
A000
Vùng nhớ 128Kb dành cho hiển thị (VIDEO RAM).
0C0000-0DFFFF
C000
Vùng nhớ 128Kb dự phòng cho ROM, mở rộng
(C000,C800,D000,D800)
0E0000-0EFFFF
E000
Vùng nhớ 64kb dự phòng cho RAM hệ thống.
0F0000-0FFFFF
F000
Vùng nhớ 64Kb ROM hệ thống
Vùng nhớ mở rộng 15Mb
100000-FFFFFF
4. CMOS
Thiết bị CMOS gồm hai bộ phận chính: đồng hồ thời gian thực và RAM-CMOS.
Các thiết bị này được nuôi bằng nguồn điện độc lập.
Đồng hồ thời gian thực cung cấp thông tin thời gian thực; năm-thángngày, giờ-phút-giây. Các thông tin này được chứa ở 10 byte đầu tiên trong RAM-CMOS.
RAM-CMOS: phần còn lại của RAM-CMOS chứa thơng tin về cấu hình hệ thống (kích
thước RAM, các thông tin về ổ đĩa từ, v.v...). Việc truy nhập RAM-CMOS được thực hiện
thông
qua
các
cổng
với
địa
chỉ
070h
và
071h.
5. Bộ định thời TIMER 8254
TIMER 8254 gồm có 3 bộ đếm nhị phân 16 bít. Đây là các bộ đếm khả trình. Các bộ đếm
16 bít trong TIMER 8254 nhận xung nhịp tần số 1190MHz từ mạch tạo xung chuẩn. TIMER
8254 tạo ra xung nhịp cho đồng hồ hệ thống, xung nhịp làm tươi DRAM và xung âm thanh cho
loa:
Bộ đếm # 0: tạo xung nhịp chu kỳ 55ms (18.2 xung/ls) cho đồng hồ hệ thống.
Bộ đếm #1: tạo xung nhịp kích hoạt hệ thống làm tươi DRAM.
Bộ đếm #2: Cho phép người sử dụng lập trình tạo xung âm thanh cho loa.
6.
Bộ
điều
khiển
ngắt
PIC8259
(Programmable
Interrupt
Controller)
PIC 8259 là thiết bị điều khiển khả trình. PIC 8259 hỗ trợ CPU thực hiện
cơ chế ngắt cùng cho phép CPU phản ứng tức thời với yêu cầu của các thiết bị vào-ra dữ liệu
và các thiết bị khác. Trong máy vi tính dịng AT có hai thiết bị PIC 8259, mỗi thiết bị ghi nhận
được 8 yêu cầu ngắt.
16
7. Bộ điều khiển truy nhập trực tiếp bộ nhớ DMAC 8237 (Direct Memory Access Controller)
DMAC 8237 là thiết bị điều khiển khả trình. DMAC 8237 điều khiển quá trình vào/ra dữ
liệu trực tiếp giữa bộ nhớ và các thiết bị ngoại vi (ví dụ: thiết bị đĩa từ), gọi tắt là quá trình
DMA (Direct Memory Access). Trong máy vi tính dịng AT có hai thiết bị DMAC 8237, mỗi
thiết bị phục vụ 4 kênh DMA.
8. Thiết bị giao diện bàn phím KC 8042 (Keyboard Controller)
KC 8042 thực hiện chức năng giao diện giữa bàn phím và đơn vị xử lý trung tâm CPU.
KC 8042 thực hiện giao diện kiểu nối tiếp đồng bộ giữa CPU và bàn phím, phát các chỉ thị và
nhận mã phím từ bàn phím.
9. Thiết bị giao diện màn hình CRTC (Cathode Ray Tube Controller)
CRTC là thiết bị khả trình. CRTC thực hiện chức năng giao diện giữa CPU và màn hình
hiển thị. CRTC nhận lệnh và dữ liệu từ CPU, tạo ra tín hiệu ảnh và các tín hiệu đồng bộ điều
khiển hiển thị trên màn hình. CRTC có thể làm việc ở hai chế độ văn bản và đồ hoạ màu.
10. Thiết bị giao diện nối tiếp UART 8250 (Universal Asynchronous Receiver Transmitter)
UART 8250 thực hiện chức năng giao diện kiểu nối tiếp không đồng bộ giữa CPU và các
thiết bị ngoại vi theo chuẩn RS232.UART 8250 thực hiện chức năng nhận và phát dữ liệu dạng
nối tiếp, tạo và nhận các tín hiệu bắt tay với thế giới bên ngoài theo chuẩn RS232. Trong máy
vi tính dịng AT có hai thiết bị UART 8250.
11. Thiết bị giao diện song song PPI (Programmable Peripheral Interface)
Mạch PPI thực hiện quá trình giao diện song song giữa CPU và các thiết bị ngoại vi. PPI
thực hiện chức năng nhận và phát dữ liệu dạng song song, tạo và nhạn các tín hiệu bắt tay với
các thiết bị ngoại vi.
12. Thiết bị giao diện mềm FDC (Floppy Disk Controller)
FDC thực hiện chức năng giao diện giữa CPU và thiết bị đĩa mềm. FDC nhận lệnh và dữ
liệu từ CPU hoặc bộ nhớ, chuyển thành dạng thích hợp đưa ra thiết bị đĩa mềm và ngược lại.
13. Thiết bị giao diện đĩa cứng HDC (Hard Disk Controller)
HDC thực hiện chức năng giao diện giữa CPU và thiết bị đĩa cứng theo chuẩn IDE,
HDC nhận dữ liệu từ bộ nhớ, chuyển thành dạng thích hợp đưa ra thiết bị đĩa cứng và ngược
lại theo chuẩn IDE.
Trong PC hiện đại các mạch chức năng như 8254, 8259, 8237, CMOSRAM, 8250,
PPI, 8042, điều khiển IDE, cầu PCI, v.v... được tích hợp vào các mạch tích hợp cỡ lớn
(chipset).
Khơng gian địa chỉ các thiết bị vào-ra được phân bổ chặt chẽ. Địa chỉ các cổng vào-ra
(port address) được phân bổ như sau:
vùng địa chỉ (hexadecimal-
Thiết bị
thập lục phân)
000-01F
Bộ điều khiển DMAC-1 8237
020-03F
Bộ điều khiển ngắt PIC-1 8259, chủ
040-043
Bộ định thời 8254
17
060-064
Thiết bị điều khiển giao diện bàn phím KC8042
070-071
CMOS-RAM-Đồng hồ thời gian thực
080-09F
Thanh ghi trang DMA
0A0-0BF
Bộ điều khiển ngắt PIC-2 8259, thợ
0C0-0DF
Bộ điều khiển DMAC-2 8237
0F8-0FF
Bộ đồng xử lý 80x87
170-177
Thiết bị điều khiển giao diện IDE-1
1F0-1F7
Thiết bị điều khiển giao diện IDE-0
200-207
Thiết bị giao diện điều khiển trò chơi
278-27F
Thiết bị giao diện song song 2 (cổng máy in LPT2)
2F8-2FF
Thiết bị giao diện nối tiếp 2 (cổng nối tiếp COM2)
300-31F
Card thử nghiệm
378-37F
Thiết bị giao diện song song 1 (cổng máy in LPT1)
380-38F
Dự phịng
3A0-3AF
Dự phịng
3B0-3BF
Thiết bị giao diện màn hình đơn sắc
3C0-3CF
Dự phịng
3D0-3DF
Thiết bị giao diện màn hình VGA
3F0-3F7
Thiết bị giao diện đĩa mềm FDC
3F8-3FF
Thiết bị giao diện nối tiếp 1 (cổng nối tiếp COM1)
1.4. Đơn vị xử lý trung tâm CPU (Central Processing Unit)
1.4.1. Cấu hình bên ngồi
Đơn vị xử lý trung tâm 80286 của máy vi tính PC/AT có các chân tín hiệu như hình sau:
- CLK: tín hiệu xung tạo nhịp thời gian cơ sở cho đơn vị xử lý trung tâm.
- RST: tín hiệu khởi động hệ thống (đưa mạch logic bên trong CPU về trạng thái ban đầu).
Nếu RST=1 trong ít nhất 16 nhịp đồng hồ thì vi xử lý sẽ bỏ chương trình đang chạy và nhảy vào trạng
18
thái khởi động lại ngay sau khi chuyển xuống mức 0.
- A23-A0: BUS địa chỉ (24 tín hiệu địa chỉ, 3 trạng thái) xác định địa chỉ bộ nhớ và các
thiết bị vào-ra. Kích thước tối đa của bộ nhớ vật lý là 224 = 16Mb. Khi CPU làm việc với các
cổng vào-ra thì các chân A23-A16 có mức 0, các dây A15-A0 được dùng để xác định địa chỉ
64Kb cổng vào-ra.
- D15-D0: BUS dữ liệu 16 bít, hai chiều, 3 trạng thái.
- Vcc: Nguồn nuôi +5V cho vi xử lý
- GND: Được nối đất (0V)
Các tín hệu điều khiển
- INT: tín hiệu yêu cầu ngắt cứng. Yêu cầu ngắt có thể bị che khi bit cờ IF trong thanh ghi FLAGS
được đặt xuống 0.
- NMI: yêu cầu ngắt không che được bằng cờ IF.
Ngắt này không bị che bởi cờ ngắt. Ngắt này sẽ được thực hiện ngay sau khi kết thúc lệnh hiện tại.
- HOLD: yêu cầu CPU "thả nổi" hệ thống BUS.
Khi có thiết bị nào đó muốn làm chủ (quản lý hệ thống bus như DMAC 8237) nó sẽ gửi tín hiệu
HOLD cho CPU.
- HLDA: trả lời "HOLD". Khi HLDA tích cực thì các đầu Ao -A23, Do -D15 và một số đầu
tín hiệu điều khiển khác có trở kháng cao, CPU bị cách ly với thế giới bên ngồi. (Nếu đồng ý
thì HLDA=1)
- -LOCK: cấm các µP khác làm chủ BUS.
- PEREQ, -PEACK, -BUSY, -ERROR: Các tín hiệu này được dùng để ghép nối 80286 với các phần tử
mở rộng của vi xử lý như bộ đồng xử lý tốn 80287.
+ PEREQ: tín hiệu từ bộ đồng xử lý là một toán hạng đã được gửi.
+ -PEACK: Báo cho bộ đồng xử lý là 1 tốn hạng đã được gửi.
+ -BUSY: tín hiệu từ bộ đồng xử lý báo bận.
+ -ERROR: tín hiệu từ bộ đồng xử lý báo lỗi.
- -BHE: Khi kết hợp với chân A0 sẽ cho các chỉ thị sau:
-BHE
A0
Ý nghĩa
0
0
Một từ đã được truyền qua D15÷D0
0
1
1 byte trên D15÷D8 được truy xuất tới địa chỉ lẻ (vd 2F05H)
1
0
1 byte trên D15÷D8 được truy xuất tới địa chỉ chẵn (vd 2F04H)
1
1
Chưa xác định
- COD/-INTA: mức tích cực thấp là tín hiệu trả lời ngắt.
- M/-IO: Nếu =1 truy xuất bộ nhớ
Nếu =0 Truy xuất bộ phận vào/ra
- READY: Nếu bộ nhớ (thiết bị ngoại vi) cần truy nhập hoàn tất việc chuyển số liệu đến (hoặc đi)
chúng cần phát ra tín hiệu READY ở mức tích cực 1 tới vi xử lý, chỉ khi ấy vi xử lý mới đọc số
liệu vào hoặc tiếp tục xuất ra số liệu.
- Về điều khiển thì 80286 phát ra các tín hiệu trạng thái tới 1 chip gọi là bộ điều khiển bus (82288) tiếp
đó chip này sẽ dịch (giải mã) các tín hiệu trạng thái và phát ra các tín hiệu điều khiển tới các bus cụ
19
thể sau:
1.4.2. Cấu hình bên trong
CPU 80286 được cấu thành từ 4 đơn vị chính như sau:
AU (đơn vị địa chỉ)
A23÷A0
IU (đơn vị lệnh)
- Đơn vị BUS (BU):
BU bao gồm các đệm địa chỉ, điều khiển và dữ liệu. BU thực hiện giao diện BUS, tạo ra và nhận
vào các tín hiệu địa chỉ, điều khiển và dữ liệu và nhập lệnh từ bộ nhớ vào hàng đợi.
- Đơn vị lệnh IU
IU gồm bộ giải mã lệnh và hàng đợi lệnh đã giải mã. Đơn vị lệnh IU thực hiện giải mã lệnh và
đưa vào hàng đợi.
- Đơn vị thực hiện EU : EU thực hiện lệnh đã được giải mã.
EU bao gồm đơn vị điều khiển, các thanh ghi và đơn vị số học – logic.
+ Đơn vị điều khiển CU (Control Unit) : Đơn vị điều khiển CU có chức năng giải mã lệnh và từ
đó tạo ra các tín hiệu điều khiển hoạt động của các đơn vị chức năng khác ở bên trong và bên
ngoài đơn vị xử lý trung tâm CPU, nhằm thực thi được lệnh hiện hành. CU điều khiển thực hiện
các vi thao tác thực hiện lệnh theo nhịp của xung đồng hồ Clock.
+ Đơn vị số học – logic ALU (Arithmetic – Logic Unit) : ALU thực hiện các phép tính số học,
logic và các phép xử lý dữ liệu khác.
20
+ Các thanh ghi dùng để chứa địa của ô nhớ, chứa dữ liệu, hay trạng thái kết quả của phép tính
…trong q trình CPU thực hiện chương trình
- Đơn vị địa chỉ AU : Đơn vị địa chỉ AU gồm các thanh ghi đoạn, các thanh ghi trong chế độ
bảo vệ, bộ cộng địa chỉ offset, bộ tạo địa chỉ vật lý từ địa chỉ logic. AU quản lý bộ nhớ trong cả
hai chế độ làm việc : chế độ thực và chế độ bảo vệ.
1.4.3. Quản lý bộ nhớ trong chế độ thực và các thanh ghi đoạn
Trong chế độ thực bộ nhớ được quản lý theo cơ chế phân đoạn (segmentation), tức là bộ nhớ
được định vị và giám sát theo đoạn. Trong cơ chế phân đoạn mỗi một chương trình khơng được
xem là một chuỗi liên tục của mã lệnh và dữ liệu mà được chia thành các modul mã lệnh, dữ
liệu, ngăn xếp,…Mỗi modul được chứa trong một đoạn nhớ và có một địa chỉ xác định. Ở CPU
16bit mỗi một đoạn có kích thước 64Kb. Hệ điều hành có thể đặt các modul của chương trình ở
bất kỳ chỗ nào trong bộ nhớ vật lý, đoạn nhớ sẽ mang tên của loại modul nó chứa.
Có 4 loại đoạn khác nhau:
+ Đoạn mã lệnh (code segment): chứa mã lệnh của chương trình.
+ Đoạn dữ liệu (data segment): chứa dữ liệu của chương trình.
+ Đoạn ngăn xếp (stack segment): là đoạn chứa các thông tin và dữ liệu phục vụ chương trình con.
+ Đoạn mở rộng (extra segment): chứa dữ liệu mở rộng.
Mỗi một đoạn có một địa chỉ gọi là địa chỉ đoạn. CPU có phần cững hỗ trợ việc quản lý và truy nhập
các đoạn, đó là các thanh ghi đoạn 16bit CS, DS, SS, ES. Trong chế độ thực thanh ghi đoạn chứa
địa chỉ đoạn. Cụ thể :
+ Thanh ghi CS chứa địa chỉ đoạn mã lệnh
+ Thanh ghi DS chứa địa chỉ đoạn dữ liệu.
+ Thanh ghi SS chứa địa chỉ đoạn ngăn xếp.
+ Thanh ghi ES chứa địa chỉ đoạn mở rộng.
- Địa chỉ đoạn xác định vị trí của đoạn trong bộ nhớ. Ta nhận được địa chỉ nền của đoạn vật lý (địa
chỉ của ô nhớ đầu tiên của đoạn) bằng cách dịch trái địa chỉ đoạn đi 4 bit và điền các số 0 vào 4
bit thấp nhất.
- Mỗi ô nhớ trong đoạn được định vị bằng một cặp con số : địa chỉ đoạn và địa chỉ offset (địa chỉ
lệch), trong đó địa chỉ offset là con số xác định vị trí của ơ nhớ so với nền đoạn. Cặp số này được
gọi là địa chỉ logic của ô nhớ và được biểu diễn ở dạng : địa chỉ đoạn : địa chỉ offset.
Ta có 2 cặp thanh ghi sau luôn đi với nhau :
CS : IP và SS : SP
+ IP : Chứa địa chỉ offset của ô nhớ trong đoạn mã lệnh chứa lệnh CPU cần nhập để thực
hiện
+ SP : Chứa địa chỉ offset của ô đỉnh ngăn xếp trong đoạn ngăn xếp.
- Khi truy nhập các đoạn dữ liệu người lập trình cần xác định offset của các ô nhớ bằng các phương
pháp xác định địa chỉ toán hạng (định vị toán hạng).
- Ta có thể hình dung cơ chế quản lý bộ nhớ trong chế độ thực như hình vẽ sau :
21
Cách tính địa chỉ vật lí
B1: Dịch trái địa chỉ đoạn đi 4 bit và điền các bit 0 vào 4 bit thấp
B2: Cộng địa chỉ offset với địa chỉ đoạn sau khi dịch trái
Cụ thể như sau:
Cơng thức tính:
Địa chỉ vật lý = Địa chỉ đoạn *10 + Địa chỉ offset (tính trong hệ hexa)
Vd: địa chỉ logic 1234h:0005h sẽ ứng với
địa chỉ vật lí 1234h * 10h + 0005h = 12340h + 0005h = 12345h
Tuy nhiên, do các segment gối đầu nhau nên mỗi ơ nhớ có thể thuộc một vài segment khác nhau. Vì
vậy, một địa chỉ vật lí có thể ứng với nhiều địa chỉ logic khác nhau.
Vd: địa chỉ vật lí 12345h có thể ứng với các địa chỉ logic sau:
1234h:0005h
1230h:0045h
1200h:0345h
1000h:2345h
1232h:0025h
…
Ta có thể thấy rõ hơn về cơ chế quản lý bộ nhớ trong chế độ thực qua hình vẽ dưới:
22
- Nhận xét:
+ Các đoạn không được xếp tuần tự nhau mà được xếp chồng gối lên nhau
+ Khoảng cách tối thiểu của mỗi đoạn là cách nhau 16 ô nhớ hay cách nhau 16bytes.
1.4.4. Các thanh ghi
Các thanh ghi là các đơn vị lưu trữ dữ liệu nằm trong CPU có tốc độ truy cập nhanh. Chúng
được dùng để chứa các toán hạng của lệnh, các kết quả tạm thời của các q trình tính tốn.
Các thanh ghi trong 80286 được chia ra thành các nhóm sau :
Các thanh ghi đa năng AX, BX, CX, DX :
AX, BX, CX, DX là các thanh ghi đa năng 16 bit, được dùng để chứa các toán hạng của
lệnh hoặc các kết quả của phép tính.
Có thể truy nhập từng thanh ghi này như là các thanh ghi 16 bit AX, BX, CX, DX hoặc
như các thanh ghi 8 bit AH, AL, BH, BL, CH, CL, DH, DL...
23
Các thanh ghi AX, BX, CX, DX cịn có các chức năng mặc định riêng trong một số ngữ
cảnh cụ thể sau :
- AX (Accumulator): Khi gọi các hàm chức năng của hệ điều hành qua lệnh INT, thanh ghi
AX hoặc AH được dùng để chứa con số xác định một chức năng cụ thể cần thực hiện của hàm
này.
VD : INT 21 thực hiện hàm 5B- Tạo tập tin mới thì AH=5B
- BX (Base): Khi thực hiện các lệnh truy nhập đoạn dữ liệu, BX được dùng để xác định địa
chỉ offset hoặc địa chỉ offset nền của ô nhớ trong đoạn.
- CX (Counter): Khi thực hiện các lệnh LOOP hoặc REP, CX đóng vai trị một bộ
đếm (chứa số đếm), xác định số lần thực hiện lặp.
VD : Để lặp 1 vòng n lần CX=n. Giá trị này được giảm đi 1 khi thực hiện song 1 lần lặp
và cứ tiếp tục như vậy cho tới khi CX=0 thì kết thúc.
- DX (Data) : Được dùng để chứa hai byte cao kết quả phép nhân hoặc phần dư của phép
chia 16 bit. Khi truy nhập các cổng vào/ra có địa chỉ lớn hơn 255, DX được dùng để chứa địa
chỉ (xác định địa chỉ) các công này.
VD : DX=378H là địa chỉ của cổng máy in
Các thanh ghi địa chỉ BP, SI, DI, SP: là các thanh ghi 16 bit
- SP (Base Pointer): BP được dùng để xác định địa chỉ offset hoặc địa chỉ offset nền của ô
nhớ khi thực hiện các lệnh truy nhập các đoạn dữ liệu. BP thường được dùng để xác
định địa chỉ offset hoặc địa chỉ offset nền khi truy nhập đoạn ngăn xếp.
- SI (Source Index) : SI được dùng để chứa (xác định) địa chỉ offset hoặc một phần của địa
chỉ offset khi truy nhập đoạn dữ liệu. SI thường được dùng để chứa địa chỉ offset của xâu ký tự
trong đoạn dữ liệu (DS : SI) khi thực hiện lệnh thao tác xâu.
- DI (Destination Index) : DI được dùng để chứa (xác định) địa chỉ offset hoặc một phần
của địa chỉ offset khi truy nhập đoạn dữ liệu. DI thường được dùng để chứa địa chỉ offset
của xâu ký tự trong đoạn mở rộng (ES: DI khi thực hiện lệnh thao tác xâu).
- SP (Stack Pointer) : Con trỏ ngắn xếp SP chứa địa chỉ offset của ô nhớ trong đoạn ngăn
xếp. SP luôn trỏ đến đỉnh ngăn xếp.
Nhóm thanh ghi đoạn CS, DS, SS, ES : Là các thanh ghi 16bit, trong quản lý bộ nhớ theo cơ
chế phân đoạn thì
CS : Chứa địa chỉ đoạn của đoạn mã lệnh
DS : Chứa địa chỉ đoạn của đoạn dữ liệu
ES : Chứa địa chỉ đoạn của đoạn mở rộng
SS : Chứa địa chỉ đoạn của đoạn ngăn xếp
Các thanh ghi điều khiển và trạng thái :
- Con trỏ lệnh IP (In struction Pointer): là thanh ghi 16 bit IP chứa địa chỉ offset của ô
nhớ trong đoạn mã lệnh. Khi nhập lệnh thì IP tự động tăng dần và khi CPU nhập xong một lệnh
thì IP trỏ đến ô nhớ chứa lệnh tiếp theo trong đoạn mã lệnh. Nội dung IP bị thay đổi bất
thường khi CPU thực lệnh nhảy, lệnh gọi chương trình con hoặc bởi các cơ chế ngắt cứng và
mềm.
24
- Thanh ghi cờ FLAGS : là thanh ghi 16 bit chứa các bít thơng tin phản ánh trạng thái
của kết quả phép tính.
Một số bit cờ như IF, TF, IOPL ảnh hưởng đến hoạt động của CPU.
Không thể tác động trực tiếp vào toàn bộ thanh ghi cờ mà chỉ có thể tác động vào một
số bit cờ qua các lệnh CLC, STC, CLI, STI, CLD, STD.
- CF (Carry Flag) : cờ nhớ ; Nếu có hiện tượng nhớ từ bit cao nhất khi thực hiện phép tính thì
CF = 1. Các lệnh CLC, STC và các lệnh dịch bit, quay vòng ảnh hưởng tới cờ này
- PF (Parity Flag) : cờ kiểm tra chẵn lẻ ; Nếu lượng các bit 1 trong kết quả chẵn thì PF=1.
- AF(Auxiliary Flags) : cờ nhớ phụ. Cờ AF được sử dụng trong các phép tính số học với các
số BCD (Binary Cođe Decimal). Nếu có nhớ hay có mượn đối với 4 bit thấp thì AF= 1
- ZF (Zero Flag) : cờ zero. Nếu kết quả phép tính bằng khơng thì ZF = 1.
- SF (Sign Flag): cờ dấu ; Nếu kết qủa âm (bít cao nhất của kết quả có giá trị 1) thì SF =1
- TF (Trap Flag) : cờ bẫy ; Nếu TF = 1, CPU được đặt ở chế độ chạy từng lệnh phục vụ hiệu
chỉnh chương trình (debug). Trong chế độ này mỗi lệnh khi được thực hiện xong sẽ gây ra một
ngắt logic (ngắt 01H) kích hoạt chương trình hiệu chỉnh.
- IF (Interrupt Flag) : cờ ngắt ; Nếu IF = 1, cho phép CPU phản ứng với tín hiệu báo ngắt INT.
Dùng lệnh CLI hoặc ST1 tác động được vào cờ này.
- DF (Direction Flag): cờ hướng ; DF xác định hướng tăng hoặc giảm của các thanh ghi
SI. DI khi thực hiện các lệnh thao tác xâu ký tự.
Nếu DF = 1 thì SI và DI giảm.
Nếu DF = 0 thì SI và DI tăng
Dùng lệnh STD và CLD tác động được vào bít cờ này.
- OF (Overflow Flag) : cờ tràn ; OF được dùng trong các phép tính số học dấu chấm động. OF
= 1 nếu kết quả quá lớn hoặc quá nhỏ, vượt quá khả năng biểu diễn của máy tính (bị tràn).
- Hai cờ NT và IOPL (I/O Privilege Level) chỉ được dùng trong chế độ bảo vệ.
Thanh ghi trạng thái máy (MSW) :
- PE (Protected Mode Enable) cho phép chế độ bảo vệ. Nếu PE = 1 : cho phép CPU làm việc ở
chế độ bảo vệ. Khi khởi động máy tính thì PE = 0.
- MP (Monitor CoProcessor): MP được dùng để đồng bộ hoạt động của CPU và bộ đồng xử lý.
- EM (Emulation) : EM = 0 cho phép thực hiện các mã lệnh dấu phảy động trên bộ đồng xử lý.
EM = 1 khi CPU gặp mã lệnh lệnh dấu phẩy động sẽ sinh ra ngoại tệ kích hoạt chương trình
thực hiện phép tính dấu chấm động (chương trình mơ phỏng bộ đồng xử lý).
- TS (Task Switch) dùng ở chế độ đa nhiệm. Lệnh LMSW tác động được vào thanh ghi này.
CPU 80286 cịn có các thanh ghi khác như sau : (Hoạt động trong chế độ bảo vệ)
- Thanh ghi nhiệm vụ TR (Task Register)
25