KHOA ĐIỆN TỬ
ĐẠI HỌC KTKT CÔNG NGHIỆP
KỸ THUẬT VI XỬ LÝ
Microprocesor Technology
1
Tài liệu tham khảo
Bài giảng Kỹ thuật Vi xử lý - Đại Học KTKT Công Nghiệp
Vi xử lý – TG Văn Thế Minh NXB Giáo dục
The Intel Microprocessor 8086/8088, 80186/80188, 80286, 80386, 80486,
Pentium and Pentium Pro Processor - Architecture, Programming and Interfacing
TG Barry B. Brey NXB Prentice – Hall International
Cẩm nang lập trình hệ thống TG Michael Tischer NXB Giáo dục
Lập trình hợp ngữ Assembly và máy tính IBM PC Biên dịch Quách tuấn Ngọc
NXB Giáo dục
2
1
Nội dung giáo trình
Chương 1: Giới thiệu chung về vi xử lý và máy tính
Chương 2: Biểu diễn thông tin trong hệ thống
Chương 3: Kiến trúc phần mềm của bộ vi xử lý 8088/8086
Chương 4: Lập trình hợp ngữ trên IBM-PC
3
KỸ THUẬT VI XỬ LÝ
CHƯƠNG 1
GIỚI THIỆU CHUNG VỀ VI XỬ LÝ VÀ MÁY TÍNH
4
2
1.1. Lịch sử phát triển của máy tính
Phát minh ra máy tính là một thành tựu vĩ đại trong lịch sử tiến hóa của loài người
Trong những năm đầu của thế kỷ 20 việc chạy đua vũ trang, đối đầu quân sự là một
nguyên nhân thúc đẩy khoa học kỹ thuật phát triển
Lịch sử phát triển của máy tính được bắt đầu từ sự phát triển của các thế hệ máy tính
lớn trong những năm 50 của thế kỷ 20 (VD máy tính 4381 của IBM)
Từ những năm 70 của thế kỷ 20 với sự phát triển của công nghệ bán dẫn đã mở ra
khả năng thu nhỏ vi mạch thu nhỏ máy tính
Sự hình thành và phát triển của máy tính cá nhân đi song song với sự hình thành và
phát triển của các loại bộ vi xử lý
5
Lịch sử phát triển của bộ vi xử lý
Quá trình phát triển của bộ vi xử lý song song với quá trình phát triển
của các hệ thống máy tính
Có nhiều hãng sản xuất vi xử lý lớn (Intel, motorola, ziglog, ...)
Các bộ vi xử lý phải được sản xuất theo một chuẩn thống nhất
6
3
Bộ vi xử lý Intel 4004
Intel bắt đầu phát triển vi xử lý từ năm 1969 theo dự án của nhà sản xuất máy tính
Nhật Busicom.
Kỹ sư Ted Hoff của Intel đã hình thành ý tưởng về một thiết bị logic đa mục đích
hoạt động hiệu quả
Ngày 15/11/1971, Intel giới thiệu bộ vi xử lý 4004 ra thị trường thế giới với giá 200
USD
Intel 4004 có 4bit dữ liệu và 12 bit địa chỉ
4004 có tốc độ 108 KHz với 2.300 bóng bán dẫn.
Thực hiện một lệnh 1 - 60s
Tập lệnh đơn giản
Có vi mạch hỗ trợ xử lý 4040
Phát triển dựa trên công nghệ
PMOS
(P - Chanel Metal oxit
Semiconductor)
7
Ted Hoff và chip 4004. Ảnh: Intel.
Các bộ vi xử lý Intel từ 1972 - 1974
Intel 8008 (1972)
Phiên bản 8008 mạnh gấp đôi bộ vi xử lý 4004
8008 có tốc độ 200 KHz với 3.500 bóng bán dẫn
Intel 8080 (1974)
8080 có tốc độ 2 MHz với 6.000 bóng bán dẫn
8
4
Các bộ vi xử lý Intel từ 1978 - 1982
Intel 8086 - 8088 (1978)
Bộ vi xử lý 8088 đã được trang bị cho chiếc máy tính cá nhân thương mại đầu
tiên IBM PC. Thành công này đã đưa Intel vào bảng xếp hạng 500 doanh nghiệp
hàng đầu thế giới của Fortune
8088 có tốc độ 5 MHz, 8 MHz và 10 MHz với 29.000 bóng bán dẫn
8086 mạnh hơn 8088 (giống nhau về cấu trúc)
80186/80188
8086 có tốc độ 5 MHz, 8 MHz và 10 MHz với 29.000 bóng bán dẫn
9
Các bộ vi xử lý 8 bit ban đầu
STT
Nhà sản xuất
Tên bộ vi xử lý
1
Fairchild
F-8
2
Intel
8080
3
MOS Technology
6502
4
Motorola
MC6800
5
National Semiconductor
IMP-8
6
Rockwell International
PPS-8
7
Ziglog
Z-8
10
5
Các bộ vi xử lý Intel từ 1978 – 1982 (tiếp)
Intel 80286 (1982)
Chip đầu tiên của Intel có thể chạy tất cả các phần mềm được viết cho thiết bị xử lý
trước đó
286 có tốc độ 6 MHz, 8 MHz, 10 MHz và 12,5MHz với 134.000 bóng bán dẫn
Máy tính IBM PC 1981 sử dụng Intel 8088.
11
Các bộ vi xử lý Intel từ 1985 – 1989
Intel 386 (1985)
Chip Intel 386 có 275.000 bóng bán dẫn, nhiều gấp 100 lần so với bộ xử lý 4004 ban
đầu
Chip 32 bit và có khả năng xử lý đa nhiệm
386 có tốc độ 16 MHz, 20 MHz, 25 MHz và 33 MHz
Intel 486 DX (1989)
Chip đầu tiên tích hợp sẵn bộ đồng xử lý toán học, hỗ trợ giảm tải các hàm phức tạp
cho vi xử lý trung tâm
486 DX có tốc độ 25 MHz, 33 MHz và 50 MHz với 1,2 triệu bóng bán dẫn
12
6
Các bộ vi xử lý Intel khác
Pentium (1993)
Pentium cho phép máy tính dễ dàng tích hợp những dữ liệu "thế giới thực" như
giọng nói, âm thanh, ký tự viết tay và ảnh đồ họa
Pentium có tốc độ 60 MHz và 66 MHz với 3,1 triệu bóng bán dẫn.
Pentium II (1997)
Pentium II tích hợp Intel MMX - công nghệ được thiết kế đặc biệt để xử lý dữ liệu
video, audio và đồ họa một cách hiệu quả
Pentium II có tốc độ 200 MHz, 233 MHz, 266 MHz và 300 MHz với 7,5 triệu bóng
bán dẫn.
13
Các bộ vi xử lý Intel khác (tiếp)
Pentium III (1999)
Pentium III có 70 lệnh xử lý mới giúp tăng cường hiệu suất hoạt động của các ứng
dụng ảnh, 3-D, audio, video và nhận dạng giọng nói
Pentium III có tốc độ từ 650 MHz đến 1,2 GHz với 9,5 triệu bóng bán dẫn
Pentium IV (2000)
Pentium IV có tốc độ 1,3 GHz, 1,4 GHz, 1,5 GHz, 1,7 GHz và 1,8 GHz với 42 triệu
bóng bán dẫn.
Tháng 8/2001, Pentium IV đạt mốc 2 GHz. Đến tháng 11/2002, chip này được trang
bị công nghệ siêu phân luồng và có tốc độ 3,06 GHz, sau tăng lên 3,2 GHz vào năm
2003 và 3,4 GHz trong tháng 6/2004
14
7
Chip lõi kép
Tháng 4/2005, Intel giới thiệu nền tảng sử dụng bộ vi xử lý lõi kép đầu tiên gồm
chip Pentium Extreme Edition 840, xung nhịp 3,2 GHz, và chipset 955X Express,
kết hợp với công nghệ siêu phân luồng
Tháng 5/2005, chip Intel Pentium D lõi kép ra đời cùng chipset 945 Express
Tháng 5/2006, Intel công bố nhãn hiệu Core 2 Duo
Tháng 7/2006: Intel giới thiệu 10 thiết bị xử lý Intel Core 2 Duo và Core Extreme
Các bộ vi xử lý Core 2 Duo có 291 triệu bóng bán dẫn
15
Các bộ vi xử lý Intel
Tên bộ vi xử lý
Bus dữ liệu (bit)
Kích thước bộ nhớ
8048
8
2K Internal
8051
8
8K Internal
8085A
8
64K
8086
16
1M
8088
8
1M
8096
16
8K Internal
80186
16
1M
80188
8
1M
80251
8
16K Internal
80286
16
16M
16
8
Các bộ vi xử lý Intel (tiếp)
Tên bộ vi xử lý
Bus dữ liệu (bit)
Kích thước bộ nhớ
80386EX
16
64M
80386DX
32
4G
80386SL
16
32M
80386SLC
16
32M + 1K Cache
80386SX
16
16M
80486DX/DX2
32
4G + 8K Cache
80486SX
32
4G + 8K Cache
80486DX4
32
4G + 16K Cache
Pentium
64
4G + 16K Cache
Pentium Overdriver(P24T)
32
4G + 16K Cache
PentiumPro Processor
64
4G + 16K L1 Cache
+ 256K L2 Cache
17
Biểu đồ tốc độ của các bộ vi xử lý Intel
1200
1000
800
600
400
200
0
0
*
*
0
3
0
75
66
50
20
33
20
25
33
33
25
33
50
25
25
16
50
40
66
90
60
75
10
63
83
4
2
2
10
13
12
2
2
X
X
X
X
X
X
X
X
X
X
X
X
m
m
6S 86S 86S 86D 86S 86D 86S 86S 86D 86S 6SX 86D 6SX 6DX 86D 6DX 6DX DX4 ium tium tium ium tium tium ium
8
t
tiu ntiu
n
n
n
n
3
3
3
3
3
3
4
4
4
4
4
4
6
nt
nt
e
e
e
e
n
n
48
48
48
48
48
8
e
e
e
e
e
4
P
P
P
P
P
P
P
P
P
18
9
Luật moore
Gordon Moore - Người đồng sáng lậpIntel
Số transistor trên chip sẽ tăng gấp đôi sau khoảng 18 tháng
Giá thành của chip hầu như không thay đổi
Mật độ cao hơn, do vậy đường dẫn ngắn hơn
Kích thước nhỏ hơn dẫn tới độ phức tạp tăng
Điện năng tiêu thụ ít hơn
Hệ thống có ít các chip liên kết với nhau, do đó tăng độ tin cậy
19
Tốc độ của bộ vi xử lý
- Bộ vi xử lý (Microprocessor) là CPU được chế tạo trên 1 chip
- Tốc độ của bộ vi xử lý:
+ Số lệnh thực hiện trong 1 giây
(MIPS- Milions of Instruction Per Second)
+ Khó đánh giá được chính xác.
- Tốc độ của bộ xử lý được đánh giá gián tiếp thông qua tần số xung nhịp
(Clock) được mạch ngoài cung cấp cho bộ vi xử lý.
20
10
Tc ca b vi x lý (tip)
Dạng xung nhịp
T0
T0 Chu kỳ xung nhịp
Tần số xung nhịp f0 = 1/T0
Mỗi thao tác của bộ xử lý cần k.T0 (kN)
T0 càng nhỏ (f0 càng lớn) Bộ xử lý chạy càng nhanh
Ví dụ : Một máy tính dùng bộ xử lý Pentium IV2 GHz
Ta có f0 = 2GHz = 2.109 Hz
T0= 1/f0 = 1/(2.109 ) = 0,5ns
21
Cỏc b vi x lý Motorola
Tờn b vi x lý
Bus d liu (bit)
Kớch thc b nh
6800
8
64K
6805
8
2K
6809
8
64K
68000
16
16M
68008Q
8
1M
68008D
8
4M
68010
16
16M
68020
32
4G
68030
32
4G + 256 cache
68040
32
4G + 8K Cache
68050
32
Khụng c nh
68060
64
4G + 16K Cache
Power PC
64
4G + 32K Cache 22
11
Vi xử lý của tương lai
Các bộ vi xử lý quang học
Các bộ vi xử lý sinh học
23
1.2. Tổng quan hệ vi xử lý
Data Bus
Control Bus
Bộ xử lý trung
tâm
(CPU)
Bộ nhớ
(Memory)
ROM-RAM
Phối ghép vào
ra
I/O
Input Device
Output Device
Inside Register
Outside Register
Address Bus
24
12
KỸ THUẬT VI XỬ LÝ
CHƯƠNG 2
BIỂU DIỄN THÔNG TIN TRONG HỆ THỐNG
Giảng viên: ThS. Giáp Văn Dương
Khoa:
Điện Tử
Đại Học Kinh Tế Kỹ Thuật Công Nghiệp
25
2.1. Hệ đếm
Hệ thập phân (Decimal System) Con người sử dụng
Hệ nhị phân (Binary System) Máy tính sử dụng
Hệ mười sáu (Hexa) Dùng để viết gọn lại một dãy số nhị phân
26
13
2.1.1. Hệ thập phân
Cơ số 10
10 ký tự: 0,1,2,3,4,5,6,7,8,9.
Dùng n chữ số thập phân có thể biểu diễn được 10n chữ số khác nhau
0000...0 = 0
...
9999...9=10n - 1
27
Ví dụ hệ thập phân
472.38 = 4.102 + 7.101 + 2.100 + 3.10-1 + 8.10-2
Các chữ số của phần nguyên
472 : 10 = 47 dư
2
47 : 10 = 4 dư
7
4
4 : 10 = 0 dư
Các chữ số của phần lẻ
0.38 x 10 = 3.8 Phần nguyên = 3
0.8 x 10 = 8.0 Phần nguyên = 8
28
14
2.1.2. Hệ nhị phân
Cơ số 2
2 chữ số nhị phân: 0,1
Chữ số nhị phân gọi là bit (binary digit)
Bit là đơn vị thông tin nhỏ nhất
Dùng n bit có thể biểu diễn được 2n giá trị khác nhau:
00…000 = 0
11…111
= 2n - 1
29
Dạng tổng quát của số nhị phân
Có một số nhị phân A như sau:
A = an an –1 … a1 a0 , a-1 … a-m
Giá trị của A được tính như sau:
A = an 2n + an-1 2n-1 + … + a1 21 + a0 20 + a-1 2-1 + … + a-m 2-m
n
A
a2
i
i
i m
30
15
Ví dụ số nhị phân
1101001.1011(2)
= 26 + 25 + 23 + 20 + 2-1 + 2-3 + 2-4
= 64 + 32 + 8 + 1 + 0.5 + 0.125 + 0.0625
= 105.6875(10)
31
Chuyển đổi số nguyên thập phân sang nhị phân
Phương pháp 1: Chia dần cho 2 rồi lấy phần dư
Phương pháp 2: Phân tích thành tổng các số 2i nhanh hơn đối với
những số nhỏ và sát cận 2n
32
16
Phương pháp chia dần cho 2
Ví dụ: Chuyển đổi 105(10)
105 : 2 =
52
dư
1
52 : 2 =
26
dư
0
26 : 2 =
13
dư
0
13 : 2 =
6
dư
1
6:2=
3
dư
0
3:2=
1
dư
1
1:2=
0
dư
1
Kết quả: 105(10) = 11010012
33
Phương pháp phân tích thành tổng các 2i
Ví dụ 1: Chuyển đổi 105(10)
105 = 64 + 32 + 8 + 1 = 26 + 25 + 23 + 20
27
128
0
Kết quả :
26
64
1
25
32
1
24
16
0
23
8
1
22
4
0
21
2
0
20
1
1
105(10) = 01101001(2)
Ví dụ : 17000(10) = 16384 + 512 + 64 + 32 + 8
= 214 + 29 + 26 + 25 + 23
Kết quả :17000(10) = 0100 0010 0110 1000(2)
34
17
Chuyển đổi số lẻ thập phân sang nhị phân
Ví dụ 1: Chuyển đổi 0.6875(10)
0.6875 x 2
= 1.375
phần nguyên = 1
0.375 x 2
= 0.75
phần nguyên = 0
0.75
x 2
= 1.5
phần nguyên = 1
0.5
x 2
= 1.0
phần nguyên = 1
Kết quả: 0.6875(10) = 0.1011(2)
35
Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)
Ví dụ 2: Chuyển đổi 0.81(10)
0.81 x 2 =
1.62
phần nguyên = 1
0.62 x 2 =
1.24
phần nguyên = 1
0.24 x 2 =
0.48
phần nguyên = 0
0.48 x 2 =
0.96
phần nguyên = 0
0.96 x 2 =
1.92
phần nguyên = 1
0.92 x 2 =
1.84
phần nguyên = 1
0.84 x 2 =
1.68
phần nguyên = 1
0.81(10) 0.1100111(2)
36
18
Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)
Ví dụ 3: Chuyển đổi 0.2(10)
0.2 x 2 =
0.4
phần nguyên =
0
0.4 x 2 =
0.8
phần nguyên =
0
0.8 x 2 =
1.6
phần nguyên =
1
0.6 x 2 =
1.2
phần nguyên =
1
0.2 x 2 =
0.4
phần nguyên =
0
0.4 x 2 =
0.8
phần nguyên =
0
0.8 x 2 =
1.6
phần nguyên =
1
0.6 x 2 =
1.2
phần nguyên =
1
0.2(10) 0.00110011 (2)
37
2.1.3. Hệ mười sáu (Hexa)
Cơ số 16
16 ký tự: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Dùng để viết gọn lại số nhị phân: Cứ một nhóm 4-bit sẽ được thay bằng
một chữ số Hexa
38
19
Quan hệ giữa số nhị phân và số Hexa
4-bit
Chữ số Hexa
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
A
1011
B
1100
C
1101
D
1110
E
1111
F
Chuyển đổi số nhị phân số Hexa:
Ví dụ 1:
1011 00112 =B316
0000 00002 = 0016
Ví dụ 2:
0010 1101 1001 10102 = 2D9A16
1111 1111 1111 11112 = FFFF16
39
2.2. Biểu diễn số nguyên
2.2.1. Nguyên tắc chung về mã hóa dữ liệu
+ Mọi dữ liệu đưa vào máy tính đều phải được mã hóa thành số nhị phân
+ Các loại dữ liệu:
Dữ liệu nhân tạo: Do con người quy ước
Dữ liệu tự nhiên: Tồn tại khách quan với con người
40
20
Mã hoá dữ liệu nhân tạo
Dữ liệu số nguyên: mã hóa theo tiêu chuẩn quy ước
Dữ liệu số thực: Mã hóa bằng số dấu phẩy động
Dữ liệu ký tự: Mã hóa theo bộ mã ký tự
41
Mã hoá và tái tạo tín hiệu vật lý
Tín hiệu vật lý
Bộ cảm biến tín
hiệu (sensor)
Tín hiệu điện liên
tục
Bộ chuyển đổi
Tín hiệu số
tương tự - số (ADC)
Máy tính
Tín hiệu vật lý
Bộ tái tạo tín hiệu
Tín hiệu điện liên
Bộ chuyển đổi số - Tín hiệu số
tục
tương tự (DAC)
Các dữ liệu vật lý thông dụng:
Âm thanh
Hình ảnh
42
21
Độ dài dữ liệu
Độ dài từ dữ liệu là số bít được sử dụng để mã hóa loại dữ liệu tương ứng
Thường là bội của 8-bit:
Ví dụ: 8, 16, 32, 64 bit
43
2.2.2. Thứ tự lưu trữ các byte của dữ liệu
Bộ nhớ chính thường được tổ chức theo byte
Độ dài từ dữ liệu có thể chiếm từ 1 đến nhiều byte
Cần phải biết thứ tự lưu trữ các byte trong bộ nhớ chính với các dữ liệu
nhiều byte.
Có hai cách lưu trữ:
Little-endian (đầu nhỏ): Byte có ý nghĩa thấp hơn được lưu trữ trong bộ nhớ ở
vị trí có địa chỉ nhỏ hơn.
Big-endian (đầu to): Byte có ý nghĩa thấp hơn được lưu trữ trong bộ nhớ ở vị
trí có địa chỉ lớn hơn.
44
22
Ví dụ lưu trữ dữ liệu 32-bit
0001 1010 0010 1011 0011 1100 0100 1101
1A
4D
3C
2B
1A
2B
3C
300
301
302
303
Little-Endian
4D
1A
2B
3C
4D
410
411
412
413
Big-Endian
45
Lưu trữ của các bộ xử lý điển hình
Intel 80x86 và các loại Pentium:
Little-Endian
Motorola 680x0 và các loại vi xử lý RISC:
Big-Endian
Power PC và Itanium: Cả hai
46
23
2.2.3. Biểu diễn số nguyên
Có hai loại số nguyên:
Số nguyên không dấu (Unsigned Integer)
Số nguyên có dấu (Signed Integer)
47
2.2.3.1. Biểu diễn số nguyên không dấu
Nguyên tắc tổng quát: Dùng n bit biểu diễn số nguyên không dấu A:
A = an-1 an-2 … a2 a1 a0 (a = 1,0)
Giá trị của A được tính như sau:
A = an-1 2n-1 + an-2 2n-2 + … + a2 22 + a1 21 + a0 20
n 1
A
a
i
2i
i 0
48
24
Dải biểu diễn số nguyên không dấu
Dải biểu diễn của A: Từ 0 đến 2n - 1
00 … 000
=
0
00 … 001
=
1
00 … 010
=
2
00 … 011
=
3
=
2n - 1
…
11 … 111
49
Các ví dụ
Ví dụ 1: Biểu diễn các số nguyên không dấu sau đây bằng thanh ghi 8-bit:
A = 41
;
B = 150
; C =255
Giải:
A = 4110 = 32 + 8 + 1
= 25 + 23 + 20
4110 = 0010 10012
B = 150 = 128 + 16 + 4 + 2 = 27 + 24 + 22 + 21
15010 = 1001 01102
50
25