KI N TRÚC MÁY TÍNH

Tu n 10ầ

Ộ Ử

B  X  LÝ  PROCESSOR

Copyrights 2017 CE­UIT. All Rights Reserved. 1 03/2017

Ộ Ử B  X  LÝ

M c đích:

ế ự

ơ

ướ

ü Hi u c  ch  th c thi l nh và các quy

ề c v  thi

ế ế t k

ể logic ́

́

ơ ả

ộ ộ ử ệ ü Thiê t kê  Datapath v i 8 l nh c  b n cho m t b  x   ế ế

ớ lý và cách hi n th c thi

t k  này.

1. Computer Organization and Design: The Hardware/Software Interface, Patterson,

ả ừ Slide tham kh o t :

2. NUS, Singapore

D. A., and J. L. Hennessy, Morgan Kaufman,  Revised Fourth Edition, 2011.

Copyrights 2017 CE­UIT. All Rights Reserved. 2 03/2017

Ộ Ử B  X  LÝ

1. Gi

i thi u

ắ ạ

ướ

ế ế

2. Nh c l

i các quy

c thi

t k  logic

ườ

ữ ệ

ơ

3. Xây d ng đ

ng d  li u (datapath) đ n gi n

ơ

4. Hi n th c datapath đ n chu k

Copyrights 2017 CE­UIT. All Rights Reserved. 3 03/2017

Gi

ệ i thi u

ấ ủ

ượ

ế ố

v Hi u su t c a m t máy tính đ

ở c xác đ nh b i ba y u t

:

p T ng s  câu l nh ố

ệ ổ ượ ị ở     Đ c xác đ nh b i trình biên d ch

ậ ệ ị ế và ki n trúc t p l nh

ượ

p Chu k  xung clock ỳ p S  chu k  xung clock trên m t l nh

ộ ệ ố ỳ ệ ở ị Đ c xác đ nh b i quá  ự ộ ử trình hi n th c b  x  lý

v M c đích chính c a ch

ủ ắ

(Clock cycles per instruction − CPI)

ụ - Gi

ng này: i  thích  quy  t c  ho t  đ ng  và  h ơ

ươ ạ ộ ả

ự ẫ ng  d n  xây  d ng  datapath  cho  m t  b   x   lý

ố ộ ố ệ ướ ế ậ ệ ả ứ ạ ồ ộ ộ ử ch a m t s  l nh đ n gi n (gi ng ki n trúc t p l nh d ng MIPS), g m hai ý chính:

• Thi

ế ế t k  datapath

• Hi n th c datapath đã thi

ự ệ ế ế t k

ồ ừ ữ ế ắ ủ t t

ộ t c a ‘Microprocessor without Interlocked Pipeline Stages’)   ạ ượ ướ ể ở c phát tri n b i MIPS Technologies (tr c

ắ MIPS (b t ngu n t  ch  vi ậ ậ ệ ế là m t ki n trúc t p t p l nh d ng RISC, đ đây là MIPS Computer Systems, Inc.)

Copyrights 2017 CE­UIT. All Rights Reserved. 4 03/2017

Gi

ệ i thi u

ủ ậ ệ

ng  này  ch   xem  xét  8  l nh  trong  3  nhóm  chính  c a  t p  l nh

ươ Ch MIPS:

§

Nhóm l nh tham kh o b  nh  (

ớ lw và sw)

§

ế

Nhóm l nh liên quan đ n logic và s  h c (

ố ọ add, sub, AND, OR, và slt)

§

Nhóm l nh nh y (L nh nh y v i đi u ki n b ng

beq)

Copyrights 2017 CE­UIT. All Rights Reserved. 5 03/2017

Gi

ệ i thi u

ệ ầ T ng quan các l nh c n xem xét: ả ộ ớ Nhóm l nh tham kh o b  nh :

ọ ộ ử ụ N p  l nh ạ ệ   Đ c  m t/hai  thanh  ghi   S   d ng  ALU   Truy  xu t  b   nh   đ   ớ ể ấ ộ

ữ ệ ọ đ c/ghi d  li u

ố ọ

Nhóm l nh logic và s  h c:

ọ ộ ử ụ ữ ệ N p l nh ạ ệ  Đ c m t/hai thanh ghi  S  d ng ALU  Ghi d  li u vào thanh ghi

ệ Nhóm l nh nh y:

ọ ộ ử ụ ỉ ệ ể ị N p l nh ạ ệ  Đ c m t/hai thanh ghi  S  d ng ALU  Chuy n đ n đ a ch  l nh  ế

ự ế ế ả ti p theo d a trên k t qu  so sánh

Copyrights 2017 CE­UIT. All Rights Reserved. 6 03/2017

Gi

ệ i thi u

ộ ộ ử

add, sub, AND, OR,

Hình  nh datapath c a m t b  x  lý v i 8 l nh MIPS:  slt, lw, sw và beq

7 03/2017

Ộ Ử B  X  LÝ

1. Gi

i thi u

ắ ạ

ướ

ế ế

2. Nh c l

i các quy

c thi

t k  logic

ườ

ữ ệ

ơ

3. Xây d ng đ

ng d  li u (datapath) đ n gi n

ơ

4. Hi n th c datapath đ n chu k

Copyrights 2017 CE­UIT. All Rights Reserved. 8 03/2017

ướ

Quy

c thi

ế ế t k

ắ ạ

Ph n này nh c l

i các khái ni m:

ổ ợ

ạ v M ch t

h p (Combinational): ALU

ầ ự

v M ch tu n t

(Sequential): instruction/data memories và thanh ghi

v Tín hi u đi u khi n (Control signal)

v Tín hi u d  li u

ệ ữ ệ  (Data signal)

§

§

m c cao ho c ‘true’ ặ ệ ở ứ

ặ ấ

m c th p ho c ‘false’

§

ệ ở ứ Asserted (assert): Khi tín hi u  Deasserted (deassert): Khi tín hi u  Edge­triggered clocking (Rising/Falling)

v Bus

Copyrights 2017 CE­UIT. All Rights Reserved. 9 03/2017

Ộ Ử B  X  LÝ

1. Gi

i thi u

ắ ạ

ướ

ế ế

2. Nh c l

i các quy

c thi

t k  logic

ườ

ữ ệ

ơ

3. Xây d ng đ

ng d  li u (datapath) đ n gi n

ơ

4. Hi n th c datapath đ n chu k

Copyrights 2017 CE­UIT. All Rights Reserved. 10 03/2017

Quy trình th c thi l nh

ạ ệ

n Instruction Fetch (tìm n p l nh):

ừ ộ

b  nh  (memory)

ớ ư

ỉ ủ ệ Program Counter (PC)

p N p l nh t ạ ệ p Đ a ch  c a l nh l u trong thanh ghi  ị

ệ i mã l nh):

