1. Trang chủ
  2. » Công Nghệ Thông Tin

KIẾN TRÚC CÁC HỆ THỐNG TÍNH TOÁN - CHƯƠNG 2 potx

110 346 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kỹ thuật pipelining trong các hệ thống tính toán
Tác giả Nguyễn Phú Bình, Trần Trung Kien
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Kỹ thuật Máy tính
Thể loại Chương 2
Thành phố Hà Nội
Định dạng
Số trang 110
Dung lượng 7,01 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tổng kết về kiến trúc tập lệnh  Ưu điểm của kiến trúc Load/Store:  Truy cập thanh ghi nhanh hơn so với truy cập bộ nhớ  Số bit dùng để đặt tên cho thanh ghi ít hơn so với số bit để đ

Trang 2

Lưu ý của tác giả

 Không được tự ý sao chép hay quảng bá bài giảng này khi chưa được sự đồng ý của các tác giả.

 Địa chỉ liên hệ của các tác giả:

Nguyễn Phú Bình

Email: ngphubinh@yahoo.com Mobile: 0983533925

Website: http://phubinh.vicosoft.com/ktmt

Trần Trung Kiên

Email: trankien_bk@yahoo.com Mobile: 0914919392

Bộ môn Kỹ thuật Máy tính

Khoa Công nghệ Thông tin Trường Đại học Bách Khoa Hà Nội C1- P322, Tel: 8696125

Website: http://ktmt.shorturl.com

Trang 3

Nguyễn Phú Bình – Trần Trung Kiên

Bộ môn Kỹ thuật Máy tính, Khoa Công nghệ Thông tin

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

Trang 4

Chương 2

I Kỹ thuật pipelining đối với Scalar

Processor (bộ xử lý vô hướng) ®

II Kỹ thuật pipelining đối với Vector Processor (bộ xử lý kiểu vector)

Trang 5

I.Pipelining đối với Scalar Processor

0 Một số kiến thức cơ bản

1 Pipelining trong kiến trúc DLX

2 Vấn đề về hiệu năng đối với

pipelining

3 Các "xung đột" trong kỹ thuật

pipelining

Trang 8

Kiến trúc tập lệnh, tập lệnh, lệnh

 Khuôn dạng của một lệnh máy:

 Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu

được để thực hiện một thao tác xác định

 Mã thao tác: (Operation Code) mã hóa cho thao tác mà CPU phải thực hiện vd:ADD, MULT,

 Tham chiếu toán hạng: mã hóa cho toán hạng hoặc nơi chưa toán hạng mà thao tác sẽ tác động.

Mã thao tác Tham chiếu toán hạng

Trang 9

Phân loại kiến trúc tập lệnh

 Phân loại theo các cách lưu trữ toán hạng:

 Kiến trúc Stack: Toán hạng được lưu trữ tại đỉnh của Stack

 Kiến trúc Accumulator: Toán hạng là các thanh chứa

 Kiến trúc general-purpose register (GPR): Các toán hạng là các thanh ghi hoặc ô nhớ (Còn gọi tắt làkiến trúc Register):

Trang 10

Phân loại kiến trúc tập lệnh

C = A + B

Load A ADD B Store C

Trang 11

Kiến trúc Stack

Trang 12

Kiến trúc Stack

Trang 13

Kiến trúc Stack

Trang 14

Kiến trúc Stack

Trang 15

Kiến trúc Stack

Trang 16

Kiến trúc Accumulator

Trang 17

Kiến trúc Accumulator

Trang 18

Kiến trúc Accumulator

Trang 19

Kiến trúc Accumulator

Trang 21

Kiến trúc Register-Memmory

Trang 22

Kiến trúc Register-Memmory

Trang 23

Kiến trúc Register-Memmory

Trang 24

Kiến trúc Register-Memmory

Trang 25

Kiến trúc Memory-Memory

Trang 26

Kiến trúc Register-Register(Load/Store)

Trang 27

Kiến trúc Register-Register(Load/Store)

Trang 28

Kiến trúc Register-Register(Load/Store)

Trang 29

Kiến trúc Register-Register(Load/Store)

Trang 30

Kiến trúc Register-Register(Load/Store)

Trang 32

Tổng kết về kiến trúc tập lệnh

Kiến trúc nào là tốt nhất???

Trang 33

thường dùng trong các máy tính thời ký đầu

 Tất cả các máy tính trong khoảng 10 năm trở lại

đây đều chế tạo theo kiến trúc GPR Và các máy tình hiện nay theo kiểu Register-Register

(Load/Store)

Trang 34

Tổng kết về kiến trúc tập lệnh

 Ưu điểm của kiến trúc Load/Store:

 Truy cập thanh ghi nhanh hơn so với truy cập bộ nhớ

 Số bit dùng để đặt tên cho thanh ghi ít hơn so với số bit

để đặt tên cho ô nhớ

 Viêc sử dụng thanh ghi cho phép trình biên dịch

(compiler) tối ưu hóa việc thực hiện lệnh (do có thể

không cần thực hiện theo trình tự các lệnh)

 Các thanh ghi có thể lưư được tất cả các biến của đoạn code các thao tác nhanh hơn.

Trang 36

I.Pipelining đối với Scalar Processor

0 Một số kiến thức cơ bản

1 Pipelining trong kiến trúc DLX

2 Vấn đề về hiệu năng đối với

pipelining

3 Các "xung đột" trong kỹ thuật

pipelining

Trang 38

Pipelining là gi?

 Pipelinning : Chia chu trình lệnh thành các công

đoạn và cho phép thực hiện gối lên nhau theo kiểu dây chuyền

 Các đoạn đó được gọi là pipe stage hay pipe

segment

Pipe Instruction

Stage n

… Stage2

Stage1

Trang 39

Pipelining là gi?

 Trong pipelining,Throughput là khái niệm để chỉ số

pipeline lệnh được hệ thống thực hiện trong một

đơn vị thời gian

 Pipelining không làm rút ngắn được thời gian để

thực hiện một lệnh nhưng nó làm tăng throughputcủa hệ thống

 Giả sử 1 lệnh được chia làm 4 phần như sau:

Nhận lệnh (Fetch), Giải mã lệnh(Decode), Thực

hiện (Execute), ghi kết quả (Writing results)

Trang 40

Pipelining là gi?

Trang 41

Pipelining là gi?

 Thời gian để hoàn thành một pipe stage của một lệnh được gọi là 1 chu kỳ máy ( a machine cycle)

 Thời gian của một chu kỳ máy bằng với thời gian

thực hiện 1 pipe stage dài nhất

Trang 42

Pipelining là gi?

 Một trong những nhiệm vụ khi thiết kế các hệ thống dùng kỹ thuật pipelining là phải cần bằng độ dài

giữa các pipe stage

 Lý tưởng nhất, thời gian trung bình để thực hiện

các lệnh trong hệ thống sử dụng pipelie là:

Thời gian thực hiện lệnh đó trên máy ko sử dụng pipeline

Số pipe stage

Trang 44

Kiến trúc DLX

 DLX (Deluxe) là kiến trúc tập lệnh do

Hennessy và Patterson gi ới thiệu ®

 Dùng kiến trúc lệnh kiểu Load/Store

 Được thiết kế phù hợp để sử dụng

pipelining

 RISC Oriented ( Hướng RISC-Reduced

instruction set computer)

Trang 45

Kiến trúc DLX

 Tập các thanh ghi:

 32 thanh ghi thông dụng (general-purpose register,GPR)

32 bit được đặt tên từ R0 đến R31

 32 thanh ghi dấu chấm động (Floating Point Register

FPR), F0…F30.

 Ngoài ra còn một số thanh ghi đặc biệt có thể dùng như các thanh ghi số nguyên

 Các kiểu dữ liệu :

 Số nguyên: 8bit, 16 bit, 32 bit

 Số dấu chấm động: 32 bit, 64 bit

 Hoạt động theo chế độ 32 bit®

Trang 46

Kiến trúc DLX

 Bộ nhớ:

 Định địa chỉ theo byte nhớ

 Lưu trữ theo kiểu đầu to (Big Endian mode)

 Định địa chỉ toán hạng theo hai chế độ:

-Immediate (toán hạng nguồn là hằng số:Add

Trang 48

Kiến trúc DLX

 Ví dụ về các thao tác Load/Store:

Regs[F0] <-32 Mem [50+Regs[R3]]

Load float

LF F0,50(R3)

Regs[R1] <-32 Mem [40+Regs[R3]])

Load Byte

LB R1,40(R3)

[30+ Regs [R2 ]]

Load word

LW R1,30(R2)

Trang 49

Kiến trúc DLX

 Ví dụ về các thao tác của ALU:

if (Regs[R2]<Regs[R3]) Regs[R1] <- 1

else Regs[R1] <- 0

Set less than SLT R1, R2, R3

Regs[R1] <- Regs[R2] + 3 Add

immediateADDI R1, R2, #3

Regs[R1] <- Regs[R2] + Regs[R3]

Add ADD R1, R2, R3

Trang 52

Kiến trúc DLX

 Ví dụ về lệnh I-type:

Rd = MEM[Rs1 + extend(immediate)]

0x23 load woRd

LW

Rd = Rs1 &

immediate

0x0c and immediate

ANDI

Rd = Rs1 + extend(immediate)

0x08 add immediate

ADDI

Thao tác thực hiện

Mã thao tác

Mô tả câu lệnh Câu lệnh

Trang 53

Kiến trúc DLX

 Đối với các lệnh I-type rẽ nhánh: Chỉ sử dụng Rs1

và Imm, Rd không cần quan tâm tới Rd:

 Rs1: dùng để kiểm tra điều kiện

 PC<-PC + Imm

PC += (Rs1 != 0 ? extend(immediate) : 0)

0x05

branch if not equal

to zero BNEZ

PC+=(Rs1==0?

extend (immediate): 0)

0x04

branch if equal to zero

BEQZ

Thao tác thực hiện

Mã thao tác

Mô tả câu lệnh Câu lệnh

Trang 55

Kiến trúc DLX

 Khuôn dạng lệnh R-type:

 Opcode: mã thao tác

 Rs1, Rs2: là 2 thanh ghi toán hạng nguồn

 Rd: thanh ghi toán hạng đích

 Rd <- Rs1 op Rs2

Trang 56

Rd = (Rs1 == Rs2 ?

1 : 0)

0x28 set if equal

SEQ

Rd = Rs1 + Rs2 0x20

add ADD

Thao tác thực hiện

Mã thao tác

Mô tả câu lệnh Câu lệnh

Trang 57

Thao tác thực hiện

Mã thao tác

Mô tả câu lệnh Câu lệnh

Trang 58

Kiến trúc DLX

 Thực thi lệnh trong kiến trúc DLX:

 Lấy lệnh (Instruction fetch,IF)

 Giải mã lệnh (Instruction decode, ID)

 Thực hiện lệnh (Execution, EX)

 Truy cập bộ nhớ (Memory, MEM)

 Ghi kết quả ( Write-back, WB)

Trang 59

Kiến trúc DLX

Trang 61

Pipelining trong kiến trúc DLX

 Mỗi một chu kỳ đồng hồ, bắt đầu thực hiện một

lệnh mới ®

Trang 62

Pipelining trong kiến trúc DLX

IM: Instr

Mem DM: Data

Mem CC: Cycle

Clock

Trang 63

Pipelining trong kiến trúc DLX

 Sau mỗi chu kỳ đồng hồ, các đơn vị chức năng của CPU thực hiện một phần lệnh của các lệnh khác

nhau

 Dữ liệu phải được chuyển từ pipe stage này sang piepe stage tiếp theo

 Cần có các thanh ghi lưu giá trị của các biến gọi

là pipe register / pipe latchs

Trang 64

Pipelining trong kiến trúc DLX

Trang 65

I.Pipelining đối với Scalar Processor

0 Một số kiến thức cơ bản

1 Pipelining trong kiến trúc DLX

2 Vấn đề về hiệu năng đối với

pipelining

3 Các "xung đột" trong kỹ thuật

pipelining

Trang 66

2 Vấn đề về hiệu năng đối với pipelining

 Kỹ thuật pipelining làm tăng throughput của hệ thống (tăng thời gian trung bình để thực hiện 1 lệnh bằng cách thực

hiện các lệnh gối lên nhau chứ không làm tăng thời gian

thực hiện từng lệnh riêng biệt)

 Các yếu tố ảnh hưởng tới hiệu năng khi sử dụng

pipeline:

 Thời gian cho mỗi pipe stage là bằng nhau và bằng thời gian của pipe stage dài nhất

 Thời gian quá độ (pipe overhead) xảy ra khi tín hiệu

clock được gửi tới đồng thời nhiều thành phần của hệ

thống (clock skew)

Thời gian thực hiện 1 lệnh pipe line= pipe stage dài

nhất*số pipeline stage + pipe overhead.

Trang 67

2 Vấn đề về hiệu năng đối với pipelining

 Bài tập:

 Một máy tính không dùng pipelining: Mỗi lệnh

gồm 6 đoạn, thời gian thực hiện mỗi đoạn lần

lượt là 50ns, 50ns, 60ns, 60ns, 50ns, 50ns

 Thực hiện kỹ thuật pipelining trên máy tính đó,

giả sử pipe overload là 5ns

 Hỏi: Tốc độ tăng lên bao nhiêu khi thực hiện 10 lệnh, 100 lệnh, 10.000 lệnh?

Trang 68

I.Pipelining đối với Scalar Processor

0 Một số kiến thức cơ bản

1 Pipelining trong kiến trúc DLX

2 Vấn đề về hiệu năng đối với

pipelining

3 Các xung đột trong kỹ thuật

pipelining

Trang 69

Các xung đột trong kỹ thuật pipelining

 Các xung đột (hazard) trong khi thực hiện

pipelining là hiện tượng hệ thống có các lỗi xảy ra

và làm cho pipe stage (1 phần của lệnh kiểu

pipeline) tiếp theo không được thực hiện trong chu

kỳ đồng hồ kế tiếp

 Có 3 loại xung đột:

 xung đột cấu trúc (Structural hazard)

 xung đột dữ liệu (Data hazard)

 xung đột điều khiển (Control hazard)

Trang 70

Xung đột cấu trúc

 Là hiện tượng tranh chấp tài nguyên giữa các đơn

vị /khối chức năng (functional units)

 Nguyên nhân:

 Các đơn vị chức năng không được tổ chức để hỗ trợ

pipeline một cách đầy đủ Vì vậy chuỗi các thành phần của các lệnh không thể được thực hiện trong cùng một chu kỳ đồng hồ.

 Không có đủ các tài nguyên

Trang 71

xung đột cấu trúc (…)

 VD: Khi thực hiện pipelining trên một máy đơn bộ nhớ sẽ

có thể dẫn tới hiện tượng tranh chấp bộ nhớ giữa MEM

stage của lệnh này với IF stage của lệnh sau đó

WB

7 6

5 4

3 2

1

WB

MEM

EX ID

IF

Load

MEM EX

ID

IF Instr3

WB MEM

EX ID

IF

Instr2

WB MEM

EX ID

IF

Instr1

CLOCK

Trang 72

Xung đột cấu trúc (…)

Trang 74

Instr3

Buble

Buble Buble

Buble Buble

Stall

7 6

5 4

3 2

1

WB

MEM

EX ID

Trang 75

Stall Instr3

7 6

5 4

3 2

1

WB

MEM

EX ID

IF

Instr1

CLOCK

Trang 76

Xung đột dữ liệu

 Xung đột dữ liệu xảy ra khi: các lệnh sau sử dụng

kết quả của lệnh được thực hiện trước đó

 Vd: trong khi đó giai đoạn WB (ghi kết quả trở lại thanh ghi) của lệnh trước chưa kết thúc thì giai

đoạn ID (gồm có đọc dữ liệu từ thanh ghi) của lệnh sau đã bắt đầu

 VD:

Trang 77

Xung đột dữ liệu (…)

 VD ®

Trang 78

 All the instructions after the ADD use the result of the ADD instruction (in R1) The ADD instruction writes the value of R1 in the WB stage (shown black), and the SUB instruction reads the value during ID stage (IDsub) This problem is

called a data hazard Unless precautions are taken to prevent it, the SUB

instruction will read the wrong value and try to use it

 The AND instruction is also affected by this data hazard The write of R1 does not complete until the end of cycle 5 (shown black) Thus, the AND instruction that reads the registers during cycle 4 (IDand) will receive the wrong result

 The OR instruction can be made to operate without incurring a hazard by a

simple implementation technique The technique is to perform register file reads

in the second half of the cycle, and writes in the first half Because both WB for ADD and IDor for OR are performed in one cycle 5, the write to register file by ADD will perform in the first half of the cycle, and the read of registers by OR will perform in the second half of the cycle

 The XOR instruction operates properly, because its register read occur in cycle

6 after the register write by ADD.

Trang 79

Xung đột dữ liệu (…)

Trang 80

Xung đột dữ liệu (…)

 Cách khắc phục:

Cách 1: Chèn thêm một thành phần trễ vào pipeline, gọi

là “pipeline interlock”, đây là một thành phần mở rộng

của phần cứng Nó làm nhiệm vụ phát hiện sự phụ thuộc

dữ liệu giữa các câu lệnh và làm trễ những câu lệnh phụ thuộc đó, cho đến khi giải quyết được xung đột

Trang 82

Xung đột dữ liệu (…)

 VD: Xử lý xung đột dùng interclock:

 Xung đột dữ liệu:

Trang 83

Xung đột dữ liệu (…)

•The LW instruction does not have the data until the end of clock cycle 4 (MEM) , while the SUB instruction needs to have the data by the begining of that clock cycle (EXsub)

•For AND instruction we can forward the result immediately to the ALU (EXand) from the MEM/WB register(MEM)

•OR instruction has no problem, since it receives the value through the register file (ID) In clock cycle no 5, the WB of the LW instruction occurs "early" in first half of the cycle and the register read of the OR instruction occurs "late" in the second half

