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ử
Trường Đại Học Kinh Tế Kỹ Thuật Công Nghiệp
GV: ThS Giáp Văn Dương
Trang 2Tài liệu tham khảo
1 Sách “Kỹ thuật Vi xử lý” , tác giả Văn Thế Minh, NXB Giáo dục, năm 2000
2 Sách “Cấu trúc và lập trình họ vi điều khiển 8051”, tác giả Nguyễn Tăng Cường & Phan Quốc Thắng, NXB khoa học kĩ thuật, năm 2004
3 Sách “Thiết kế hệ thống với họ 8051”, tác giả Tống Văn
On, NXB Phương Đông, năm 2007
4 Sách “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, năm 1998
5 Sách “The Intel Microprocessor 8086/8088, 80186/80188,
80286, 80386, 80486, Pentium and Pentium Pro Processor Architecture, Programming and Interfacing”, tác giả Barry B Brey, NXB Prentice – Hall International, năm 2009
Trang 3Nộ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
Chương 5: Tổng quan về bộ vi điều khiển 8051
Trang 4Kỹ Thuật Vi Xử Lý
Chương 1
GIỚI THIỆU CHUNG VỀ VI XỬ LÝ VÀ MÁY TÍNH
Giảng viên: ThS Giáp Văn Dương
Tổ: Điện Tử
Khoa: Điện Tử
Đại Học Kinh Tế Kỹ Thuật Công Nghiệp
Trang 51.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ý
Trang 7Bộ 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ỉ
Trang 9Cá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
Trang 10Các bộ vi xử lý 8 bit ban đầu
Trang 12Cá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
Trang 13Cá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
Trang 14Cá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 15Chip 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 18Biểu đồ tốc độ của các bộ vi xử lý Intel
Trang 19Luậ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
Trang 20Tố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ý.
Trang 21 VÝ dô : Mét m¸y tÝnh dïng bé xö lý Pentium IV2 GHz Ta cã f0 = 2GHz = 2.10
9 Hz
T = 1/f = 1/(2.109 ) = 0,5ns
Trang 23Vi 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
Trang 241.2 Tổng quan hệ vi xử lý
Bộ xử lý trung tâm (CPU)
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 262.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
Trang 29Chữ 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:
Trang 30Dạng tổng quát của số nhị phân
2
n
i i
Trang 32Chuyể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
Trang 33Phương pháp chia dần cho 2
Trang 35Chuyển đổi số lẻ thập phân sang nhị phân
Trang 36Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)
Trang 37Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)
Trang 382.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
Trang 39Quan hệ giữa số nhị phân và số Hexa
Trang 402.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
Trang 41Mã 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ự
Trang 42Mã 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ương tự - số (ADC)
Tín hiệu số
Máy tính
Bộ chuyển đổi
số - tương tự (DAC)
Tín hiệu điện liên tục
Trang 442.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.
Trang 45Ví 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
Trang 46Lưu trữ của các bộ xử lý điển hình
Intel 80x86 và các loại Pentium:
Trang 472.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)
Trang 482.2.3.1 Biểu diễn số nguyên không dấu
2
n i
i ia A
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 49Dả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 50Các ví dụ
A = 41 ; B = 150 ; C =255 Giải:
Trang 51Các ví dụ (tiếp)
M = 0001 0010
N = 1011 1001 Xác định giá trị của chúng?
Trang 52Biểu diễn được các giá trị từ 0 đến 255
Trang 54Vớ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 552.2.3.2 Biểu diễn số nguyên có dấu
Trang 56Biểu diễn số nguyên có dấu bằng mã bù hai
Nguyên tắc tổng quát: Dùng n bit biểu diễn số nguyên có dấu A:
Trang 57Biểu diễn số nguyên dương
2 0
2
n i
i i
a A
Dạng tổng quát của số dương A:
0an-2 … a2 a1 a0
Giá trị của số dương A:
Dải biểu diễn cho số dương: 0 đến 2n-1 - 1
Trang 58Biểu diễn số nguyên âm
i
i i
A
Dạng tổng quát của số âm A:
1an-2 … a2 a1 a0
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 59Dạ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
Trang 602.2.4 Các phép toán số học với số nguyên
Trang 61Nguyên tắc thực hiện phép toán với số nguyên
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
Trang 62Nguyê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 632.3 Biểu diễn số thực
2.3.1 Biểu diễn số dấu phẩy tĩnh
Sử dụng thanh ghi n bit
R= S b-1 … b-(n-2) b-(n-1)
S= 0 (+)
S = 1 (-)
R = (b-1.2-1+ + bn-1.2-(n-1))
Trang 642.3.2 Biểu diễn số dấu phẩy động
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 65Biểu diễn theo chuẩn IBM 360 (32 bit)
Trang 67Biểu diễn theo chuẩn IEEE (32 bit)
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 trở đi.
Trang 692.4 Biểu diễn ký tự
Biểu diễn kỹ tự theo mã:
Bộ mã ASCII (American Standard Code For Information Interchange)
Bộ mã Unicode
Trang 72Các ký tự hiển thị chuẩn (tiếp)
Trang 73Column bits(B7B6B5)
Trang 74Cá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 đã định trước
FF Form Feed (Sang đầu trang) : Ký tự điều con trỏ sang
đầu một trang mới (Ctrl +)
CR Carriage Return (Về đầu dòng) : Ký tự điều con trỏ về
Trang 75Mã 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
Trang 76Cá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 các tập tin
GS Group Separator (Ký hiệu phân cách nhóm): Đánh
dấu ranh giới giữa các nhóm tin (tập hợp các bản ghi)
RS Record Separator (Ký hiệu phân cách bản ghi): Đánh
dấu ranh giới giữa các bản ghi
US Unit Separator (Ký hiệu phân cách đơn vị): Đánh
dấu phân cách giữa các phần của bản ghi
Trang 77Mã 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ệuBEL 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 đóDC1
DC4 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ỗiESC 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 đó
Trang 78Các ký tự mở rộng có mã từ 80H đến FFH
Các ký tự mở rộng được định nghĩa bởi
Nhà chế tạo máy tính Người phát triển phần mềm
Ví dụ:
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 802.5 Mã BCD
Binary Coded Decimal
Dùng 4 bit để mã hóa từng chữ số thập phân
Trang 83Ví 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
Trang 84Packed BCD & Unpacked BCD
Decimal Packed Unpacked
Trang 86Bộ vi xử lý 8086/8088
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 873.1 Sơ đồ cấu trúc của 8086/8088
Trang 883.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ờ
Trang 89 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ỳ
Trang 90Chu trình thi hành lệnh
Nhận lệnh (Fetch Instruction - FI)
Giải mã lệnh (Decode Instruction - DI)
Tính địa chỉ toán hạng (Calculate Operand Address - COA) Nhận toán hạng (Fetch Operand - FO)
Thực hiện lệnh (Execute Instruction - EI)
Ghi toán hạng (Write Operand - WO)
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: