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 q
Trang 1KỸ THUẬT VI XỬ LÝ
Microprocesor Technology
KHOA ĐIỆN TỬ ĐẠI HỌC KTKT CÔNG NGHIỆP
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
Trang 2Nộ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
Trang 31.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
Trang 4Bộ 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
Trang 5Cá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
Trang 6 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
Trang 7Cá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
Trang 8Chip 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
Trang 9Pentium Overdriver(P24T) 32 4G + 16K Cache
PentiumPro Processor 64 4G + 16K L1 Cache
Pe nt
m 6 6
Pe nt
m 8
P en
m 7 5
Pe nt
m 9 0
P en
m 1 00
P en
m 1 20
Pe nt
m 1 33
Trang 10Luậ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
+ 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ý
Trang 12Vi xử lý của tương lai
Bộ nhớ (Memory)
ROM-RAM
Phối ghép vào ra
I/O
Output Device Input Device
Inside Register Outside Register
Data Bus
Address Bus Control Bus
Trang 13CHƯƠNG 2
BIỂU DIỄN THÔNG TIN TRONG HỆ THỐNG
Giảng viên: ThS Giáp Văn Dương
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
Trang 15Chữ 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:
Dạng tổng quát của số nhị phân
2
n
i i
Trang 16Phươ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
Trang 17Phương pháp chia dần cho 2
Trang 18Chuyển đổi số lẻ thập phân sang nhị phân
Trang 19Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)
Trang 20Quan hệ giữa số nhị phân và số Hexa
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
Trang 21Mã hoá dữ liệu nhân tạo
41
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ự
Mã hoá và tái tạo tín hiệu vật lý
-Tín hiệu điện liên tục
Bộ tái tạo tín hiệu
Các dữ liệu vật lý thông dụng:
Âm thanhHình ảnh
Trang 22Độ dài dữ liệu
43
Độ 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
2.2.2 Thứ tự lưu trữ các byte của dữ liệu
44
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
Trang 23Ví dụ lưu trữ dữ liệu 32-bit
0001 1010 0010 1011 0011 1100 0100 1101
1A 2B 3C 4D
4D 3C 2B
1A 300
301 303 302
411 410
412 413
45
Lưu trữ của các bộ xử lý điển hình
Intel 80x86 và các loại Pentium:
Trang 242.2.3 Biểu diễn số nguyên
47
Có hai loại số nguyên:
Số nguyên không dấu (Unsigned Integer)
Số nguyên có dấu (Signed Integer)
2.2.3.1 Biểu diễn số nguyên không dấu
a A
48
Nguyên tắc tổng quát: Dùng n bit biểu diễn số nguyên không dấu A:
Giá trị của A được tính như sau:
Trang 25Dả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
Trang 26Ví dụ 2: Cho các số nguyên không dấu M, N được biểu diễn bằng thanh ghi
8-bit như sau:
52
Biểu diễn được các giá trị từ 0 đến 255
Trang 2753
Trục số học máy tính:
Với n = 16 bit, 32 bit, 64 bit
n = 16 bit: Dải biểu diễn từ 0 đến 65535 (216- 1)
n = 32 bit: Dải biểu diễn từ 0 đến 232- 1
n = 64 bit: Dải biểu diễn từ 0 đến 264- 1
Trang 282.2.3.2 Biểu diễn số nguyên có dấu
55
Số bù một và số bù hai:
Giả sử A là một số nhị phân, ta có:
Số bù một của A nhận được bằng cách đảo giá trị các bit của A
(Số bù hai của A)= (Số bù một của A) + 1
Do A + (Số bù hai của A) = 0 nên dùng số bù hai để biểu diễn số âm
Biểu diễn số nguyên có dấu bằng mã bù hai
Trang 29Biểu diễn số nguyên dương
a A
57
Dạng tổng quát của số dương A:
0a n-2 … a 2 a 1 a 0
Giá trị của số dương A:
Dải biểu diễn cho số dương: 0 đến 2n-1 - 1
Biểu diễn số nguyên âm
n
i
i i
n
a A
Dạng tổng quát của số âm A:
1a n-2 … a 2 a 1 a 0
Giá trị của số âm A:
Dải biểu diễn cho số âm: -1 đến -2n-1
N bit
(-2n-1÷2n-1- 1)
Trang 30Dạng tổng quát của số nguyên có dấu
2 1
Giá trị của số âm A:
Dải biểu diễn: -2n-1÷2n-1- 1
2.2.4 Các phép toán số học với số nguyên
Trang 31Nguyên tắc thực hiện phép toán với số nguyên
61
Với phép cộng số nguyên không dấu
Nếu không có nhớ ra khỏi bit msb thì kết quả nhận được luôn luôn đúng:
Cout=0
Nếu có nhớ ra khỏi bit cao nhất thì kết quả nhận được là sai: Cout=1 (Hiện
tượng tràn số)
Hiện tượng tràn số xảy ra khi tổng lớn hơn 2n -1
Nếu xuất hiện hiện tượng tràn số thì ta tăng số lượng các bit lên (tăng n) Ví
dụ từ 8 lên 16 bit
Nguyên tắc thực hiện phép toán với số nguyên (tiếp)
Với phép cộng số nguyên có dấu
Biểu diễn số nguyên có dấu dưới dạng mã bù 2 của số không dấu trong
thanh ghi n bit
Thực hiện phép cộng hai số có dấu
Chú ý hiện tượng tràn số
Nếu xuất hiện hiện tượng tràn số thì ta tăng số lượng các bit lên (tăng n) Ví
dụ từ 8 lên 16 bit
Trang 322.3 Biểu diễn số thực
63
2.3.1 Biểu diễn số dấu phẩy tĩnh
Sử dụng thanh ghi n bit
Biểu diễn bằng các bit nhị phân
Số dấu phảy động chính tắc là số dấu phảy động mà trong phần định trị đằng
trước dấu phảy là 0, đằng sau dấu phảy là một số có ý nghĩa khác 0
Trang 33Biểu diễn theo chuẩn IBM 360 (32 bit)
Trang 34Biểu diễn theo chuẩn IEEE (32 bit)
67
Cơ số ngầm định là 2
Bit 0: S là bit dấu (S=1 Số âm, S=0 Số dương)
Bit 1 đến 8 biểu diễn: Mũ + 128 (không biểu diễn dấu)
Bit 9 đến 31 biểu diễn định trị chính tắc
Do cơ số ngầm định là 2, như vậy ở dạng chính tắc đằng sau dấu phẩy luôn là
1 Do vậy số 1 này ta không biểu diễn mà chỉ biểu diễn các số từ sau số 1 này
Trang 352.4 Biểu diễn ký tự
69
Biểu diễn kỹ tự theo mã:
Bộ mã ASCII (American Standard Code For Information Interchange)
Trang 36 25 Chữ cái thường ‘a’ đến ‘z’ có mã 61Hđến 7AH(97 đến 122)
Các ký tự hiển thị chuẩn (tiếp)
Trang 3773Bảng mã ASCII
Các ký tự điều khiển 00H đến 1FH
Mã các ký tự điều khiển định dạng (màn hình, máy in )
BS Back Space (Lùi lại một vị trí): Ký tự điều khiển con trỏ lùi lại một vị
trí
HT Horizontal Tab (Tab ngang) : Ký tự điều khiển con trỏ dịch ngang một
khoảng đã định trước
LF Line Feed (Xuống một dòng): Ký tự điều con trỏ xuống một dòng mới
VT Vertical Tab (Tab đứng) : Ký tự điều con trỏ chuyển qua một số dòng
Trang 38Mã các ký tự điều khiển truyền tin
SOH Start Of Heading (Bắt đầu tiêu đề): Ký tự đánh dấu bắt đầu phần thông báo tiêu đề
STX Start Of Text (Bắt đầu văn bản): Ký tự đánh dấu bắt đầu khối dữ liệu văn bản và cũng chính là
phần thông báo kết thúc tiêu đề
ETX End Of Text (Kết thúc văn bản): Ký tự đánh dấu kết thúc khối dữ liệu văn bản được bắt đầu bằng
STX
EOT End Of Transmission (bắt đầu truyền): Thông báo cho bên thu biết kết thúc truyền tin
ENQ Enquiry (Hỏi): Tín hiệu yêu cầu đáp ứng từ một máy ở xa
ACK Acknowledge (Xác nhận): Ký tự phát ra từ phía thu báo cho phía phát biết dữ liệu đã nhận thành
công
NAK Negative Acknowledge (Báo phủ nhận): Tín hiệu phát ra từ phía thu báo cho phía phát tín hiệu
không nhận được thành công
SYN Synchronous (Đồng bộ): Đồng bộ hóa quá trình truyền và nhận dữ liệu
ETB End Of Transmission Block (Kết thúc khối truyền): Chỉ ra kết thúc khối dữ liệu được truyền
75
Các ký tự điều khiển (tiếp)
Các ký tự điều khiển (tiếp)
Mã các ký tự điều khiển phân cách thông tin
FS File Separator (Ký hiệu phân cách tập tin): Đánh dấu ranh giới giữa
Trang 39Mã các ký tự điều khiển khác
NUL NULL (Ký tự rỗng): Được sử dụng để truyền khaongr trống khi không có dữ liệu
BEL BELL (Chuông): Phát ra một tiếng chuông
SO Shift Out (Dịch ra): Chỉ ra rằng các mã tiếp theo sẽ nằm ra ngoài ký tự chuẩn cho đến khi gặp
SI
SI Shift In (Dịch vào): Chỉ ra rằng các mã tiếp theo sẽ nằm trong ký tự chuẩn
DLE Data Link Escape (Thoát liên kết dữ liệu): Thông báo sẽ thay đổi ý nghĩa của một hay nhiều
kỹ tự liên tiếp sau đó
DC1D
C4 Device Control (Điều khiển thiết bị): Tín hiệu điều khiển bị phụ trợ
CAN Cancel (Hủy bỏ): Thông báo một số kỹ tự nằm trước nó cần phải bỏ qua
EM End Of Medium (Kết thúc phương tiện) : Chỉ ra ký tự ngay trước nó là ký tự cuối cùng có tác
dụng với phương tiện vật lý
SUB Substitude (Thay thế): Được xác định là sẽ thay thế cho ký tự nào đó bị lỗi
ESC Escape (Thoát): Ký tự dùng để cung cấp mã mở rộng bằng cách kết hợp với các ký tự sau đó
DLE Delete (Xóa): Xóa ký tự không mong muốn 77
Bộ mã ký tự mở rộng của IBM IBM-PC
Bộ mã ký tự mở rộng của Apple Macintosh
Có thể thay đổi các ký tự mở rộng để mã hóa cho các ký tự riêng của
tiếng Việt Ví dụ mã TCVN3, BK
Trang 40 Binary Coded Decimal
Dùng 4 bit để mã hóa từng chữ số thập phân
Trang 42Các kiểu lưu trữ số BCD
83
BCD không gói (Unpacked BCD): Mỗi số BCD 4 bit được lưu trữ trong 4 bit
thấp của mỗi byte
Ví dụ: Số 26 được lưu trữ như sau
BCD gói (Packed BCD): Hai số BCD được lưu trữ trong 1 byte
Ví dụ: Số 26 được lưu trữ như sau
Packed BCD & Unpacked BCD
Decimal Packed Unpacked
Trang 43 Bộ vi xử lý 8086/8088 là một bộ vi xử lý phổ biến một thời của hãng
Intel và được ứng dụng rộng rãi
Cho đến ngày nay, các bộ vi xử lý hiện đại vẫn có tính kế thừa về phần
cứng và tập lệnh của bộ vi xử lý này
Kiến trúc khá đơn giản và nguyên gốc
Có tập lệnh dễ tiếp nhận đối với các sinh viên và người đọc bắt đầu
nghiên cứu về bộ vi xử lý
Trang 44873.1 Sơ đồ cấu trúc của 8086/8088
3.1 Sơ đồ cấu trúc của 8086/8088 (tiếp)
CU (Control Unit): Đơn vị điều khiển
EU (Execution Unit): Đơn vị thừa hành
BIU (Bus Interface Unit): Khối giao diện bus
ALU (Arithmetic and Logic Unit): Đơn vị số học và lôgic
FR (Flag Register): Thanh ghi cờ
88
Trang 45Hoạt động của vi xử lý
Ban đầu vi xử lý sẽ hoạt động ở chế độ chờ đợi các lệnh đầu vào
Khi có lệnh điều khiển ở đầu vào bộ giải mã lệnh sẽ thực hiện giải mã các lệnh
đầu vào để đưa vào bộ đệm lệnh
Vi xử lý sẽ căn cứ vào mã lệnh đã được giải mã di chuyển con trỏ lệnh đến địa
chỉ của lệnh và thực hiện lệnh
CU điều khiển các thành phần khác bên trong bộ vi xử lý thực hiện lệnh bao
gồm: Nhận lệnh, giải mã lệnh, nhận địa chỉ toán hạng, nhận dữ liệu, thi hành
lệnh và lưu trữ kết quả
Một lệnh có thể thực hiện trong một hay nhiều chu kỳ máy
89
Chu trình thi hành lệnh
Tính địa chỉ toán hạng (Calculate Operand Address - COA)
Thực hiện lệnh (Execute Instruction - EI)
Chu trình lệnh được phân chia theo các công đoạn và được thực hiện gối
lên nhau
Ví dụ có 6 công đoạn thực hiện lệnh sau:
Trang 46Biểu đồ thời gian quá trình thi hành lệnh
Các bộ vi xử lý cổ điển thi hành lệnh theo các chu trình sau
Biểu đồ thời gian của đường ống lệnh (Pipeline)
Đặc điểm: Trong một chu kỳ máy thực hiện nhiều thao tác khác nhau của quá
trình thi hành các lệnh khác nhau Do vậy tốc độ xử lý tăng lên nhiều lần
Trang 47Các xung đột của đường ống lệnh
Xung đột cấu trúc do nhiều công đoạn dùng chung một tài nguyên
Xung đột dữ liệu : Lệnh sau sử dụng kết quả của lệnh trước
Xung đột điều khiển : Do rẽ nhánh gây ra
Trang 483.2.1 Các thanh ghi của 8088/8086
3.2.1.1 Thanh ghi đa năng
3.2.1.1 Thanh ghi đa năng (tiếp)
AX(Accumulator): Thanh ghi tích luỹ có nhiệm vụ lưu trữ các dữ liệu,
thông tin chung mà sau khi ALU thực hiện phép toán
BX(Basic): Lưu trữ các địa chỉ cơ sở của một bảng Bảng này được sử
dụng trong câu lệnh XLAL
CX(Counter): Cho phép ALU theo dõi các thông tin về vòng lặp, điều
khiển được các vòng lặp
DX(Data): Thanh ghi dữ liệu chung hỗ trợ cho vi xử lý tăng tốc độ xử lý
96
Trang 493.2.2.2 Các thanh ghi con trỏ
BP
IPBIU
97
3.2.2.2 Các thanh ghi con trỏ (tiếp)
Kết hợp với thanh ghi đoạn để xác định địa chỉ của 1 byte hay một bit nào đó,
trong địa chỉ bộ nhớ 64KB
IP(Instruction Pointer): Con trỏ lệnh xác định vị trí độ lệch của đoạn mã lệnh
trong bộ nhớ Kết hợp với thanh ghi CS để tạo ra địa chỉ bộ nhớ CS:IP
SP(Stack Pointer): Thanh ghi con trỏ ngăn xếp dùng để xác định nơi lưu trữ địa
chỉ, dữ liệu cần cho công việc lưu trữ để xử lý sau về sau SP thường xuyên trỏ
vào đỉnh của ngăn xếp Địa chỉ đoạn:Độ lệch cụ thể của dữ liệu tại đỉnh ngăn
xếp là: SS:SP
BP(Basic Pointer): Luôn trỏ vào một dữ liệu nào đó nằm trong đoạn ngăn xếp,
kết hợp với thanh ghi đoạn SS để xác định ra địa chỉ tuyệt đối của lệnh