�Tổ chức máy tính�Học kỳ 2 2010-2011�Bài 3: Datapath và Control�(Đọc ch4: 4.1 – 4.5)
Hồ Viết Việt
ThS. GVC
Bộ môn Kỹ thuật máy tính, Khoa Điện tử Viễn thông
Đại học Bách khoa Đà Nẵng
hoviet.viet@gmail.com
Học kỳ 2 2010-2011
Tổ chức máy tính
Mục tiêu Bài 3
Học kỳ 2 2010-2011
Tổ chức máy tính
Gian bếp của Von Neumann
Học kỳ 2 2010-2011
Tổ chức máy tính
Các thanh ghi
ALU
Control
Memory
Output
Program
Data
Chọn món
PC
Bắt đầu
Processor
Input
Sự việc bắt đầu từ đâu?
Học kỳ 2 2010-2011
Tổ chức máy tính
Chương trình ở đâu?
Học kỳ 2 2010-2011
Tổ chức máy tính
Mã máy của
chương trình
Bộ nhớ
Bắt đầu
Program counter
(PC)
Processor
Chương trình được thực hiện?
Học kỳ 2 2010-2011
Tổ chức máy tính
Bắt đầu
PC chứa địa chỉ bắt đầu chương trình
Lấy từ lệnh tại vị trí nhớ có địa chỉ ở PC
và PC ← PC + 4 để chuẩn bị cho lệnh kế tiếp
Giải mã lệnh
Xong chương
trình chưa?
Xong
Chưa
STOP
Thực hiện lệnh
Lưu kết quả vào thanh ghi hoặc bộ nhớ
Datapath và Control
Học kỳ 2 2010-2011
Tổ chức máy tính
Datapath cho Lấy lệnh
Học kỳ 2 2010-2011
Tổ chức máy tính
PC
Bộ nhớ lệnh
4
Địa chỉ
Từ lệnh đi tới
các thanh ghi và Control
Add
File thanh ghi: một thành phần của Datapath
Học kỳ 2 2010-2011
Tổ chức máy tính
32 Registers
(reg. file)
Write
register
reg 1 data
reg 2 data
5
5
5
32
32
32
reg 1
reg 2
Read
registers
Write data
RegWrite
đến từ Control
ALU có thể thực hiện nhiều phép toán
Học kỳ 2 2010-2011
Tổ chức máy tính
ALU
3
zero
kết quả
overflow
Các tín hiệu chọn phép toán
đến từ Control
Chọn phép toán ALU
000 AND
001 OR
010 Add
110 Subtract
111 Set on less than
zero = 1, khi mọi bit của kết quả bằng 0
Các lệnh kiểu R
Học kỳ 2 2010-2011
Tổ chức máy tính
Datapath cho lệnh kiểu R
Học kỳ 2 2010-2011
Tổ chức máy tính
32 Registers
(reg. file)
Write reg.
number
5
5
5
32
32
$s1
$s2
Read
register
numbers
Write data
ALU
3
zero
result
overflow
Các tín hiệu chọn
Phép toán
10001
10010
01000
RegWrite
32
$t0
Load và Store
100011 01001 01000 0000 0100 1011 0000
opcode $t1 $t0 1200
101011 01001 01000 0000 0100 1011 0000
opcode $t1 $t0 1200
Học kỳ 2 2010-2011
Tổ chức máy tính
Datapath cho lw
Học kỳ 2 2010-2011
Tổ chức máy tính
Operation
select
from control
(add)
32 Registers
(reg. file)
Write reg.
number
5
5
5
32
32
$t1
Read
register
numbers
Write data
ALU
3
zero
result
overflow
01001
01000
RegWrite
from control
activated
32
Sign
extend
16
0000 0100 1011 0000
Data
memory
Addr.
Read
data
MemWrite
MemRead
activated
$t0
Write
data
100011 01001 01000 0000 0100 1011 0000
opcode $t1 $t0 1200
mem. data to $t0
Datapath cho sw
Học kỳ 2 2010-2011
Tổ chức máy tính
Operation
select
from control
(add)
32 Registers
(reg. file)
Write reg.
number
5
5
5
32
32
$t1
$t0
Read
register
numbers
Write data
ALU
3
zero
result
overflow
01001
RegWrite
from control
32
Sign
extend
16
0000 0100 1011 0000
Data
memory
Addr.
Read
data
$t0 data to mem.
01000
MemWrite
activated
MemRead
Write
data
101011 01001 01000 0000 0100 1011 0000
opcode $t1 $t0 1200
32
Lệnh rẽ nhánh (kiểu I)
16-bits
000100 10001 10010 0000 0000 0001 1001
opcode $s1 $s2 25
Học kỳ 2 2010-2011
Tổ chức máy tính
Lưu ý: Có thể rẽ nhánh trong phạm vi ± 215 lệnh từ địa chỉ hiện
thời trong PC.
Datapath cho beq
Học kỳ 2 2010-2011
Tổ chức máy tính
Operation
select
from control (subtract)
32 Registers
(reg. file)
Write reg.
number
5
5
5
32
32
$s1
Read
register
numbers
Write data
ALU
3
zero
result
overflow
10001
10010
RegWrite
from control
32
Sign
extend
16
0000 0000 0001 1001
Shift
left 2
Add
16-bits
000100 10001 10010 0000 0000 0001 1001
opcode $s1 $s2 25
$s2
32
32
32
To branch
control
logic
PC+4
From instruction
fetch datapath
Branch
target
32
Lệnh J (kiểu J)
26-bits
000010 0000 0000 0000 0010 0111 0001 00
opcode 2,500
Học kỳ 2 2010-2011
Tổ chức máy tính
0000 0000 0000 0000 0010 0111 0001 0000
bits 28-31 from PC+4
32-bit jump address
Datapath cho J
Học kỳ 2 2010-2011
Tổ chức máy tính
PC
Instruction
Memory
Address
Instruction
word to
control and
registers
4
Add
1
mux
0
0
mux
1
opcode (bits 26-31)
to control
Shift
left 2
6
26
Branch
addr.
Branch
Jump
32
32
32
28
4
32
32
PC+4
32
Học kỳ 2 2010-2011
Tổ chức máy tính
Instr.
mem.
PC
Add
Reg. File
Data
mem.
1 mux 0
1 mux 0
0 mux 1
4
1 mux 0
Sign
ext.
Shift
left 2
ALU
Cont.
CONTROL
opcode
MemWrite
MemRead
ALU
Branch
zero
0-15
0-5
11-15
16-20
21-25
26-31
ALU
0 mux 1
Shift
left 2
0-25
Jump
RegDst
MemtoReg
Control
Học kỳ 2 2010-2011
Tổ chức máy tính
Control
Logic
Instruction
bits 26-31
opcode
RegDst
Jump
Branch
MemRead
MemtoReg
ALUOp
MemWrite
ALUSrc
RegWrite
ALU�Control
Instruction
bits 0-5
funct.
2
to ALU
Control Logic: Truth Table
Học kỳ 2 2010-2011
Tổ chức máy tính
Instr type
Inputs: instr. opcode bits
Outputs: control signals
31
30
29
28
27
26
RegDst
Jump
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch
ALOOp1
ALUOp2
R
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
0
lw
1
0
0
0
1
1
0
0
1
1
1
1
0
0
0
0
sw
1
0
1
0
1
1
X
0
1
X
0
0
1
0
0
0
beq
0
0
0
1
0
0
X
0
0
X
0
0
0
1
0
1
j
0
0
0
0
1
0
X
1
X
X
0
X
0
X
X
X
Thời gian cho một lệnh?
Học kỳ 2 2010-2011
Tổ chức máy tính
Thời gian cho lw và sw (Kiểu I)
Học kỳ 2 2010-2011
Tổ chức máy tính
Thời gian cho beq (Kiểu I)
Học kỳ 2 2010-2011
Tổ chức máy tính
Thời gian cho Jump (Kiểu J)
Học kỳ 2 2010-2011
Tổ chức máy tính
Chu kỳ đồng hồ phải bằng ?
Học kỳ 2 2010-2011
Tổ chức máy tính
Tóm tắt
Học kỳ 2 2010-2011
Tổ chức máy tính