Cấp vi lập trình Mục tiêu Nghiên cứu cách thức: - Vi chương trình điều khiển các thành phần phần cứng - Vi chương trình phiên dịch các chỉ thị của cấp máy quy ước... Cấp vi lập trình
Trang 1Cấp vi lập trình
Mục tiêu
Nghiên cứu cách thức:
- Vi chương trình điều khiển các thành phần phần cứng
- Vi chương trình phiên dịch các chỉ thị của cấp máy quy
ước
Trang 2Cấp vi lập trình
Cách thức kết nối
SP
IR TIR
0 +1 -1 AMASK SMASK
A
B
C
D
E
F
Bus A Bus B Bus C
L(A) L(B)
AMUX
ALU
L 0 L1
Shifter
F 0
F 1
N
Z
S0
S1
MBR MAR M0 Address out
To address bus
To data bus
M 2
M 3
M1 A 0
Data in
Data out
16 thanh ghi (16 bits)
Bus A,B dẫn dữ liệu đến ALU 16 bits
ALU thực hiện 4 chức năng: A+B, A ^ B, A, Not A nhờ F 0 và F 1 và
2 trạng thái N, Z
Bus C nạp nội dung từ ALU vào thanh ghi
Bus A,B không trực tiếp đưa dữ liệu đến ALU mà thông qua 2 mạch chốt
Đề truyền với bộ
nhớ, đưa MAR và
MBR vào vi cấu trúc
MAR nạp địa chỉ từ
chốt B nhờ đường
điều khiển M 0
M 1 nạp dữ
liệu cho
MBR, M 2,3
điều khiển
đọc và ghi bộ
nhớ
Kênh Amux xác định dữ liệu vào từ chốt A hay MBR nhờ A 0
Trang 3Cấp vi lập trình
Cách thức kết nối
SP
IR TIR
0 +1 -1 AMASK SMASK
A
B
C
D
E
F
Bus A Bus B Bus C
L(A) L(B)
AMUX
ALU
L 0 L1
Shifter
F 0
F 1
N
Z
S0
S1
MBR
MAR M0 Address out
To data bus
M 2
M 3
M1 A 0
Data in
Data out
To address bus
- 16 tín hiệu điều khiển nạp cho Bus A từ thanh ghi
- 16 tín hiệu điều khiển nạp cho Bus B từ thanh ghi
- 16 tín hiệu điều khiển nạp cho thanh ghi từ Bus C
- 2 tín hiệu điề khiển chốt A,B
- 2 tín hiệu điều khiển chức năng ALU
- 2 tín hiệu điều khiển mạch dịch bit
- 4 tín hiệu điều khiển MAR và MBR
- 2 tín hiệu điều khiển đọc, ghi bộ nhớ
- 1 tín hiệu điều khiển Amux
Mã hóa thông tin bằng 4 bit và dùng mạch giải mã 416 để tiết kiệm 32 bits
Trang 4Cấp vi lập trình
Cách thức kết nối
Khuôn dạng vi lệnh
A
M
U
X
C
O
N
D
A
L
U
S
H
M B
R
M A
R
R
D
W
R
E N
C
Bits 1 2 2 2 1 1 1 1 1 4 4 4 8
Khuôn dạng vi lệnh có 32 bits
Mã hóa thông tin bằng 4 bits điều khiển 3 bus A,B,C, dùng để chọn thanh ghi
Bit thêm vào ENC (Enable C)
Dùng RS và WR điều khiển chốt MBR
Thêm COND quản lý
trình tự vi lệnh kế tiếp
Thêm COND quản lý địa chỉ vi lệnh kế tiếp
Đk chọn dữ liệu từ chốt A (=0) hoặc MBR (=1) đến ALU
Chọn chức năng ALU: A+B (=00), A and B (01), A (=10), Not A (11)
Mạch dịch bit phải (=01), trái (=10), không dịch (=00)
Nạp dữ liệu cho MBR từ mạch dịch bit (=1) hoặc không (=0)
Nạp địa chỉ cho MAR từ mạch chốt B (=1) hoặc không (=0) RD,WR yêu cầu đọc/ghi dữ liệu (=1) hoặc không (=0)
Đk cất kết quả ALU vào bộ nhớ nháp (=1) hoặc không (=0)
COND=1, nhảy đến ADDR nếu N=1 COND=2, nhảy đến ADDR nếu Z=1 COND=3, nhảy đế ADDR
Trang 5Cấp vi lập trình
Sơ đồ khối đầy đủ
của vi cấu trúc
16 register
MAR
MBR
LA LB
AMUX
ALU
Shifter
C
A M U
X
C
O
N
D
A
L
U
S
H M B
R
M A
R
R
D W
R EN
C C B A ADDR
256 x 32 Control Store
Mmux
C decode
B decode
A decode
4
3 Clock
2 Subcycles
1
MIR
N
2
RD
WR
4
4
4
16
16
16
Trang 6Cấp vi lập trình
Vi hợp ngữ
Nguyên tắc: vi chương trình được viết dưới dạng số nhị
phân, mỗi vi lệnh dài 32 bit
Ví dụ: Để cộng AC với A và chứa kết quả vào AC
0 00 00 00 0 0 0 0 1 0001 0001 0010 00000000
Amux=0 Cond=0 ALU=0 (Phép cộng)
SH=0 MBR,MAR,RD,WR=0
ENC=1 C=1 B=1 A=10 ADDR=0
Có thể viết:
ENC=1,C=1,B=1,A=10
Trang 7Cấp vi lập trình
Vi hợp ngữ
Nguyên tắc: sử dụng ký hiệu của
ngôn ngữ cấp cao mô tả chỉ thị máy
PC
AC
SP
IR TIR
0 +1 -1 AMASK SMASK
A
B
C
D
E
F
Bus A Bus B Bus C
L(A) L(B)
AMUX
ALU
L 0 L1
Shifter
F 0
F 1
N
Z
S0
S1
MBR
MAR M0 Address out
To data bus
M 2
M 3
M1 A 0
Data in
Data out
A M U
X
C O N
D
A L
U S H
M B
R
M A
R R D W R
E N
C C B A
A D D
R
Trang 8Cấp vi lập trình
Ví dụ một vi chương trình thực hiện lệnh cộng (ADD)
1 Vi lệnh: PC-MAR:
- ALU nối Bus D và Bus S
- Bus D nối PC
- Bus S nôi MAR
2 Vi lệnh: |ADDR|MBR
- Đọc MEM ra MBR
3 Vi lệnh: (MBR)IR
- ALU nối Bus M và bus S
- MBR nối Bus M
- Bus S nối IR
4 Vi lệnh: DECODE Nhảy đến địa chỉ mã lệnh (đã giải mã)
5 Vi lệnh: (IA)MAR
- ALU nối Bus D và Bus S
- Nối IA (của IR) và Bus D
- Bus S nôi MAR
6 Vi lệnh: |DATA|MBR- Đọc dữ liệu từ MEM ra MBR
7 Vi lệnh: MBR+A
- Cộng nội dung trên Bus D và Mus
M và đưa ra Bus S
- MBR nối Bus M
- Nối Bus S với AC
8 Vi lệnh: PC+1
- Nối Bus D và Bus S qua ALU, PC cộng 1
- Nối PC và Bus D
- Nối Bus S và PC
1 mar:=pc;rd;
2 pc:=pc+1;rd;
3 ir:=mbr;
5 rd;
6 ac:=mar;goto 0;
8 Rd;
9 ac:=mbr+ac;goto 0;
y}
13 ac:=ac+a;goto 0;
Trang 9Cấp vi lập trình
Ví dụ một vi chương trình thực hiện lệnh cộng (ADD)
1 mar:=pc;rd;
2 pc:=pc+1;rd;
3 ir:=mbr;
4 mar:=ir;rd; {LODD}
5 rd;
6
0 00 10 0 0 1 1 0 0 0000 0000 0000 00000000
0 00 00 0 0 0 0 0 1 0000 0110 0000 00000000
1 00 10 0 0 0 0 0 1 0011 0000 0000 00000000
0 00 10 0 0 1 1 0 0 0000 0011 0000 00000000
0 00 00 0 0 0 1 0 0 0000 0000 0000 00000000
A M U
X
C O N
D
A L
U S H
M B
R
M A
R R D W R
E N
C C B A
A D D
R
Vi chương trình viết dưới
dạng ngôn ngữ tượng trưng,
sử dụng ký hiệu của ngôn
ngữ cấp cao
Vi chương trình viết dưới dạng vi lệnh nhị phân, mỗi vi lệnh dài 32 bits