t x e N

n Instruction Decode (gi p Tìm ra l nh th c hi n ệ ệ

n o i t c u r t s n I

Instruct ion Fetch Instruct ion Decode Operan

d Fetch

n Operand Fetch (tìm n p toán

ế

t cho l nh

Execut

e Result Write

ạ h ng): p L y các toán h ng c n thi ấ ự

11 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

n Execute (th c thi): p Th c hi n câu l nh ệ n Result Write (l u tr ): ữ ế

ệ ư ả

ư

p L u tr  k t qu

Quy trình th c thi l nh

ơ ả

n B ng sau mô t

ba giai đo n th c thi l nh trong ba nhóm l nh c  b n

ượ

ả ủ c a MIPS (Giai đo n

ạ Fetch and Decode không đ

ị ể c hi n th )

standard

standard

standard

Fetch &  Decode

o Đ c thanh ghi $1, xem

o Đ c thanh ghi $1, xem

o Đ c thanh ghi $1, xem

opr1

opr1

nh  toán h ng

ọ ư ọ

opr1 nh  toán h ng  ư

Operand  Fetch

nh  toán h ng  o Đ c thanh ghi $2,  ư

ạ o Đ c thanh ghi $2, xem  ạ

ọ ư ọ ư

opr2

nh  toán h ng

ọ ạ ư ử ụ 20 nh  toán  o S  d ng  h ng ạ opr2

xem nh  toán h ng  opr2

Result = opr1 + opr2

o MemAddr = opr1 + opr2 o S  d ng

Execute

Taken =  (opr1 == opr2 )? Target = PC + Label*

ử ụ MemAddr đ  ể ớ ọ ữ ệ ừ ộ đ c d  li u t

b  nh

ữ ệ ủ ừ ớ

ượ ư

c l u tr  vào

ị  nh  có đ a  ượ ượ c  c đ

Result đ $3

if (Taken)     PC = Target

Result  Write

D  li u c a t ch  ỉ MemAddr đ ữ ư l u tr  vào  $3

n

n

opr = Operand

* = simplification, not exact

n MemAddr = Memory Address

add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label

12 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ệ ệ ự ạ t k  các giai đo n th c hi n l nh:

Quy trình th c thi l nh c a MIPS (5 công  đo n)ạ ổ ế ế ả ạ Decode và Operand Fetch – Giai đo n Decode c a MIPS khá đ n gi n

n Thay đ i thi ü G p giai đo n  ü Tách giai đo n ạ Execute thành ALU (Calculation) và Memory Access

add $3, $1, $2

lw $3, 20( $1 )

beq $1, $2, label

ỉ ủ

ỉ ủ

ọ ệ ư

ọ ệ ư

Fetch

ọ ệ ỉ ủ ệ ị Đ c l nh (đ a ch  c a l nh  ư l u trong thanh ghi PC)

Đ c l nh (đ a ch  c a  ệ l nh l u trong thanh ghi  PC)

Đ c l nh (đ a ch  c a  ệ l nh l u trong thanh ghi  PC)

o Đ c thanh ghi $1, xem

o Đ c thanh ghi $1, xem

opr1

nh  toán h ng

toán h ng ạ

opr1 nh  toán h ng  ư

Decode & Operand  Fetch

ạ o Đ c thanh ghi $2, xem  ạ

ọ ư ọ ư

opr2

ư o Đ c thanh ghi $1, xem nh   opr1 ư o Đ c thanh ghi $2, xem nh   opr2

nh  toán h ng

toán h ng ạ

ọ ạ ư ử ụ 20 nh  toán  o S  d ng  h ng ạ opr2

Result = opr1 + opr2

MemAddr = opr1 + opr2

ALU

Taken =  (opr1 == opr2 )? Target = PC + Label*

ể ọ

S  d ng

ử ụ MemAddr đ  đ c

ữ ệ ừ ộ

d  li u t

b  nh

Memory Access

ượ ư

c l u tr  vào

ữ ệ ủ ừ ớ ỉ

nh  có đ a  ượ ượ c đ

ị c

Result đ $3

if (Taken)     PC = Target

ủ ạ ơ ộ

D  li u c a t ch  MemAddr đ ữ ư l u tr  vào   $3 Copyrights 2017 CE­UIT. All Rights Reserved.

Result  Write 03/2017

13

Quy trình th c thi l nh c a MIPS (5 công  đo n)ạ

Fetch

ạ ệ

n Instruction Fetch (N p l nh) n Instruction Decode & Operand

Instruct ion Decode ALU

ế

i mã và l y các toán h ng c n thi

t,

Fetch ả (Gi ọ ắ G i t

ầ t là “Instruction Decode”)

t x e N

n o i t c u r t s n I

ạ ử ụ

n ALU (Giai đo n s  d ng ALU hay giai đo n

th c thi)

Memor y Access Result Write

n Memory Access (Giai đo n truy xu t vùng

nh )ớ

ạ ế

ả ư

i k t qu /l u

n Result Write (Giai đo n ghi l

tr )ữ

14 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Quy trình th c thi l nh c a MIPS (5 công đo n)

Fetch

ạ ệ

n Instruction Fetch (N p l nh) n Instruction Decode & Operand

Instruct ion Decode ALU

ế

i mã và l y các toán h ng c n thi

t,

Fetch ả (Gi ọ ắ G i t

ầ t là “Instruction Decode”)

t x e N

n o i t c u r t s n I

ạ ử ụ

n ALU (Giai đo n s  d ng ALU hay giai đo n

th c thi)

Memor y Access Result Write

n Memory Access (Giai đo n truy xu t vùng

nh )ớ

ạ ế

ả ư

i k t qu /l u

n Result Write (Giai đo n ghi l

tr )ữ

15 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ạ ệ

Giai đo n tìm n p l nh (Instruction Fetch)

ạ ệ

Program Counter (PC) đ  tìm n p

ạ n Giai đo n n p l nh: ử ụ 1. S  d ng thanh ghi  ệ l nh t

ừ b  nhộ ớ

n Thanh ghi PC là m t thanh ghi đ c bi

ộ t trong b  vi x  lý

ị ể ấ

ơ

2. Tăng giá tr  ị trong thanh ghi PC lên 4 đ n v  đ  l y đ a

ế

ch  c a l nh ti p theo

ỉ ệ ẽ

ả jump) là m t ộ

ỉ ủ ệ ế ị ạ n T i sao đ a ch  l nh ti p theo là PC + 4? ệ ệ n Chú ý, l nh r  nhánh ( branch) và l nh nh y ( ợ

ng h p ngo i l

ế ạ

ạ ệ ạ n K t qu  c a giai đo n này là đ u vào cho giai  Decode):

ủ ệ ự ạ

ườ tr ả ủ ế đo n ti p theo ( ỗ ả ủ ế K t qu  c a giai đo n này là 32 bit mã máy c a l nh c n th c thi. Chu i 32  bits này s  s  d ng nh  đ u vào (input) cho giai đo n ti p theo là Decode

ẽ ử ụ ầ ế ư ầ ạ

16 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ạ ệ

Giai đo n tìm n p l nh (Instruction Fetch)

ộ ộ B  c ng

Add

4

PC

Read address

Instruction

Instruction

Instruction memory

D e c o d e   S t a g e

Thanh ghi  PC

ớ ư

ữ Vùng nh  l u tr   l nhệ

17 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Kh i ố Instruction Memory

Instruction Address

Instruction

ị ộ

ng

ỉ ủ ệ ệ là n i dung l nh t ỉ ượ

ữ ệ   ớ ư n Vùng nh  l u tr  l nh ầ là đ a ch  c a l nh n Đ u vào:  ươ ầ n Đ u ra:  ấ ớ ị ng v i đ a ch  đ c cung c p

Instruction Memory

Instruction Memory

……….. add $3, $1, $2

2048

sll $4, $3, 2

2052

ế ủ ộ

ớ ố

ư ắ Cách s p x p c a b  nh  gi ng nh   hình bên ph iả 

………..

2056 andi $1, $4, 0xF ……

18 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ộ ộ B  c ng

ế ợ

ộ ộ

ể ộ

n M ch logic k t h p đ  c ng 2 s  ­ b  c ng

A

n Đ u vào:

A+B

Sum

A, B

Add

B

ầ p Hai s  32­bit  ố ầ n Đ u ra:  p A + B

19 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ề ệ ử ụ

Ý ni m v  vi c s  d ng xung clock

ườ

ư

ượ ọ

n D ng nh  thanh ghi PC đ

c đ c và c p nh t

ư ế

ạ ộ

cùng lúc: p PC ho t đ ng chính xác nh  th  nào?

n Magic of clock:

ượ ọ

c đ c trong n a clock đ u và c p nh t thành PC+4

p PC đ

ế

ạ trong l n ầ kích c nh lên ti p theo

Add

4

Time

PC

Read address

Clk

In

Instruction

100

104

108

112

PC

Instruction memory

In

104

108

112

116

20 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Quy trình th c thi l nh c a MIPS (5 công  đo n)ạ

Fetch

ạ ệ

n Instruction Fetch (N p l nh) n Instruction Decode & Operand

Instruct ion Decode ALU

ế

i mã và l y các toán h ng c n thi

t,

Fetch ả (Gi ọ ắ g i t

t là “Instruction Decode”)

t x e N

n o i t c u r t s n I

ạ ử ụ

n ALU (Giai đo n s  d ng ALU hay giai đo n

th c thi)

Memor y Access Result Write

n Memory Access (Giai đo n truy xu t vùng

nh )ớ

ạ ế

ả ư

i k t qu /l u

n Result Write (Giai đo n ghi l

tr )ữ

21 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

i mã (

Giai đo n gi

Decode)

ạ n Giai đo n decode:  ộ

ữ ệ

ườ

L y n i dung d  li u trong các tr

ng (field) c a

ấ l nh:ệ

ể ệ

ủ ừ

ng trong mã máy

tr

ế t

1. Đ c ọ opcode đ  xác đ nh ki u l nh và chi u dài c a t ng

ườ ọ ữ ệ ừ ể n Có th  2 (l nh

2. Đ c d  li u t ệ

các thanh ghi c n thi ặ add), 1 (l nh ệ addi) ho c 0 (l nh

j)

c (

ướ Fetch):

giai đo n tr ư

ầ ừ n Đ u vào t ầ ượ ệ L nh c n đ

c th c thi (Mã máy)

Execute):