of the cycle

•For SUB instruction, the forwarded result would arrive too late - at the end of a

clock cycle, when needed at the begining.

Trang 84

Khắc phục xung đột dùng interclock

Trang 85

Khắc phục xung đột dùng interclock

Trang 86

phát hiện sự phụ thuộc giữa dữ liệu với các câu

lệnh, và sắp xếp lại các câu lệnh đó sao cho hết

xung đột Nếu không sắp xếp được, thì nó sẽ chèn thêm các lệnh NOP (no operation) vào chương

trình để làm trễ

Trang 87

EX ID

IF I4

WB MEM

EX WB

WB I3

WB MEM

EX

ID

IF I2

WB

MEM EX

ID IF

I1

8 7

6 5

4 3

2 1

Trang 88

EX ID

IF I2

WB MEM

EX WB

WB I4

WB MEM

EX ID

IF I3

WB MEM

EX ID

IF I1

8 7

6 5

4 3

2 1

Trang 89

Khắc phục xung đột dữ liệu

 Trong những kiến trúc như ngày nay:

Các lệnh phụ thuộc được kiểm tra bởi phần mềm lúc biên dịch (kiểm tra tĩnh - static)

Hoặc:

Được kiểm tra bởi phần cứng khi lệnh được thực thi (kiểm tra động - dynamic)

Trang 90

Khắc phục xung đột dữ liệu

 Có những phụ thuộc không thể xác định được

trong lúc biên dịch, chỉ đến khi chạy chương trình thì mới phát hiện được Cần kỹ thuật sử dụng

phần cứng

Ví dụ:

Khi thực hiện chương trình thì các câu lệnh mới

được nạp vào bộ nhớ, khi đó mới biết được địa chỉcủa chúng trong bộ nhớ, và khi đó mới có thể giải quyết được vấn đề bằng kỹ thuật kiểm tra động

Trang 91

Khắc phục xung đột dữ liệu

 Kỹ thuật kiểm tra động sẽ bổ sung cho những

trường hợp mà kỹ thuật kiểm tra tĩnh không giải

Trang 92

Khắc phục xung đột dữ liệu

Hai phương pháp kiểm tra động thông dụng:

 Phương pháp của Tomasulo

 Phương pháp bảng ghi điểm (Scoreboard)

Trang 93

Khắc phục xung đột dữ liệu:Tomasulo

 Phương pháp của Tomasulo:

Mỗi thanh ghi có 1 bit cờ “busy” và 1 thẻ (tag)

 Busy: =1 khi thanh ghi đang được sử dụng

=0 khi thanh ghi nhàn rỗi

 Tag: nhận biết đơn vị tính toán nào sẽ ghi kết quả vào thanh ghi đó (Thời gian để ghi vào tag là rất ngắn, coi như bằng 0)

Trang 95

Khắc phục xung đột dữ liệu:Tomasulo

CDB (Common Data Bus):

 Kết nối tất cả đầu vào, đầu ra của các đơn vị tính toán và các thanh ghi với nhau

 Tạo ra khả năng các đơn vị tính toán có thể

nhận trực tiếp kết quả từ một thao tác nào đó màkhông cần phải thông qua thanh ghi

 Nói tóm lại, kỹ thuật này cho phép lệnh hiện thời

có thể nhận trực tiếp kết quả của lệnh trước,

trước khi kết quả của lệnh trước được ghi ra

thanh ghi đầu ra

Trang 96

Khắc phục xung đột dữ liệu:Tomasulo

 VD: Xung đột dữ liệu

Trang 97

Khắc phục xung đột dữ liệu:Tomasulo

Trang 99

Khắc phục xung đột dữ liệu:Tomasulo

Trang 100

Khắc phục xung đột dữ liệu:Scoredboard

 Phương pháp Scoreboard (bảng ghi điểm):

 “Scoreboard” là một cơ chế phần cứng dùng để quản lý thông tin trạng thái của các câu lệnh, thanh ghi, và đơn vị

functional unit status,

destination register status.

Trang 101

Khắc phục xung đột dữ liệu:Scoredboard

 Bảng instruction status:

 Lưu trữ trạng thái các câu lệnh,

 Nó cho biết một lệnh nào đó đã được bắt đầu thực hiện hay chưa (issued)

Nếu trạng thái 1 lệnh là đang được thực hiện thì bảng

này sẽ cho biết lệnh đó đang ở giai đoạn nào

 Một lệnh sẽ được issued nếu như đơn vị xử lý còn rỗi và thanh ghi đầu ra chưa bị sử dụng.

Ngày đăng: 09/08/2014, 12:22

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm