You are on page 1of 74

NKK-HUST

Kiến trúc máy tính

Thiết kế bộ xử lý
theo kiến trúc MIPS

Nguyễn Kim Khánh


Trường Đại học Bách khoa Hà Nội

Jan2015 Computer Architecture - MIPS 1


NKK-HUST

Nội dung

1. Thực hiện bộ xử lý MIPS cơ bản


2. Thiết kế khối datapath
3. Thiết kế control unit
4. Kỹ thuật đường ống lệnh

Jan2015 Computer Architecture - MIPS 2


NKK-HUST

1. Thực hiện bộ xử lý MIPS cơ bản

n  Xem xét hai cách thực hiện bộ xử lý theo kiến


trúc MIPS:
n  Phiên bản đơn giản
n  Phiên bản được đường ống hóa (gần với thực tế)
n  Chỉ thực hiện với một số lệnh cơ bản của
MIPS, nhưng chỉ ra hầu hết các khía cạnh:
n  Các lệnh tham chiếu bộ nhớ: lw, sw
n  Các lệnh số học/logic: add, sub, and, or, slt
n  Các lệnh chuyển điều khiển: beq, j

Jan2015 Computer Architecture - MIPS 3


NKK-HUST

Tổng quan quá trình thực hiện các lệnh

n  Hai bước đầu tiên với mỗi lệnh:


n  Đưa địa chỉ từ bộ đếm chương trình PC đến
bộ nhớ lệnh, tìm và nhận lệnh từ bộ nhớ này
n  Sử dụng các số hiệu thanh ghi trong lệnh để

chọn và đọc một hoặc hai thanh ghi:


n  Lệnh lw: đọc 1 thanh ghi
n  Các lệnh khác (không kể lệnh jump): đọc 2 thanh
ghi

Jan2015 Computer Architecture - MIPS 4


NKK-HUST

Tổng quan quá trình thực hiện các lệnh (tiếp)


n  Các bước tiếp theo tùy thuộc vào loại lệnh:
n  Sử dụng ALU hoặc bộ cộng Add để:
n  Tính kết quả phép toán với các lệnh số học/logic
n  So sánh các toán hạng với lệnh branch
n  Tính địa chỉ đích với các lệnh branch
n  Tính địa chỉ ngăn nhớ dữ liệu với lệnh load/store
n  Truy cập bộ nhớ dữ liệu với lệnh load/store
n  Lệnh lw: đọc dữ liệu từ bộ nhớ
n  Lệnh sw: ghi dữ liệu ra bộ nhớ
n  Ghi dữ liệu đến thanh ghi đích:
n  Các lệnh số học/logic: kết quả phép toán
n  Lệnh lw: dữ liệu được đọc từ bộ nhớ dữ liệu
Jan2015 Computer Architecture - MIPS 5
NKK-HUST

Tổng quan quá trình thực hiện các lệnh (tiếp)

n  Thay đổi nội dung bộ đếm chương trình PC:


n  Với các lệnh rẽ nhánh (branch), tùy thuộc vào
kết quả so sánh:
n  Điều kiện thỏa mãn: PC ß địa chỉ đích (địa chỉ của
lệnh cần rẽ tới)
n  Điều kiện không thỏa mãn: PC ß PC + 4 (địa chỉ
của lệnh kế tiếp)
n  Với các lệnh còn lại (không kể các lệnh jump)
n  PC ß PC + 4 (địa chỉ của lệnh kế tiếp)

Jan2015 Computer Architecture - MIPS 6


NKK-HUST

Sơ đồ khái quát của bộ xử lý MIPS

Jan2015 Computer Architecture - MIPS 7


NKK-HUST

Sử dụng bộ chọn kênh (MUX)


n  Không thể nối trực
tiếp tại các vị trí
được đánh dấu
n  Sử dụng MUX

Jan2015 Computer Architecture - MIPS 8


NKK-HUST

Bộ xử lý với các đường điều khiển chính

Jan2015 Computer Architecture - MIPS 9


NKK-HUST

2. Thiết kế khối Datapath

n  Datapath: gồm các thành phần để xử lý


dữ liệu và địa chỉ
n  Tập thanh ghi, ALUs, MUX’s, bộ nhớ, …
n  Sẽ xây dựng tăng dần khối datapath
cho MIPS

Jan2015 Computer Architecture - MIPS 10


NKK-HUST
Processor
252
Các
252
thành phần để thực hiện nhận lệnh
Chapter 4 The Processor
Chapter 4 The Processor

n
Instruction Instruction
address address

Instruction PC Instruction Add SumInstruction PCAdd Sum Add Sum


PC

on Instruction Instruction
y memory memory

a. Instruction memory b. Program counter c. Adder


mory
n  Bộ đếm chươngFIGURE
trình
b. Program
PC:
a. Instruction
countermemoryc. Adder b. Program counter
4.5 Two state elements are needed to store and access instructions, and an
c. Adder

