Chương 2: Các đặc điểm bên trong
của Vixử lý
a. Chiều dài từ dữ liệu:
Đặc điểm quan trọng nhất của Vixửlý là chiều dài từ dữ
liệu. Vixửlý đầu tiên có chiều dài từ dữ liệu là 4 bit, các Vixử
lý sau này có chiều dài từ dữ liệu là 8 bit, 16 bit,
32 bit và 64 bit. Độ dài của từ dữ liệu nói lên tốc độ làm việc và
khả năng truy xuất bộ nhớ của Vixử lý. Nếu Vixửlý có chiều
dài từ dữ liệu lớn thì tốc độxửlý công việc nhanh và khả năng
truy xuất bộ nhớ lớn, được dùng trong các công việc xửlý dữ
liệu, điều khiển phức tạp. Nếu Vixửlý có chiều dài từ dữ liệu
nhỏ hơn thì sẽ có tốc độxửlý công việc chậm hơn và khả năng
truy xuất bộ nhớ cũng bò hạn chế hơn, được dùng trong các công
việc điều khiển và xửlý đơn giản. Các Vixửlý 8 bit như:
8080A, 8085A của Intel; MC6800, MC6802 của Motorola; Z80
của Zilog; TMS9985 của Texas Instrument;
Các Vixửlý 16 bit như 8086, 8088 của Intel; MC68000 của
Motorola; Z8000 của Zilog;
b. Độ dài từ đòa chỉ:
Dung lượng bộ nhớ mà Vixửlý có thể truy xuất là một
phần trong cấu trúc của Vixử lý. Để truy xuất được bộ nhớ thì
Vi xửlý phải biết được đòa chỉ của từng ô nhớ cụ thể, đòa chỉ của
ô nhớ được xác đònh bằng từ đòa chỉ. Độ dài của từ đòa chỉ cho
biết số lượng ô nhớ mà Vixửlý có thể liên hệ trực tiếp, độ dài
của các thanh ghi rất cần thiết cho việc đònh đòa chỉ cũng phải có
khả năng tương ứng.
c. Tốc độ làm việc:
Tần số xung clock cung cấp cho Vi xửlý làm việc quyết
đònh tốc độ làm việc của Vixử lý, tốc độ này được cho bởi nhà
chế tạo. Tốc độ xung clock càng cao thì Vi xửlý làm việc với
tốc độ càng lớn và khả năng xửlý lệnh càng nhanh.
d. Các thanh ghi:
Trong cấu trúc củaVi xử lý, các thanh ghi giữ một vai trò
quan trọng, chúng được dùng để xửlý dữ liệu. Có nhiều loại
thanh ghi trong Vixửlý với các chức năng khác nhau, số lượng
thanh ghi đóng vai trò rất quan trọng đối với Vixửlý và người
lập trình. Nếu Vixửlý có số lượng thanh ghi càng nhiều thì
người lập trình có thể viết các chương trình điều khiển Vixửlý
đơn giản hơn bởi việc sử dụng các thanh ghi được linh động và
đa dạng, điều này làm tăng tốc độ và khả năng xửlýchương
trình của Vixử lý.
e. Tập lệnh:
Bất kì một Vixửlý nào muốn hoạt động được thì phải có
tập lệnh. Do cấu tạo phần cứng khác nhau nên mỗi Vixửlý có
tập lệnh khác nhau. Tập lệnh của Vixửlý là một trong những
yếu tố cơ bản để đánh giá tốc độ làm việc của Vixử lý. Nếu Vi
xử lý có nhiều mạch điện logic bên trong để thực hiện thì số
lượng lệnh điều khiển của Vixửlý càng nhiều, khi đóVixửlý
càng lớn và độ phức tạp càng lớn. Tập lệnh của Vixửlý càng
nhiều thì rất có ích cho người lập trình khi viết chương trình điều
khiển cho Vixử lý.
3. Vixửlý 8 bit:
Mỗi loại Vixửlý sẽ có cấu trúc khác nhau nhưng thường có
các khối chính như sau:
- Khối đơn vò số học/logic (ALU -
Arithmetic Logic Unit).
- Các thanh ghi (Registers).
- Khối điều khiển logic (Control Logic).
Chức năng và nguyên lý hoạt động của các khối như sau:
a. Khối Đơn vò số học-logic (ALU - Arithmetic Logic Unit):
Đây là khối quan trọng nhất của Vixử lý, khối này chứa các
mạch điện logic có chức năng chính là làm thay đổi dữ liệu.
ALU có hai ngõ vào là IN, đó chính là các ngõ vào dữ liệu cho
ALU xửlý và một ngõ ra OUT là ngõ ra kết quả dữ liệu đã được
ALU xử lý. Dữ liệu trước khi đưa vào ALU được chứa ở thanh
ghi đệm là TEMP1 và TEMP2. Thông thường, ALU luôn lấy dữ
liệu từ một thanh ghi đặc biệt có tên gọi là Bộ tích lũy
(Accumulator). Ngõ ra OUT cho phép ALU có thể gởi dữ liệu
đã được xửlý lên bus dữ liệu bên trong Vixử lý, dođó thiết bò
nào kết nối với bus đều có thể nhận dữ liệu này, thường thì ALU
gởi dữ liệu đã được xửlý tới Bộ tích lũy. Khối ALU có thể thực
hiện các phép tính và xửlý sau:
Add Subtract And Or Exclusive Or
Shift right Shift left Increment Decrement
Complement
Memory Address
Register
High
| Low
Accumulator
(A)
Status
Register
Register B
Register C
16 bit
Address Bus
External input & output
control lines
Sơ đồ khối của một Vixửlý 8 bit.
b. Các thanh ghi (Registers):
Các thanh ghi cơ bản luôn có trong một Vixửlý là A, PC,
SP, F, các thanh ghi thông dụng là B, C, D, E, thanh ghi lệnh,
thanh ghi đòa chỉ.
Thanh ghi A (Accumulator): hay bộ tích lũy, đây là thanh
ghi quan trọng của Vixử lý, nó có chức năng là lưu trữ dữ liệu
khi tính toán. Hầu hết các phép tính logic và số học đều diễn ra
giữa thanh ghi này và ALU. Nó có chức năng quan trọng khác là
truyền dữ liệu từ ô nhớ hay từ các thanh ghi bên trong ra các
thiết bò ngoại vi.
Thanh ghi PC (Program Counter)
: hay bộ đếm chương trình,
là thanh ghi cơ bản của Vixử lý. Chức năng của thanh ghi PC là
quản lý lệnh đang thực hiện và lệnh sẽ được thực hiện tiếp theo.
Trước khi Vixửlý thực hiện một chương trình thì thanh ghi PC
phải được nạp một con số, đó chính là đòa chỉ của ô nhớ chứa
lệnh đầu tiên của chương trình. Sau thực hiện việc đón lệnh từ
bộ nhớ, Vixửlý sẽ tự động tăng nội dung PC để chuẩn bò đón
lệnh kế, PC chỉ tăng khi Vixửlý bắt đầu thực hiện lệnh đón
trước đó.
Thanh ghi trạng thái (Status Register)
: còn được gọi là thanh
ghi cờ (Flag Register), dùng để lưu trữ kết quả của một số lệnh
kiểm tra có ảnh hưởng đến thanh ghi này. Các bit thường có
trong thanh ghi cờ là:
- Bit Carry “C”: khi kết quả tràn thì C = 1, ngược lại C = 0.
- Bit Zero “Z” : kết quả bằng 0 thì Z = 1, ngược lại Z = 0.
- Bit Negative “N”: khi bit MSB của thanh ghi là 1 thì N =
1, ngược lại N = 0.
- Bit Intermediate Carry “I”: giống như bit Carry nhưng chỉ
có tác dụng với phép cộng hay trừ trên 4 bit thấp.
- Bit Interupt Flag “IF”: IF = 1 khi người lập trình cho phép
ngắt, ngược lại IF = 0.
- Bit Overflow “O”: O = 1 khi bit Carry của phép toán cộng
với bit dấu của dữ liệu.
- Bit Parity “P”: P = 1 khi kết quả phép toán là số chẵn,
ngược lại P = 0.
Thanh ghi con trỏ ngăn xếp SP (Stack Pointer)
: chức năng
của thanh ghi con trỏ ngăn xếp là quản lý bộ nhớ ngăn xếp khi
có dữ liệu được lưu trữ tạm thời vào ngăn xếp. Cũng giống như
PC, SP cũng tự động chỉ đến ô nhớ kế. Các dữ liệu chứa trong
ngăn xếp được tổ chức theo nguyên tắc vào sau ra trước (LIFO:
Last In First Out). Trong hầu hết các Vixử lý, SP tự giảm sau
khi thực hiện lệnh cất giữ dữ liệu vào ngăn xếp và ngược lại SP
sẽ tự tăng lên để chỉ đến ô nhớ tiếp theo trong ngăn xếp sau khi
Vi xửlý thực hiện lệnh lấy dữ liệu ra khỏi ngăn xếp. Vì thế giá
trò cho SP khi thiết lập thường là đòa chỉ cuối cùng của bộ nhớ.
Quá trình này do người lập trình thiết lập được gọi là khởi tạo
con trỏ ngăn xếp. Nếu không được khởi tạo, con trỏ ngăn xếp sẽ
chỉ đến một ô nhớ ngẫu nhiên. Khi đó dữ liệu cất vào ngăn xếp
có thể ghi đè lên dữ liệu khác làm chương trình xửlý sai.
Thanh ghi đòa chỉ (Address Register)
: khi Vixửlý cần truy
xuất bộ nhớ, thanh ghi đòa chỉ phải tạo ra đúng đòa chỉ mà Vixử
lý mong muốn. Ngõ ra của thanh ghi đòa chỉ được đặt lên bus đòa
chỉ, bus đòa chỉ dùng để lựa chọn một ô nhớ hay một port I/O
cần truy xuất.
Thanh ghi lệnh (Instruction Register)
: dùng để chứa lệnh Vi
xử lý đang thực hiện. Thanh ghi này do Vixửlý sử dụng, người
lập trình không sử dụng.
Thanh ghi chứa dữ liệu tạm thời (Temporary Register)
:
dùng để ALU thực hiện các phép toán xửlý dữ liệu, người lập
trình không sử dụng thanh ghi này.
. mỗi Vi xử lý có
tập lệnh khác nhau. Tập lệnh của Vi xử lý là một trong những
yếu tố cơ bản để đánh giá tốc độ làm vi c của Vi xử lý. Nếu Vi
xử lý có. lệnh của Vi xử lý càng
nhiều thì rất có ích cho người lập trình khi vi t chương trình điều
khiển cho Vi xử lý.
3. Vi xử lý 8 bit:
Mỗi loại Vi xử lý sẽ có