ế Copyrights 2017 CE­UIT. All Rights Reserved.

ầ n Đ u ra cho giai đo n ti p theo ( 03/2017 ế t Phép tính và các toán h ng c n thi

22

i mã (

Giai đo n gi

Decode)

Register  Number

Data

5

Read register 1

Read data 1

5

Inst.

Read register 2

Operands

Register File

5

Write register

F e t c h S t a g e

Read data 2

E x e c u t e   S t a g e

Write data

ợ ủ ứ ậ Kh i ch a t p h p c a  ọ các thanh ghi, g i là  Register file Ho c ặ Registers

23 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Kh i ố Register File

thanh ghi:

ể ượ ọ

c đ c ho c

ỉ ố ủ

ộ ậ n M t t p 32  p M i thanh ghi có chi u dài 32 bit và có th  đ ề ỗ ghi b ng cách ch  ra ch  s  c a thanh ghi

ằ ỗ ệ

ấ ừ

ề đ c nhi u nh t t

ỗ ệ

p V i m i l nh, cho phép  p V i m i l nh, cho phép

ghi vào nhi u nh t

2 thanh ghi ấ 1 thanh ghi

ệ n RegWrite: là m t tín hi u đi u khi n nh m m c đích:

ể p Cho phép ghi vào m t thanh ghi hay không ộ p 1(True) = Write,  0 (False) = No Write

5

Read register 1

Read data 1

5

Register  Number

Read register 2

Data

Register File

5

Write register

Read data 2

Data

Write data

RegWrite

24 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Gi

i mã: l nh

ệ R­Type

add $8, $9, $10

Inst [25:21]

5

Read register 1

Read data 1

ủ ộ N i dung c a  thanh ghi $9

5

Ins t [20:16]

Read register 2

Register File

5

rs

Write register

01001

01010

01000

100000

ộ ủ

[ 1 5 : 1 1 ] 00000

25:21

rt 20:16

rd 15:11

funct 5:0

shamt   10:6 I n s t

Read data 2

N i dung c a  thanh ghi $10

Write data

RegWrite

Ký hi u: ệ Inst[Y:X]  ớ ỗ = chu i bit t

i Y trong

ừ  X t l nhệ

ị ầ ế K t qu /giá tr  c n  ư l u vào thanh ghi  ẽ ượ ở c sinh ra    (s  đ ạ giai đo n sau)

25 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Gi

i mã: l nh

I­Type

lw $21, -50($22)

Inst [25:21]

5

ộ ủ

opcode 31:26

rs 25:21

rt 20:16

Read register 1

Read data 1

N i dung c a  thanh ghi $22

5

Ins t [20:16]

Read register 2

Register File

5

Write register

10110

10101

1111 1111 1100 1110

[ 1 5 : 1 1 ]

I n s t

Read data 2

Write data

RegWrite

1 5 : 0

I m m e d i a t e

ề V n đ :

Thanh ghi đích $21 “đ t không đúng v  trí”

26 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Gi

i pháp cho ngõ “Write

i mã:  Gi register”

lw $21, -50($22)

Inst [25:21]

5

opcode 31:26

rs 25:21

rt 20:16

Read register 1

Read data 1

5

In s t   [ 2 0: 16]

Read register 2

Register File

5

Write register

10110

10101

1111 1111 1100 1110

Read data 2

Write data

Inst [15:11]

M U X

Gi

1 5 : 0

RegDst

ượ

ẽ ỉ ố i pháp (cho ch  s  thanh ghi s   c ghi):

I m m e d i a t e

ử ụ ọ

đ ộ multiplexer  đ  l a  ể ự write

S  d ng m t  ch n ch  s  thanh ghi cho ngõ

ạ ệ

ỉ ố register chính xác d aự trên t ng lo i l nh

ệ ể

RegDst: ọ ề Tín hi u đi u khi n ch n ể ư Inst[20:16] hay [15:11] đ  đ a  vào ngõ write register

27 03/2017

Multiplexer (MUX)

ứ n Ch c năng:

ừ ậ

p Ch n m t input t

t p input

ầ đ u vào

Control

m

n

in0

ề ộ

Inputs:  ườ p n đ

ng vào có cùng chi u r ng

out

. . .

inn­1

bit trong đó n = 2m

n Control:  p C n mầ

Control=0  select in0 Control=3  select in3

ọ ườ

ế

n Output:  p Ch n đ

ng input th  i n u giá tr  tín hi u đi u khi n control = i

M U X

28 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Gi

i mã:

gi

i pháp cho ngõ “Data 2”

lw $21, -50($22)

Inst [25:21]

5

opcode 31:26

rs 25:21

rt 20:16

Read register 1

Read data 1

5

In s t   [ 2 0: 16]

Read register 2

Register File

5

Write register

10110

10101

1111 1111 1100 1110

Read data 2

Write data

Inst [15:11]

M U X

M U X

RegWrite

1 5 : 0

RegDst

I m m e d i a t e

ALUSrc

32

Inst [15:0]

16

Sign  Extend

ị ủ

đ

ữ ệ

Gi

ng d  li u data 2) ạ

ử ụ S  d ng m t

ALUSrc: ề ệ Tín hi u đi u  ể ọ khi n đ  ch n  “Read data 2” hay  giá tr  c a  Inst[15:0] (đã  ở ộ ượ c m  r ng có  ấ d u) cho toán  ạ h ng th  hai

ả i pháp (cho đ ứ ộ multiplexer đ  ch n chính xác toán h ng th

ở ộ ờ ố

ườ ể ọ 2. ố ứ Sign extend: kh i m  r ng s  t c th i 16 bit thành 32 bit

29 03/2017

Copyrights 2017 CE­UIT.  All Rights Reserved.

Gi

i mã: L nh Load Word

Inst [25:21]

5

opcode 31:26

rs 25:21

rt 20:16

Read register 1

Read data 1

5

In s t   [ 2 0: 16]

Read register 2

Register File

5

Write register

10110

10101

1111 1111 1100 1110

Read data 2

Write data

Inst [15:11]

M U X

M U X

RegWrite

1 5 : 0

RegDst

I m m e d i a t e

ALUSrc

Inst [15:0]

32

16

Sign  Extend

q Ví d  v i l nh: “ ụ ớ ệ ả ầ

sw $21, -50($22)" ầ

– Có c n ph i thay đ i thành ph n nào?

30 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Gi

i mã:

ả  L nh nhánh/nh y

n Ví d : "ụ beq $9, $0, 3" ế

ả ẽ

ế

ạ ủ

ế ấ

ầ lúc ! ả

ü C n tính k t qu  r  nhánh và đích đ n cùng m t

i quy t v n đ  này trong giai đo n c a ALU

ü Gi

Inst [25:21]

5

opcode 31:26

rs 25:21

rt 20:16

Read register 1

Read data 1

5

In s t   [ 2 0: 16]

Read register 2

Register File

5

Write register

01001

00000

0000 0000 0000 0011

Read data 2

Write data

Inst [15:11]

M U X

M U X

RegWrite

1 5 : 0

RegDst

I m m e d i a t e

ALUSrc

Inst [15:0]

32

16

Sign  Extend

31 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Gi

ế ổ i mã: t ng k t

Inst [25:21]

5

Read register 1

Operand 1

Read data 1

5

I n s t   [ 2 0 : 16]

Read register 2

Registers

5

Write register

Inst[31:0]

Read data 2

Write data

Inst [15:11]

M U X

M U X

Operand 2

RegWrite

RegDst

ALUSrc

Inst [15:0]

32

16

Sign  Extend

32 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Quy trình th c thi l nh c a MIPS (5 công  đo n)ạ

Fetch

ạ ệ

n Instruction Fetch (N p l nh) n Instruction Decode & Operand

Instruct ion Decode ALU

ế

i mã và l y các toán h ng c n thi

t,

Fetch ả (Gi ọ ắ G i t

ầ t là “Instruction Decode”)

t x e N

n o i t c u r t s n I

ạ ử ụ

n ALU (Giai đo n s  d ng ALU hay giai đo n

th c thi)

Memor y Access Result Write

n Memory Access (Giai đo n truy xu t vùng

nh )ớ

ạ ế

ả ư

i k t qu /l u

n Result Write (Giai đo n ghi l

tr )ữ

33 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ạ Công đo n ALU

n Công đo n ALU:

ượ

ủ ế

c hi n ch  y u

ệ trong giai đo n này

ố ọ

ụ add, sub), Logic (ví d : ụ and, or): ALU

ế

§ S  h c (Arithmetic) (ví d :  tính ra k t qu  cu i cùng

ả ố ệ ớ ộ § L nh làm vi c v i b  nh  (ví d :

ụ lw, sw): ALU dùng tính toán đ a ị

§ L nh nh y/nhánh (ví d :

ự ụ bne, beq): ALU th c hi n so sánh các giá

ệ ỉ ủ ộ ch  c a b  nh ả ệ ị

ệ ả ớ tr  trên thanh ghi và tính toán đ a ch  đích s  nh y t

i

n Đ u vào t

công đo n tr

c (

ướ Decode): ạ

ầ ü Các thao tác (operation) và toán h ng (operand(s))

ü ALU = Arithmetic­Logic Unit ü Công vi c th t s  c a h u h t các l nh đ ậ ự ủ ầ ế ạ

ế

34 Copyrights 2017 CE­UIT. All Rights Reserved.

Memory):

ế

03/2017 ầ n Đ u ra cho công đo n ti p theo (

ố ớ ệ

ả ủ

ế

(Đ i v i l nh lw và sw: K t qu  c a công đo n này s  là đ a

ể ấ ữ ệ

ch  cung c p cho memory đ  l y d  li u)

ü Tính toán k t qu

ạ Công đo n ALU

ALU result

Operands

ALU

D e c o d e   S t a g e

M e m o r y   S t a g e

ố ự

ạ Kh i m ch th c  ệ hi n các phép toán  ố ọ logic và s  h c

35 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Kh i ố ALU (Arithmetic Logical Unit)

ALUcontrol

4

n ALU (Arithmetic­logical unit)

A

(A op B) == 0?

ể ự

ü Kh i dùng đ  th c hi n các phép tính

isZero?

ALU

ố ọ logic và s  h c

ALU result

B

n

Inputs:  ü 2 s  32­bit ố

A op B

ALUcontrol

Function

AND

0000

OR

0001

add

0010

ứ ị

ề ế

subtract

0110

ể n Đi u khi n kh i ALU:  ệ ể ụ ể

slt

0111

ố ü Do ALU có th  th c hi n nhi u ch c  ể ự năng    dùng  4­bit  đ   quy t  đ nh  ứ ch c  năng/phép  toán  c   th   nào  cho  ALU

NOR

1100

n Outputs:

ố ọ

ả ủ

ü K t qu  c a phép toán s  h c ho c

ế logic

36 03/2017

ể ỉ

ế

ü M t bit tín hi u đ  ch  ra r ng k t

qu  có b ng 0 hay không

Copyrights 2017 CE­UIT.  All Rights Reserved.

non­branch

Công đo n ALU: các l nh

ế ố

ư ALU nh  hình:

n Các l nh không nhánh/nh y (non­branch) k t n i  add $8, $9, $10

Inst [25:21]

5

ALUcontrol 4

Read register 1

Read data 1

5

In s t   [ 2 0: 16]

isZero?

Read register 2

ALU

Register File

rs

Write register

01001

01010

01000

00000

5 100000

ALU result

rt 20:16

rd 15:11

shamt 10:6

25:21

Read data 2

Write data

Inst [15:11]

funct M 5:0 U X

M U X

RegWrite

RegDst

ALUSrc

Inst [15:0]

32

16

Sign  Extend

Thi

ALUcontrol: ị ế ậ t l p giá tr  cho  ầ ử ụ

ườ

ALUcontrol c n s  d ng  tr

ng opcode và funct

37 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Branch

Công đo n ALU: Các l nh

ơ n L nh r  nhánh thì khó h n vì ph i tính toán hai phép

ệ toán:

ả ẽ

ế

n Ví d : "ụ beq $9, $0, 3" 1. K t qu  r  nhánh:

ể ể

ấ ằ

ể ử ụ ü S  d ng ALU đ  so sánh thanh ghi ệ isZero?“  đ  ki m tra tính ch t b ng/không b ng ü Tín hi u 1­bit "

2. Đ a ch  đích c a nhánh:

Fetch Stage)

ỉ ử ụ ầ ầ

ủ ị ộ ộ ộ ü- S  d ng m t b  c ng đ  tính đ a ch ủ ü- C n n i dung c a thanh ghi PC (t  Decode Stage) ü- C n Offset (t

38 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Datapath vi  công đon ALU hoàn chnhớạỉ

Add

PC

4

Add

M U X

Left Shift  2­bit

PCSrc

PCSrc: ề ệ Tín  hi u  đi u  ể ể ự khi n  đ   l a  ọ ch n gi a  ho c ặ (PC+4)  ỉ ị đ a  ch   đích  mà  l nh ệ ẽ nhánh/nh y  s   ả ớ i nh y t

ALUcontrol

r s 2 5 : 2 1

r t 2 0 : 1 6

Inst [25:21]

5

4

Read register 1

Read data 1

o p c o d e 3 1 : 2 6

5

In s t   [ 2 0: 16]

isZero?

Read register 2

Register File

ALU

5

Write register

ALU result

Read data 2

0 1 0 0 1

0 0 0 0 0

0 0 0 1 0 0

Write data

Inst [15:11]

M U X

M U X

RegWrite

RegDst

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1

ALUSrc

Inst [15:0]

32

16

Sign  Extend

: 0

1 5

a te

d i

m e

I m

Ví d : "ụ beq $9, $0, 3"

03/2017 39

Quy trình th c thi l nh c a MIPS (5 công  đo n)ạ

Fetch

ạ ệ

n Instruction Fetch (N p l nh) n Instruction Decode & Operand

Instruct ion Decode ALU

ế

i mã và l y các toán h ng c n thi

t,

Fetch ả (Gi ọ ắ G i t

ầ t là “Instruction Decode”)

t x e N

n o i t c u r t s n I

ạ ử ụ

n ALU (Giai đo n s  d ng ALU hay giai đo n

th c thi)

Memor y Access Result Write

n Memory Access (Giai đo n truy xu t vùng

nh )ớ

ạ ế

ả ư

i k t qu /l u

n Result Write (Giai đo n ghi l

tr )ữ

40 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ớ n Giai đo n truy xu t vùng nh :

Giai đo n truy xu t vùng nh  (Memory  stage) ạ ü Ch  có l nh

Load và Store c n th c hi n các thao tác trong

ạ  giai đo n ALU

c tính toán

ớ ượ ữ ệ

ệ ạ giai đo n này: ị ử ụ ọ ữ ệ ệ

ớ ữ ệ ạ

giai đo n tr

c (

ớ ế

ỉ c dùng làm đ a ch  vùng nh  (n u có

Result Write):

ả ượ ư

ế

§ S  d ng đ a ch  vùng nh  đ § Đ c d  li u ra ho c ghi d  li u vào vùng nh  d  li u ü T t c  các l nh khác s  r nh trong giai đo n này ẽ ả ấ ả ướ ALU): ạ ừ ầ n Đ u vào t ü K t qu  tính toán đ ượ ả ế ể ứ th   ng d ng) ầ ü K t qu  đ

ế n Đ u ra cho giai đo n ti p theo ( ế ầ ữ ạ i (n u c n)

ạ c l u tr  l

41 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Giai đo n truy xu t vùng nh  (Memory  stage)

MemWrite

Address

Result

Read  Data

Write  Data

A L U S t a g e

Data Memory

R e s u l t   S t o r e   S t a g e

MemRead

ữ ữ ớ ư B  nh  l u tr  d   li uệ

42 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Kh i ố Data Memory

ữ ữ ệ ầ

ế ủ

ư n Vùng nh  này l u tr  d  li u c n thi

t c a

ươ

ớ ng trình

n

MemWrite

Address

ữ ệ ẽ ượ

c ghi vào vùng

Read  Data

ch Inputs:  ü Address: Đ a ch  vùng nh ị ü Write Data: D  li u s  đ nh  đ i v i l nh Store

Write  Data

Data Memory

ớ ố ớ ệ ề ệ

n Tín hi u đi u khi n:  ệ

MemRead

ệ ượ ậ

c b t

ạ ấ

ể ü Tín hi u đ c (MemRead ) và ghi  ỉ ộ (MemWrite); ch  m t tín hi u đ ờ ộ i b t kì m t th i đi m nào lên t

n Output:

ớ ố ớ

c đ c t

vùng nh  đ i v i

ü D  li u đ ữ ệ ượ ọ ừ ệ l nh Load

43 03/2017

Copyrights 2017 CE­UIT.  All Rights Reserved.

Giai đo n Memory: l nh

Load

ỉ ữ

ế

n Ch  nh ng ph n liên quan đ n Decode & ALU Stage

ượ

ầ c trình bày

đ

lw $21, -50($22)

ALUcontrol

r s 2 5 : 2 1

r t 2 0 : 1 6

Inst [25:21]

4

5

RR1

RD1

o p c o d e 3 1 : 2 6

5

RR2

MemWrite

In s t   [ 2 0: 16]

ALU

Registers

5

WR

10110

1111 1111 1100 1110

Address

ALU result

RD2

WD

Inst [15:11]

Data Memory

M U X

M U X

RegWrite

Read  Data

RegDst

Write  Data

0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 10101 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1

ALUSrc

Inst [15:0]

32

16

MemRead

Sign  Extend

: 0

1 5

a te

d i

m e

I m

44 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Giai đo n Memory: l nh

Store

ể ư

Write Data

sw $21, -50($22)

ALUcontrol

r t 2 0 : 1 6

r s 2 5 : 2 1

Inst [25:21]

4

5

RR1

RD1

n C n ầ Read Data 2 (Decode) đ  đ a vào  o p c o d e 3 1 : 2 6

5

RR2

MemWrite

In s t   [ 2 0: 16]

Registers

ALU

5

WR

10110

1111 1111 1100 1110

Address

ALU result

RD2

WD

Inst [15:11]

Data Memory

M U X

M U X

RegWrite

Read  Data

Write  Data

0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 10101 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1

Inst [15:0]

32

RegDst 16

MemRead

Sign  Extend

: 0

1 5

a te

d i

m e

I m

45 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Giai đo n Memory: l nh không truy xu t vùng  nhớ

ử ụ

ả ư

ế

ể ự n S  d ng thêm m t multiplexer đ  l a ch n k t qu  l u tr  vào thanh

ghi

add $8, $9, $10

ALUcontrol

Inst [25:21]

4

5

RR1

RD1

MemWrite

5

RR2

In s t   [ 2 0: 16]

Registers

ALU

WR

rs

01001

01010

01000

00000

5 100000

Address

ALU result

rt 20:16

rd 15:11

shamt 10:6

25:21

RD2

WD

Data Memory

funct M 5:0 U X

Inst [15:11]

M U X

RegWrite

Read  Data

Write  Data

Inst [15:0]

32

RegDst 16

M U X

Sign  Extend

MemRead

MemToReg

MemToReg: ự ọ ể ề Tín hi u đi u khi n giúp l a ch n  ừ  Read  giá tr  l u vào thanh ghi là t 46  ALU result

ệ ị ư Data hay t

Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

Quy trình th c thi l nh c a MIPS (5 công đo n)

Fetch

ạ ệ

n Instruction Fetch (N p l nh) n Instruction Decode & Operand

Instruct ion Decode ALU

ế

i mã và l y các toán h ng c n thi

t,

Fetch ả (Gi ọ ắ G i t

ầ t là “Instruction Decode”)

t x e N

n o i t c u r t s n I

ạ ử ụ

n ALU (Giai đo n s  d ng ALU hay giai đo n

th c thi)

Memor y Access Result Write

n Memory Access (Giai đo n truy xu t vùng

nh )ớ

ạ ế

ả ư

i k t qu /l u

n Result Write (Giai đo n ghi l

tr )ữ

47 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ạ ư

ữ ế

Giai đo n l u tr  k t qu  (Result Write)

n Công đo n Result Write: ả ủ

ạ ệ

ế

§ Ví d : s  h c, logic, shifts, load, set­less­than § C n ch  s  thanh ghi đích và k t qu  tính toán

ụ ố ọ ỉ ố ệ

ả ế ả ư

ế

ü Nh ng l nh ghi k t qu  c a các phép toán vào thanh ghi:

ả § Không có ghi k t quế ẽ ả ệ  Nh ng l nh này s  r nh trong giai đo n này

giai đo n tr

ừ n Đ u vào t ả ế

ướ Memory): ặ

ầ ü K t qu  tính toán ho c là t

c ( ừ  Memory ho c là t

ALU

ü Nh ng l nh không ghi k t qu  nh : store, branch, jump:

48 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ạ ư

ữ ế

Giai đo n l u tr  k t qu  (Result Write)

5

Read register 1

Read data 1

5

Read register 2

Registers

5

Write register

Read data 2

M e m o r y   S t a g e

Result

Write data

ấ ỳ

n Công đo n Result Write không có thêm b t k  thành

ph n nào khác: ü Ch  đ n gi n đ a k t qu  vào thanh ghi (ngõ Write data  ỉ ơ

ả ư ế ủ c a kh i Registers/Register file)

ượ

c ghi vào (ngõ vào

Write

ượ

c sinh ra trong giai đo n

ố ỉ ố ủ Register) đ

ạ Decode Stage

ü Ch  s  c a thanh ghi đ

49 Copyrights 2017 CE­UIT. All Rights Reserved. 03/2017

ạ ư

ữ ế

Giai đo n l u tr  k t qu  (Result Write)

add $8, $9, $10

ALUcontrol

Inst [25:21]

4

5

RR1

RD1

MemWrite

5

RR2

In s t   [ 2 0: 16]

Registers

ALU

WR

rs

01001

01010

01000

00000

5 100000

Address

ALU result

rt 20:16

rd 15:11

shamt 10:6

25:21

RD2

MemToReg

WD

Data Memory

funct M 5:0 U X

Inst [15:11]

M U X

RegWrite

Read  Data

Write  Data

Inst [15:0]

M U X

Sign  Extend

MemRead

50 03/2017

Copyrights 2017 CE­UIT.  All Rights Reserved.

ể ề ư ề ể ể ệ ố (Ch a có kh i Control đ  đi u khi n các tín hi u đi u khi n)

Datapath hoàn chnhỉ

Instruction Memory

Add

PC

4

Instruction

Add

M U X

Address

Left Shift  2­bit

PCSrc

ALUcontrol

Inst [25:21]

4

5

RR1

RD1

5

is0?

MemWrite

RR2

In s t   [ 2 0: 16]

ALU

Registers

ALUSrc

WR

rs

01001

01010

01000

00000

5 100000

Address

ALU result

rt 20:16

rd 15:11

shamt 10:6

25:21

RD2

MemToReg

WD

Inst [15:11]

Data Memory

funct M 5:0 U X

M U X

RegWrite

Read  Data

RegDst

Write  Data

Inst [15:0]

M U X

Sign  Extend

MemRead

03/2017 51 Copyrights 2017 CE­UIT.

All Rights Reserved.

Ộ Ử B  X  LÝ

ế

ơ

t k  datapath đ n gi n cho

ế ế ơ ả ủ

ổ T ng k t: ộ ầ Ph n này trình bày m t cách thi ệ ộ ử b  x  lý 32 bits, v i 8 l nh c  b n c a MIPS:

• add, sub, and, or, slt

• lw, sw

• beq

ơ ả

ộ ộ ử

ế ố ớ

ố ố ớ ả

V i  kh i  ch c  năng  c   b n  trong  m t  b   x   lý  (t p  thanh  ghi, kh i ALU, kh i Control, thanh ghi PC, thanh ghi IR) và  ể ẽ ượ ộ b   nh   chính,  các  kh i  này  s   đ c  k t  n i  v i  nhau  đ   ư ả đ m b o th c thi đúng 8 l nh nh  trên.

52

03/2017

Copyrights 2017 CE­UIT.  All Rights Reserved.

Ộ Ử B  X  LÝ

ế

ả ọ v Lý thuy t: Đ c sách tham kh o

• M c: 4.1, 4.2, 4.3

Sách: Computer Organization and Design:  The Hardware/Software Interface,  Patterson, D. A., and J. L. Hennessy,  Morgan Kaufman,  Revised Fourth Edition,  2011.

v Bài t p: ậ file đính kèm

03/2017

Copyrights 2017 CE­UIT. All Rights Reserved.

53