FIGURE 4.5 Two state elements are needed to store and access instructions, and an
o state elements are needed to store and access adder is needed to compute
instructions, and an the next instruction address. The state elements are the instruction
n 
to compute the next instruction Thanh ghi 32-bit chứa địa chỉ của lệnh hiện tại
adder is needed to compute
address. Th e state
memory and the program counter.
memory
elements
the next
andare
thetheinstruction
program
The instruction
address.
counter.
instruction
memory need
The state elements
The instruction memory needare the instruction
only provide read access because the
datapath does not write instructions. Sinceonly provide read
the instruction accessonly
memory because
reads, the
we treat it as combinational
rogram counter. The instruction datapath
memorydoes neednotonly
writeprovide readSince
access because thememory only reads, we treat it as combinational
Địa chỉ khởi động = 0xBFC0 0000
n  instruction
rite instructions. Since the memory
logic: the output only
instructions.
at anyreads, weects
timecontrol
refl treat
signal
the
theitcontents
as
instruction
logic: the output at any time reflects the contents of the location specified by the address input, and no read
combinational
is needed. of the
(Welocation
will needspecifi ed by
to write thethe address input,
instruction memory andwhen
no read
we load the program; this is
any time reflects the contents of the location
control signalspecifi ed by(We
is needed. the address
will need input,
to write and
the no read
instruction memory when we load the program;
not hard to add, and we ignore it for simplicity.) The program counter is a 32-bit register this is that is written at the
ded. (We will need to
n  writeBộ nhớ lệnh (Instruction memory):
the instruction
not hard to
end of every
we ignore it for simplicity.) The program
memory
add, and we
clockiscycle
counter
when
ignorewe
end
andadd
a 32-bit
it
thus
load
for
of
itsdoes
register
the
not
twothat
program;
simplicity.)
every clock
need
32-bit
Th
cycle eandthis
program
a write
is inputs
written and
is
thus counter
does
atcontrol
not
the thesignal.
place
is
need
sum on
a 32-bit
Thits
a register
write
e adder
controlthat is written
signal. Th e at
adder
is an ALU wired to always
output.
the
is an ALU wired to always

add its two 32-bit inputs and place the sum on its output.
n 
puts and place the sum on its output.
Chứa các lệnh của chương trình
ycle and thus does not need a write control signal. The adder is an ALU wired to always

n  Khiwhich
có were which từ
địaintroduced
chỉ lệnh werePC introduced
đưa inđến
Chapter 2. Recall
thì lệnh that a typicalđọc
được instance
ra of such an
in Chapter
instruction is add2. Recall that a typical
$t1,$t2,$t3, instance
which of such
reads $t2 an and writes $t1.
and $t3
instruction is add $t1,$t2,$t3, The processor’s which reads $t2 and registers
32 general-purpose $t3 andare writes $t1.
stored in a structure called a
roduced in Chapter n  Bộ2.register
cộng
Recall
Th (Add):
that a typical
fiele processor’s
A state được
instance
32register sử
of suchdụng
file. A register
general-purpose
an
registers
file isare tăng nội dung
stored inofa registers
a collection structureincalled
which PCaany register can be
ddregister
$t1,$t2,$t3, which
element reads
register $t2
that consists and $t3
file. A register
read and writes
fileoriswritten $t1.
by specifying
a collection the number
of registers in whichofany
the register in thebefile. The register file
can
or’selement
32 general-purpose thêm
file A state
that consists of a 4
registers
set of để are
registers trỏ
stored
that tới
read or written by specifying in alệnh
structure
containsthe kế
thenumber tiếp
called
register of a
state
theofregister
the computer. In Th
in the file. addition, wefiwill
e register le need an ALU to
register file
of a set of registers
Jan2015 that can
is a collection be read and
of registers written
in which any
Computerregister canread
Architecturebe
- MIPS 11
contains the register operate
state of on
thethe values
computer. In from the registers.
addition, we will need an ALU to
by supplying a register
bycan be read andthe
specifying written
numberoperate
of the on register in the
the values file.
read fromThethe
R-format register filehave three register operands, so we will need to read two
instructions
registers.
NKK-HUST

Thực hiện phần nhận lệnh

Increment by
4 for next
instruction
32-bit
register

Jan2015 Computer Architecture - MIPS 12


NKK-HUST

Thực hiện lệnh số học/logic kiểu R


op rs rt rd shamt funct
31:26 25:21 20:16 15:11 10:6 5:0

n  bits 31:26: mã thao tác (opcode)


n  000000 với các lệnh kiểu R
n  bits 25:21: số hiệu thanh ghi nguồn thứ nhất rs
n  bits 20:16: số hiệu thanh ghi nguồn thứ hai rt
n  bits 15:11: số hiệu thanh ghi đích rd
n  bits 10:6: số bit được dịch với các lệnh dịch bit
n  00000 với các lệnh khác
n  bits 5:0: mã hàm để xác định phép toán (function code)

Jan2015 Computer Architecture - MIPS 13


NKK-HUST
310 Chapter 4 The Processor
Các thành phần thực hiện lệnh kiểu R
5 Read ALU operation
4
register 1 Read
Register 5 Read data 1
numbers register 2 Zero
Registers Data ALU ALU
5 Write result
register Read
Write data 2
Data
Data
RegWrite

a. Registers
n  Tập thanh ghi (Registers): có 32 thanhb. ALU ghi 32-bit, mỗi thanh
ghi được xác định bởi số hiệu 5-bit
FIGURE 4.7 The two elements needed to implement R-format ALU operations are the
register file and the ALU. The register file contains all the registers and has two read ports and one write
n  Read register 1, ofRead register 2: tocác đầu
port. The design of multiported register files is discussed in Section C.8 of
always outputs the contents the registers corresponding the Read vào đểonchọn các
Appendix C. The register file
register inputs the outputs; no thanh ghi
cần
other đọc
control inputs are needed. In contrast, a register write must be explicitly indicated by asserting the
write control signal. Remember that writes are edge-triggered, so that all the write inputs (i.e., the value to
n  Write register:
be written, đầuandvào
the register number, đểcontrol
the write chọn thanh
signal) ghiatcần
must be valid ghi
the clock edge. Since writes to
the register file are edge-triggered, our design can legally read and write the same register within a clock cycle:
n  Read data
the read will get the1, Read
value written indata
an earlier2: hai
clock cycle,đầu ravalue
while the dữwritten
liệuwillđọc từ tothanh
be available a read in ghi (32-bit)
a subsequent clock cycle. The inputs carrying the register number to the register file are all 5 bits wide, whereas
n  Write
the lines Data:
carrying data đầu
valuesvào dữwide.
are 32 bits liệu ghi vào
The operation to bethanh
performed ghi
by the (32-bit)
ALU is controlled with
the ALU operation signal, which will be 4 bits wide, using the ALU designed in Appendix C. We will
n  RegWrite: tín output
use the Zero detection hiệuof điều
the ALU khiển ghi dữbranches.
shortly to implement liệu vào thanh
The overflow outputghi
will not be
needed until Section 4.9, when we discuss exceptions; we omit it until then.
n  ALU để thực hiện các phép toán số học/logic
Jan2015 Computer Architecture - MIPS 14
NKK-HUST

Mô tả thực hiện lệnh số học/logic kiểu R


n  Hai số hiệu thanh ghi rs và rt đưa đến hai đầu vào Read
register 1, Read register 2 để chọn hai thanh ghi nguồn
n  Số hiệu thanh ghi rd đưa đến đầu vào Write register để
chọn thanh ghi đích
n  Hai dữ liệu từ hai thanh ghi nguồn được đọc ra 2 đầu ra
Read data 1 và Read data 2 , rồi đưa đến đầu vào của
ALU
n  ALU operation (4-bit): tín hiệu điều khiển chọn phép toán
ở ALU
n  ALU thực hiện phép toán tương ứng, kết quả phép toán
ở đầu ra ALU result được đưa về đầu vào Write Data của
tập thanh ghi để ghi vào thanh ghi đích
n  RegWrite: tín hiệu điều khiển ghi dữ liệu vào thanh ghi
đích
Jan2015 Computer Architecture - MIPS 15
NKK-HUST

Thực hiện các lệnh lw/sw


op rs rt imm
31:26 25:21 20:16 15:0
n  bits 31:26 là mã thao tác
n  100011 (35) với lệnh lw
n  101011 (43) với lệnh sw
n  bits 25:21: số hiệu thanh ghi cơ sở rs
n  bits 20:16: số hiệu thanh ghi rt
n  thanh ghi đích với lệnh lw
n  thanh ghi nguồn với lệnh sw
n  bits 15:0: hằng số imm có giá trị trong dải [-215 , +215 – 1]
n  Địa chỉ từ nhớ dữ liệu = nội dung thanh ghi rs + imm
n  lw rt, imm(rs) # (rt) = mem[(rs)+SignExtImm]
n  sw rt, imm(rs) # mem[(rs)+SignExtImm] = (rt)
Jan2015 Computer Architecture - MIPS 16
NKK-HUST

Các thành phần thực hiện các lệnh lw/sw


Chapter 4 The Processor

Tập thanh ghi Bộ số học/logic


5 Read ALU operation
4
register 1 Read
Register 5 Read data 1
numbers register 2 Zero
Registers Data ALU ALU
5 Write result
register Read
Write data 2
Data
Data 4.3 Building a Datapath
RegWrite

a. Registers Bộ nhớ dữ liệu


b. ALU
Bộ mở rộng số có dấu
FIGURE 4.7 MemWrite
The two elements needed to implement R-format ALU operations are the từ 16-bit à 32-bit
register file and the ALU. The register file contains all the registers and has two read ports and one write
port. The design of multiported register files is discussed in Section C.8 of Appendix C. The register file
always outputs the contents of the registers corresponding to the Read register inputs Read on the outputs; no
Address
other control inputs are needed. In contrast, a register write must be explicitly indicated data
by asserting the
write control signal. Remember that writes are edge-triggered, so that all the write inputs (i.e., the value to
16 32
be written, the register number, and the write control signal) must be valid at the clock edge. Since writes to Sign-
Data
the register file are edge-triggered, our design can legally read and write the same register within a clock cycle:
extend
the read will get the value written in an earlier clock cycle, while the value written will be available to a read in
a subsequent clock cycle. The inputs carrying the register number to Write memory
the register file are all 5 bits wide, whereas
data
the lines carrying data values are 32 bits wide. The operation to be performed by the ALU is controlled with
the ALU operation signal, which will be 4 bits wide, using the ALU designed in Appendix C. We will
use the Zero detection output of the ALU shortly to implement branches. The overflow output will not be
needed until Section 4.9, when we discuss exceptions; we omit it until then.
MemRead
Jan2015 Computer Architecture - MIPS 17
a. Data memory unit b. Sign extension unit
In addition, we will need a unit to sign-extend the 16-bit offset field in the
NKK-HUST

Thực hiện lệnh lw


n  Số hiệu thanh ghi rs đưa đến đầu vào Read register 1 để
chọn thanh ghi cơ sở rs, nội dung rs được đưa ra đầu ra
Read Data 1, rồi chuyển đến ALU
n  Hằng số imm 16-bit đưa đến bộ Sign-extend để mở rộng
thành 32-bit, rồi chuyển đến ALU
n  ALU cộng hai giá trị trên đưa ra ALU result chính là địa
chỉ của dữ liệu cần đọc từ bộ nhớ dữ liệu; địa chỉ này
được đưa đến đầu vào Address của bộ nhớ dữ liệu
n  Số hiệu thanh ghi rt đưa đến đầu vào Write Register để
chọn thanh ghi đích
n  Dữ liệu 32-bit ở bộ nhớ dữ liệu, tại vị trí địa chỉ đã được
tính, được đọc ra ở đầu ra Read data của bộ nhớ dữ liệu
nhờ tín hiệu điều khiển MemRead, rồi đưa về đầu vào
Write Data của tập thanh ghi để ghi vào thanh ghi đích rt
Jan2015 Computer Architecture - MIPS 18
NKK-HUST

Thực hiện lệnh sw


n  Số hiệu thanh ghi rs đưa đến đầu vào Read register 1 để
chọn thanh ghi cơ sở rs, nội dung rs được đưa ra đầu ra
Read Data 1, rồi chuyển đến ALU
n  Hằng số imm 16-bit đưa đến bộ Sign-extend để mở rộng
thành 32-bit, rồi chuyển đến ALU
n  ALU cộng hai giá trị trên đưa ra ALU result chính là địa
chỉ của vị trí ở bộ nhớ dữ liệu; địa chỉ này được đưa đến
đầu vào Address của bộ nhớ dữ liệu
n  Số hiệu thanh ghi rt đưa đến đầu vào Read register 2 để
chọn thanh ghi dữ liệu nguồn rt, nội dung rt được đưa ra
đầu ra Read data 2
n  Dữ liệu 32-bit này sẽ được đưa đến đầu vào Write data
của bộ nhớ dữ liệu và được ghi vào vị trí nhớ có địa chỉ
đã được tính, nhờ tín hiệu điều khiển MemWrite
Jan2015 Computer Architecture - MIPS 19
NKK-HUST

Thực hiện lệnh Branch (beq, bne)


4 or 5 rs rt imm
31:26 25:21 20:16 15:0

n  bits 31:26 mã thao tác


n  000100 (4) với lệnh beq
n  000101 (5) với lệnh bne
n  bits 25:21 số hiệu thanh ghi nguồn rs
n  bits 20:16 số hiệu thanh ghi nguồn rt
n  bits 15:0 hằng số imm có giá trị trong dải [-215 , +215 – 1]
n  So sánh nội dung hai thanh ghi rs và rt:
n  Nếu điều kiện đúng: rẽ nhánh đến nhãn đích
n  PC ß (PC +4) + hằng số x 4
n  Nếu điều kiện sai: chuyển sang thực hiện lệnh kế tiếp
n  PC ß PC + 4
Jan2015 Computer Architecture - MIPS 20
NKK-HUST

Các thành phần thực hiện lệnh Branch

Just
re-routes
wires

Sign-bit wire
replicated

Jan2015 Computer Architecture - MIPS 21


NKK-HUST

Thực hiện lệnh Branch (beq, bne)


