1 of 28

�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

2 of 28

Mục tiêu Bài 3

  • Thiết kế phần cứng cho một câu lệnh cụ thể đối với một bộ xử lý MIPS single-cycle có tập lệnh đơn giản

Học kỳ 2 2010-2011

Tổ chức máy tính

3 of 28

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

4 of 28

Sự việc bắt đầu từ đâu?

  • Từ một thanh ghi: program counter (PC).
  • PC chứa địa chỉ của lệnh kế tiếp cần phải thực hiện.
  • Đầu tiên, PC chứa địa chỉ của vị trí nhớ bắt đầu chương trình.

Học kỳ 2 2010-2011

Tổ chức máy tính

5 of 28

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

6 of 28

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ớ

7 of 28

Datapath và Control

  • Datapath: Bộ nhớ, Các thanh ghi, Các bộ cộng, ALU, và các bus thông tin. Mỗi bước (Lấy lệnh, giải mã, thực hiện, lưu kết quả) cần truyền dữ liệu giữa bộ nhớ, các thanh ghi và ALU.
  • Control: Datapath cho mỗi bước được duy trì bới các tín hiệu điều khiển . Các tín hiệu điều khiển được tạo ra từ đơn vị control nhằm chỉ hướng truyền dữ liệu trên bus thông tin và chỉ định chức năng cho ALU và bộ nhớ

Học kỳ 2 2010-2011

Tổ chức máy tính

8 of 28

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

9 of 28

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

10 of 28

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

11 of 28

Các lệnh kiểu R

  • Các lệnh số học và logic
  • add, sub, slt
  • Ví dụ: add $t0, $s1, $s2
    • Mã máy của lệnh
    • 000000 10001 10010 01000 00000 100000
    • Opcode $s1 $s2 $t0 function
    • Đọc 2 thanh ghi từ File thanh ghi
    • Ghi kết quả vào 1 thanh ghi
    • Opcodefunction đi tới Control để tạo ra tín hiệu RegWrite và các tín hiệu chọn phép toán cho ALU

Học kỳ 2 2010-2011

Tổ chức máy tính

12 of 28

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

  • 000000 10001 10010 01000 00000 100000 opcode $s1 $s2 $t0 function (add)

13 of 28

Load và Store

  • Các lệnh kiểu I
  • lw $t0, 1200 ($t1)

100011 01001 01000 0000 0100 1011 0000

opcode $t1 $t0 1200

  • sw $t0, 1200 ($t1)

101011 01001 01000 0000 0100 1011 0000

opcode $t1 $t0 1200

Học kỳ 2 2010-2011

Tổ chức máy tính

14 of 28

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

15 of 28

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

16 of 28

Lệnh rẽ nhánh (kiểu I)

  • beq $s1, $s2, 25 # nếu $s1 = $s2, PC bỏ qua 25 lệnh

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.

17 of 28

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

18 of 28

Lệnh J (kiểu J)

  • j 2500 # nhảy đến lệnh tại 10000

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

19 of 28

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

20 of 28

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

21 of 28

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

22 of 28

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

23 of 28

Thời gian cho một lệnh?

  • Giả sử control hoạt động đủ nhanh thì thời gian dành cho một lệnh chủ yếu là thời gian làm việc của ALU, thời gian đọc/ghi bộ nhớ và thời gian đọc/ghi thanh ghi.
  • Lệnh số học (kiểu R)
      • Lấy lệnh (đọc bộ nhớ) 2ns
      • Đọc thanh ghi 1ns
      • Hoạt động của ALU 2ns
      • Ghi thanh ghi 1ns
      • Tổng cộng 6ns

Học kỳ 2 2010-2011

Tổ chức máy tính

24 of 28

Thời gian cho lw và sw (Kiểu I)

  • Lệnh số học (kiểu R) 6ns
  • Load word (kiểu I)
    • Lấy lệnh (đọc bộ nhớ) 2ns
    • Đọc thanh ghi 1ns
    • Hoạt động ALU 2ns
    • Lấy dữ liệu (đọc bộ nhớ ) 2ns
    • Ghi thanh ghi 1ns
    • Tổng cộng 8ns
  • Store word (không ghi thanh ghi) 7ns

Học kỳ 2 2010-2011

Tổ chức máy tính

25 of 28

Thời gian cho beq (Kiểu I)

  • Số học (R) 6ns
  • Load word (I) 8ns
  • Store word (I) 7ns
  • Branch on equal (I)
    • Lấy lệnh (đọc bộ nhớ) 2ns
    • Đọc thanh ghi 1ns
    • Hoạt động ALU 2ns
    • Tổng cộng 5ns

Học kỳ 2 2010-2011

Tổ chức máy tính

26 of 28

Thời gian cho Jump (Kiểu J)

  • Số học (R) 6ns
  • Load word (I) 8ns
  • Store word (I) 7ns
  • Branch on equal (I) 5ns
  • Jump (J):
    • Lấy lệnh (đọc bộ nhớ) 2ns
    • Tổng cộng 2ns

Học kỳ 2 2010-2011

Tổ chức máy tính

27 of 28

Chu kỳ đồng hồ phải bằng ?

  • Nếu mọi lệnh phải được thực hiện trong một chu kỳ đồng hồ thì:
    • Chu kỳ đồng hồ ít nhất phải bằng 8ns để có thể hoàn tất lệnh lâu nhất là lệnh lw.
    • Đây gọi là bộ xử lý Single-Cycle.
    • Các lệnh khác cũng tốn chừng ấy thời gian.
  • Phương pháp tăng tốc: Bộ xử lý Multicycle và Pipelining.

Học kỳ 2 2010-2011

Tổ chức máy tính

28 of 28

Tóm tắt

  • Để có thể thiết kế datapath và control cần phải biết khuôn dạng (kiểu) của các câu lệnh: R, I, J
  • Tất cả các lệnh của một bộ xử lý Single-Cycle đều được thực hiện trong một chu kỳ đồng hồ (mặc dù thời gian cần thiết có thể bé hơn)

Học kỳ 2 2010-2011

Tổ chức máy tính