n  Nhờ các số hiệu thanh ghi rs và rt, hai toán hạng nguồn
được đọc ra đưa đến ALU
n  ALU trừ hai toán hạng và thiết lập giá trị ở đầu ra “Zero”
n  Hiệu = 0 à đầu ra Zero = 1
n  Hiệu <> 0 à đầu ra Zero = 0
n  Đầu ra Zero này được đưa đến mạch logic điều khiển rẽ nhánh
n  Bộ cộng Add tính địa chỉ đích rẽ nhánh
n  Hằng số imm 16-bit được mở rộng theo kiểu có dấu thành 32-bit,
rồi dịch trái 2 bit
n  Cộng với PC (PC đã được tăng 4)

à Địa chỉ đích = (PC+4) + (hằng số đã mở rộng 32-bit, dịch trái 2 bit)
n  Điều kiện đúng: PC ß địa chỉ đích rẽ nhánh (rẽ nhánh xảy
ra)
n  Điều kiện sai: PC ß PC+4 (chuyển sang lệnh kế tiếp)
Jan2015 Computer Architecture - MIPS 22
NKK-HUST

Hợp các thành phần cho các lệnh


n  Datapath cho các lệnh thực hiện trong
1 chu kỳ
n  Mỗi phần tử của datapath chỉ có thể làm
một chức năng trong mỗi chu kỳ
n  Do đó, cần tách rời bộ nhớ lệnh và bộ

nhớ dữ liệu
n  Sử dụng các bộ chọn kênh để chọn dữ
liệu nguồn cho các lệnh khác nhau

Jan2015 Computer Architecture - MIPS 23


NKK-HUST

Datapath cho các lệnh R-Type/Load/Store

•  ALUSrc: tín hiệu điều khiển chọn toán hạng đưa đến ALU:
•  Lệnh kiểu R: toán hạng từ thanh ghi nguồn thứ hai
•  Lệnh lw/sw: Hằng số imm 16-bit được mở rộng thành 32-bit (tính địa chỉ)
•  MemtoReg: tín hiệu điều khiển chọn dữ liệu đưa về thanh ghi đích:
•  Lệnh kiểu R: lấy kết quả từ ALU result
•  Lệnh lw: dữ liệu đọc (Read data) từ bộ nhớ dữ liệu
Jan2015 Computer Architecture - MIPS 24
NKK-HUST

Datapath đơn giản cho các lệnh R/lw/sw/branch

•  PCSrc: tín hiệu điều khiển chọn giá trị cập nhật PC
•  Không rẽ nhánh: PC ß PC+4
•  Rẽ nhánh: PC ß (PC+4) + (hằng số imm đã mở rộng thành 32-bit << 2)
Jan2015 Computer Architecture - MIPS 25
NKK-HUST

3. Thiết kế Control Unit

n  Đơn vị điều khiển có hai phần:


n  Bộ điều khiển ALU
n  Bộ điều khiển chính

Jan2015 Computer Architecture - MIPS 26


NKK-HUST

Thiết kế bộ điều khiển ALU


n  ALU được sử dụng để:
n  Load/Store: F = add (xác định địa chỉ bộ nhớ dữ liệu)
n  Branch: F = subtract (so sánh)
n  Các lệnh số học/logic : F phụ thuộc vào funct code

ALU control lines Function


0000 AND
0001 OR
0010 add
0110 subtract
0111 set-on-less-than
1100 NOR

Jan2015 Computer Architecture - MIPS 27


NKK-HUST

Tín hiệu điều khiển ALU


n  Bộ điều khiển ALU sử dụng mạch logic tổ hợp:
n  Đầu vào: 2-bit ALUOp được tạo ra từ opcode của
lệnh và 6-bit của function code
n  Đầu ra: các tín hiệu điều khiển ALU (ALU control)
gồm 4 bit
Opcode ALUOp Operation funct ALU function ALU control
lw 00 load word XXXXXX add 0010
sw 00 store word XXXXXX add 0010
beq 01 branch equal XXXXXX subtract 0110
R-type 10 add 100000 add 0010
subtract 100010 subtract 0110
AND 100100 AND 0000
OR 100101 OR 0001
set-on-less-than 101010 set-on-less-than 0111

Jan2015 Computer Architecture - MIPS 28


NKK-HUST

Thiết kế bộ điều khiển chính


n  Các tín hiệu điều khiển được tạo ra từ lệnh
R-type 0 rs rt rd shamt funct
31:26 25:21 20:16 15:11 10:6 5:0

lw/sw 35 or 43 rs rt imm
31:26 25:21 20:16 15:0

beq 4 rs rt imm
31:26 25:21 20:16 15:0

opcode always read, write for sign-extend


read except R-type and add
for load and load

Jan2015 Computer Architecture - MIPS 29


NKK-HUST

Datapath và Control Unit

Jan2015 Computer Architecture - MIPS 30


NKK-HUST

Các tín hiệu điều khiển


Tên tín hiệu Hiệu ứng khi tín hiệu = 0 Hiệu ứng khi tín hiệu = 1
RegDst Số hiệu thanh ghi đích là các Số hiệu thanh ghi đích là các bit 15:11
bit 20:16 (rt) (rd)
Branch Không có lệnh rẽ nhánh beq Có lệnh rẽ nhánh beq
(Branch =1) & (Zero=1): rẽ nhánh xảy
ra
(Branch =1) & (Zero=0): rẽ nhánh
không xảy ra
RegWrite Không làm gì cả Ghi dữ liệu trên đầu vào Write Data ở
tập thanh ghi đến thanh ghi đích
ALUSrc Toán hạng thứ hai của ALU Toán hạng thứ hai của ALU là giá trị 16
lấy từ thanh ghi nguồn thứ bit thấp của lệnh (bits 15:0) được mở
hai (Read data 2) rộng có dấu thành 32-bit
PCSrc PC ß PC+4 PC ß địa chỉ đích

Jan2015 Computer Architecture - MIPS 31


NKK-HUST

Các tín hiệu điều khiển (tiếp)

Tên tín hiệu Hiệu ứng khi tín hiệu = 0 Hiệu ứng khi tín hiệu = 1
MemRead Không làm gì cả Nội dung ngăn nhớ dữ liệu, được xác
định bởi địa chỉ do ALU tính, được đưa
ra đầu ra Read data của bộ nhớ dữ
liệu
MemWrite Không làm gì cả Dữ liệu trên đầu vào Write Data của bộ
nhớ dữ liệu được ghi vào ngăn nhớ có
địa chỉ do ALU tính
MemtoReg Giá trị được đưa đến đầu Giá trị được đưa đến đầu vào Write
vào Write data của tập thanh data của tập thanh ghi là từ bộ nhớ dữ
ghi là từ ALU result liệu

Jan2015 Computer Architecture - MIPS 32


NKK-HUST

Thực hiện lệnh số học/logic kiểu R

Jan2015 Computer Architecture - MIPS 33


NKK-HUST

Thực hiện lệnh Load

Jan2015 Computer Architecture - MIPS 34


NKK-HUST

Thực hiện lệnh beq

Jan2015 Computer Architecture - MIPS 35


NKK-HUST

Thực hiện lệnh Jump


2 address
31:26 25:0

n  Bits 31:26 là mã thao tác = 000010


n  Bits 25:0: phần địa chỉ
n  PC nhận giá trị sau:
n  Địa chỉ đích = PC31…28 : (address << 2)

n  4 bit bên trái là của PC cũ


n  26-bit của lệnh jump (bits 25:0)
n  2 bit cuối là 00
n  Cần thêm tín hiệu điều khiển được giải mã từ
opcode
Jan2015 Computer Architecture - MIPS 36
NKK-HUST

Datapath thêm cho lệnh jump

Jan2015 Computer Architecture - MIPS 37


NKK-HUST

Thiết kế đơn chu kỳ (single-cycle)

n  Chu kỳ xung nhịp có độ dài bằng nhau với tất


cả các lệnh à chu kỳ xung nhịp được xác định
bởi thời gian thực thi lệnh lâu nhất
n  Ví dụ: Lệnh load sử dụng 5 đơn vị chức năng:
Bộ nhớ lệnh → tập thanh ghi → ALU → bộ nhớ
dữ liệu → tập thanh ghi
n  Thời gian thực hiện chương trình tăng à hiệu
năng giảm
n  Chúng ta sẽ tăng hiệu năng bằng kỹ thuật
đường ống lệnh (pipelining)

Jan2015 Computer Architecture - MIPS 38


NKK-HUST

4. Đường ống lệnh ở MIPS


5 công đoạn:
1.  IF: Instruction fetch from memory – Nhận lệnh từ
bộ nhớ
2.  ID: Instruction decode & register read – Giải mã
lệnh và đọc thanh ghi
3.  EX: Execute operation or calculate address – Thực
hiện thao tác hoặc tính toán địa chỉ
4.  MEM: Access memory operand – Truy nhập toán
hạng bộ nhớ
5.  WB: Write result back to register – Ghi kết quả trả
về thanh ghi

Jan2015 Computer Architecture - MIPS 39


NKK-HUST

Hiệu năng của đường ống


n  Giả thiết thời gian cho các công đoạn:
n  100ps với đọc hoặc ghi thanh ghi
n  200ps cho các công đoạn khác
n  Thời gian của datapath đơn chu kỳ với một số
lệnh:

Instr Instr fetch Register ALU op Memory Register Total time


read access write
lw 200ps 100 ps 200ps 200ps 100 ps 800ps
sw 200ps 100 ps 200ps 200ps 700ps
R-format 200ps 100 ps 200ps 100 ps 600ps
beq 200ps 100 ps 200ps 500ps

Jan2015 Computer Architecture - MIPS 40


NKK-HUST

Hiệu năng của đường ống


Single-cycle (Tc= 800ps)

Pipelined (Tc= 200ps)

Jan2015 Computer Architecture - MIPS 41


NKK-HUST

Độ tăng tốc của đường ống

n  Nếu tất cả các công đoạn có thời gian


thực hiện như nhau và số lệnh của
chương trình là lớn:
Thời gian thực hiện pipeline =
Thời gian thực hiện tuần tự
Số công đoạn

Jan2015 Computer Architecture - MIPS 42


NKK-HUST

Thiết kế đường ống lệnh


n  Kiến trúc tập lệnh MIPS được thiết kế phù
hợp với kỹ thuật đường ống
n  Tất cả các lệnh là 32-bits
n  Dễ dàng để nhận và giải mã lệnh trong một chu kỳ
n  Intel x86: lệnh từ 1 đến 17 bytes
n  Có ít dạng lệnh và thông dụng
n  Có thể giải mã và đọc thanh ghi trong một bước
n  Địa chỉ hóa cho các lệnh load/store
n  Có thể tính địa chỉ trong công đoạn thứ 3, truy cập
bộ nhớ công đoạn thứ 4
n  Toán hạng bộ nhớ nằm thẳng hàng trên các
băng nhớ
n  Truy cập bộ nhớ chỉ mất một chu kỳ
Jan2015 Computer Architecture - MIPS 43
NKK-HUST

Các mối trở ngại (Hazard) của đường ống lệnh

n  Hazard: Tình huống ngăn cản bắt đầu


của lệnh tiếp theo ở chu kỳ tiếp theo
n  Hazard cấu trúc: do tài nguyên được yêu
cầu đang bận
n  Hazard dữ liệu: cần phải đợi để lệnh trước
hoàn thành việc đọc/ghi dữ liệu
n  Hazard điều khiển: do rẽ nhánh gây ra

Jan2015 Computer Architecture - MIPS 44


NKK-HUST

Hazard cấu trúc


n  Xung đột khi sử dụng tài nguyên
n  Trong đường ống của MIPS với một bộ
nhớ dùng chung
n  Lệnh Load/store yêu cầu truy cập dữ liệu
n  Nhận lệnh cần trì hoãn cho chu kỳ đó
n  Bởi vậy, datapath kiểu đường ống yêu
cầu bộ nhớ lệnh và bộ nhớ dữ liệu tách
rời (hoặc cache lệnh/cache dữ liệu tách
rời)

Jan2015 Computer Architecture - MIPS 45


NKK-HUST

Hazard dữ liệu
n  Lệnh phụ thuộc vào việc hoàn thành truy
cập dữ liệu của lệnh trước đó
add $s0, $t0, $t1
sub $t2, $s0, $t3

Jan2015 Computer Architecture - MIPS 46


NKK-HUST

Forwarding (gửi vượt trước)

n  Sử dụng kết quả ngay sau khi nó được tính


n  Không đợi đến khi kết quả được lưu đến thanh
ghi
n  Yêu cầu có đường kết nối thêm trong datapath

Jan2015 Computer Architecture - MIPS 47


NKK-HUST

Hazard dữ liệu với lệnh load


n  Không phải luôn luôn có thể tránh trì hoãn
bằng cách forwarding
n  Nếu giá trị chưa được tính khi cần thiết
n  Không thể chuyển ngược thời gian
n  Cần chèn bước trì hoãn (stall hay bubble)

Jan2015 Computer Architecture - MIPS 48


NKK-HUST

Lập lịch mã để tránh trì hoãn


n  Thay đổi trình tự mã để tránh sử dụng kết
quả load ở lệnh tiếp theo
n  Mã C:
a = b + e; c = b + f;
lw $t1, 0($t0) lw $t1, 0($t0)
lw $t2, 4($t0) lw $t2, 4($t0)
stall add $t3, $t1, $t2 lw $t4, 8($t0)
sw $t3, 12($t0) add $t3, $t1, $t2
lw $t4, 8($t0) sw $t3, 12($t0)
stall add $t5, $t1, $t4 add $t5, $t1, $t4
sw $t5, 16($t0) sw $t5, 16($t0)
13 cycles 11 cycles
Jan2015 Computer Architecture - MIPS 49
NKK-HUST

Hazard điều khiển

n  Rẽ nhánh xác định luồng điều khiển


n  Nhận lệnh tiếp theo phụ thuộc vào kết quả
rẽ nhánh
n  Đường ống không thể luôn nhận đúng lệnh

n  Vẫn đang làm ở công đoạn giải mã lệnh (ID)


của lệnh rẽ nhánh
n  Với đường ống của MIPS
n  Cần so sánh thanh ghi và tính địa chỉ đích
sớm trong đường ống
n  Thêm phần cứng để thực hiện việc đó
trong công đoạn ID

Jan2015 Computer Architecture - MIPS 50


NKK-HUST

Trì hoãn khi rẽ nhánh


n  Đợi cho đến khi kết quả rẽ nhánh đã được
xác định trước khi nhận lệnh tiếp theo

Jan2015 Computer Architecture - MIPS 51


NKK-HUST

Dự đoán rẽ nhánh
n  Những đường ống dài hơn không thể
sớm xác định dễ dàng kết quả rẽ nhánh
n  Cách trì hoãn không đáp ứng được
n  Dự đoán kết quả rẽ nhánh
n  Chỉ trì hoãn khi dự đoán là sai
n  Với MIPS
n  Có thể dự đoán rẽ nhánh không xẩy ra
n  Nhận lệnh ngay sau lệnh rẽ nhánh (không

làm trễ)

Jan2015 Computer Architecture - MIPS 52


NKK-HUST

MIPS với dự đoán rẽ nhánh không xẩy ra

Prediction
correct

Prediction
incorrect

Jan2015 Computer Architecture - MIPS 53


NKK-HUST

Đặc điểm của đường ống

n  Kỹ thuật đường ống cải thiện hiệu năng


bằng cách tăng số lệnh thực hiện
n  Thực hiện nhiều lệnh đồng thời
n  Mỗi lệnh có cùng thời gian thực hiện
n  Các dạng hazard:
n  Cấu trúc, dữ liệu, điều khiển
n  Thiết kế tập lệnh ảnh hưởng đến độ phức
tạp của việc thực hiện đường ống

Jan2015 Computer Architecture - MIPS 54


NKK-HUST

MIPS Datapath được ống hóa theo đơn chu kỳ

MEM

WB

Jan2015 Computer Architecture - MIPS 55


NKK-HUST

Nhận xét
n  Các lệnh và các dữ liệu được chuyển từ
trái sang phải qua 5 công đoạn.
n  Có hai ngoại lệ từ phải sang trái:
n  Công đoạn write-back đặt kết quả về thanh
ghi ở giữa datapath à dẫn đến data hazard
n  Chọn giá trị tiếp theo của PC là PC+4 hay địa

chỉ đích rẽ nhánh từ công đoạn MEM à dẫn


đến control hazard

Jan2015 Computer Architecture - MIPS 56


NKK-HUST

Các thanh ghi đường ống


n  Cần các thanh ghi đặt giữa các công đoạn
n  Để giữ thông tin được tạo ra bởi chu kỳ trước

Jan2015 Computer Architecture - MIPS 57


NKK-HUST

Hoạt động của đường ống


n  Dòng lệnh được đưa qua datapath
đường ống theo từng chu kỳ.
n  Có hai cách thực hiện:
n  Đơn chu kỳ (Single-clock-cycle)
n  Đa chu kỳ (Multi-clock-cycle)
n  Xem xét đường ống đơn chu kỳ với
load & store

Jan2015 Computer Architecture - MIPS 58


NKK-HUST

IF cho lệnh Load, Store

Jan2015 Computer Architecture - MIPS 59


NKK-HUST

ID cho lệnh Load, Store

Jan2015 Computer Architecture - MIPS 60


NKK-HUST

EX cho lệnh Load

Jan2015 Computer Architecture - MIPS 61


NKK-HUST

MEM cho lệnh Load

Jan2015 Computer Architecture - MIPS 62


NKK-HUST

WB cho lệnh Load

Wrong
register
number

Jan2015 Computer Architecture - MIPS 63


NKK-HUST

Datapath được hiệu chỉnh cho lệnh Load

Jan2015 Computer Architecture - MIPS 64


NKK-HUST

EX cho lệnh Store

Jan2015 Computer Architecture - MIPS 65


NKK-HUST

MEM cho lệnh Store

Jan2015 Computer Architecture - MIPS 66


NKK-HUST

WB cho lệnh Store

Jan2015 Computer Architecture - MIPS 67


NKK-HUST

Giản đồ đường ống đa chu kỳ


n  Dạng tài nguyên được sử dụng

Jan2015 Computer Architecture - MIPS 68


NKK-HUST

Giản đồ đường ống đa chu kỳ


n  Dạng truyền thống

Jan2015 Computer Architecture - MIPS 69


NKK-HUST

Giản đồ đường ống đơn chu kỳ


n  Công đoạn của đường ống trong chu kỳ đã cho

Jan2015 Computer Architecture - MIPS 70


NKK-HUST

Điều khiển đường ống (dạng đơn giản)

Jan2015 Computer Architecture - MIPS 71


NKK-HUST

Điều khiển đường ống


n  Các tín hiệu điều khiển được tạo ra từ lệnh
n  Như thực hiện đơn chu kỳ

Jan2015 Computer Architecture - MIPS 72


NKK-HUST

Điều khiển đường ống

Jan2015 Computer Architecture - MIPS 73


NKK-HUST

Hết

Jan2015 Computer Architecture - MIPS 74

You might also like