lộ trình dữ liệu – Điều khiển -...

128
BK TP.HCM Computer Architecture Computer Science & Engineering Chương 4 Bộ Xử lý Lộ trình dữ liệu – Điều khiển

Upload: others

Post on 29-Aug-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Computer Architecture Computer Science & Engineering

Chương 4

Bộ Xử lý Lộ trình dữ liệu – Điều khiển

Page 2: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 2

Dẫn nhập

Các yếu tố xác định hiệu xuất Bộ Xử lý Số lệnh (Instruction Count)

Xác định bởi “Kiến trúc tập lệnh” ISA và Trình biên dịch

Số chu kỳ cho mỗi lệnh và thời gian chu kỳ đ/hồ Xác định bằng phần cứng CPU

Đề cập 2 mô hình thực hiện MIPS Phiên bản đơn giản

Phiên bản thực (cơ chế đường ống)

Nhóm các lệnh đơn giản, nhưng đặc trưng: Truy cập bộ nhớ: lw, sw

Số học/luận lý: add, sub, and, or, slt

Nhảy, rẽ nhánh (chuyển điều khiển): beq, j

Page 3: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Các bước thực hiện lệnh

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 3

PC Bộ nhớ chứa lệnh, Nạp lệnh

Đọc nội dung thanh ghi (Register numbers[rs, rt, rd] register file)

Tùy thuộc vào loại lệnh mà

Sử dụng ALU để tính

Phép số học Kết quả

Xác định địa chỉ bộ nhớ (load/store)

Xác định địa chỉ rẽ nhánh

Truy cập dữ liệu bộ nhớ cho lệnh for load/store

PC Địa chỉ lệnh kế or PC + 4

Page 4: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lược đồ thực hiện (CPU)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 4

Page 5: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bộ Multiplexer

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 5

Không thể nối dây trực tiếp lại với nhau

Sử dụng bộ multiplexers

Page 6: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bộ phận Điều khiển

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 6

Page 7: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Nguyên lý thiết kế luận lý

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 7

Biểu diễn thông tin nhị phân

Áp mức thấp = 0, Áp mức cao = 1

Một đường dây cho mỗi bit

Dữ liệu gồm nhiều bit sẽ biểu diễn một tuyến nhiều đường dây

Phần tử tổ hợp

Thực hiện trên dữ liệu

Kết quả đầu ra = hàm(đầu vào)

Phần tử trạng tái (mạch tuần tự)

Lưu được dữ liệu

Page 8: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ví dụ: các phần tử tổ hợp

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 8

Page 9: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Phần tử tuần tự

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 9

Thanh ghi: lưu dữ liệu trong bộ mạch

Sử dụng tín hiệu xung đồng hồ để xác định khi nào cập nhật giá trị lưu trữ

Kích cạnh: đầu ra cập nhật khi xung đồng hồ thay đổi từ 0 lên 1

Clk

D

Q

D

Clk

Q

Page 10: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Phần tử tuần tự (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 10

Thanh ghi với tín hiệu đ/khiển write

Chỉ cập nhật theo cạnh xung khi mức điều khiển write ở mức 1

Sử dụng trong trường hợp lưu cho chu kỳ sau

Write

D

Q

Clk

D

Clk

Q

Write

Page 11: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Phương thức làm việc dựa trên xung

đồng hồ (Clocking Methodology)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 11

Mạch tổ hợp sẽ thay đổi giá trị dữ liệu trong chu kỳ đồng hồ Giữa các cạnh của xung

Trạng thái của phần tử trước Đầu vào của phần tử sau (tức thời)

Độ trễ dài nhất quyết định độ dài chu kỳ

Page 12: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Xây dựng lộ trình dữ liệu

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 12

Lộ trình xử lý Datapath

Các phần tử chức năng xử lý dữ liệu và địa chỉ trong CPU

Registers, ALUs, mux’s, memories, …

Lộ trình sẽ được xây dựng từng bước từ thấp đến cao (đơn giản đến chi tiết)

Chi tiết và cụ thế hóa từng phần, bắt đầu từ Nạp lệnh (Instruction Fetch)

Page 13: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Nạp lệnh (Inst. Fetch)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 13

Page 14: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lệnh dạng R (R-Format)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 14

Đọc 2 toán hạng là thanh ghi

Thực hiện phép Số học/Luận lý

Ghi kết quả vào thanh ghi

Page 15: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lệnh Load/Store

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 15

Đọc toán hạng thanh ghi

Tính địa chỉ của bộ nhớ (16-bit độ dời) Sử dụng ALU, nhưng độ dời phát triển ra 32-bit có

dấu

Nạp (Load): Đọc bộ nhớ & cập nhật thanh ghi

Cất (Store): Ghi giá trị (register) Bộ nhớ

Page 16: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lệnh rẽ nhánh

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 16

Đọc toán hạng (thanh ghi)

So sánh toán hạng

Sử dụng ALU, subtract and check Zero

Tính toán địa chỉ đích

Mở rộng 16 sang 32 bit có dấu (địa chỉ)

Dịch trái 2 vị trí (1 word = 4 bytes)

Cộng PC=PC + 4

Đã được tính tự động khi nạp lệnh

Page 17: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lệnh rẽ nhánh

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 17

Just re-routes wires

Sign-bit wire replicated

Page 18: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Tổng hợp các phần tử

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 18

Lệnh được thực hiện trong 1 chu kỳ xung Clock

Mỗi bộ phận chỉ có thể thực hiện 1 chức năng tại mỗi thời điểm

Vì vậy, phải tách biệt giữa bộ nhớ lệnh và bộ nhớ dữ liệu

Multiplexer được sử dụng tại những nơi mà nguồn dữ liệu khác nhau ứng với lệnh khác nhau

Page 19: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình tổng hợp

(R-Type/Load/Store)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 19

Page 20: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình toàn phần

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 20

Page 21: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bộ điều khiển tín hiệu ALU

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 21

ALU dùng trong những lệnh

Load/Store: F(unction) = add

Branch: F(unction) = subtract

R-type: F phụ thuộc vào hàm (funct)

ALU control Function

0000 AND

0001 OR

0010 add

0110 subtract

0111 set-on-less-than

1100 NOR

Page 22: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bộ điều khiển tín hiệu ALU (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 22

Giả sử 2-bit ALUOp từ opcode của lệnh

Tín hiệu đ/khiển ALU từ mạch tổ hợp như sau:

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

Page 23: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bộ phận điều khiển chính

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 23

Các tín hiệu đ/khiển giải mã từ lệnh

0 rs rt rd shamt funct

31:26 5:0 25:21 20:16 15:11 10:6

35 or 43 rs rt address

31:26 25:21 20:16 15:0

4 rs rt address

31:26 25:21 20:16 15:0

R-type

Load/

Store

Branch

opcode always

read

read,

except

for load

write for

R-type

and load

sign-extend

and add

Page 24: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình với tín hiệu đ/khiển

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 24

Page 25: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lệnh dạng R-Type

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 25

Page 26: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lệnh nạp (Load)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 26

Page 27: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rẽ nhánh với đ/kiện (=)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 27

Page 28: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Thực hiện lệnh Jumps

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 28

Jump sử dụng địa chỉ trong 1 từ (word)

Cập nhật PC bằng cách tổng hợp từ

4 bits cao của thanh ghi cũ PC

26-bit jump address

00

Yêu cầu thêm các tín hiệu đ/khiển giải mã từ opcode

2 address

31:26 25:0

Jump

Page 29: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình với lệnh Jumps

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 29

Page 30: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Vấn đề hiệu xuất

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 30

Trễ tối đa sẽ xác định độ dài chu kỳ đồng hồ Lộ trình dài nhất: lệnh load Instruction memory register file ALU

data memory register file

Không khả thi nếu thay đổi chu kỳ xung theo lệnh khác nhau

Phá vỡ nguyên tắc thiết kế Cái gì phổ biến nhất thực hiện nhanh nhất

Chúng ta sẽ cải thiện hiệu xuất theo cơ chế ống

Page 31: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Giới thiệu: Cơ chế ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 31

Ví dụ thực tế: Quy trình giặt đồ (các bước thực hiện phủ lấp)

Các bước thực hiện đồng thời: cải thiện HS

4 mẻ:

Tăng tốc = 8/3.5 = 2.3

Giặt không ngừng:

Tăng tốc = 2n/0.5n + 1.5 ≈ 4 = số bước/mẻ giặt

Page 32: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Cơ chế ống trong MIPS

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 32

Mỗi lệnh: 5 công đoạn (mỗi bước/công đoạn), đó là

1. IF: Nạp lệnh (Inst. Fetch) từ bộ nhớ

2. ID: Giải mã (Inst. Decode) & đọc th/ghi

3. EX: Thực thi (Ex.) hay tính địa chỉ

4. MEM: Truy cập bộ nhớ

5. WB: Cất kết trở lại th/ghi

Page 33: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Hiệu suất ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 33

Giả sử thời gian thực hiện cho các công đoạn

100ps để đọc hoặc ghi thanh ghi

200ps cho các công đoạn khác

So sánh lộ trình xử lý ống và chu kỳ đơn như bảng dưới đây:

Lệnh Nạp lệnh Đọc

th/ghi

ALU op Truy cập

bộ nhớ

Ghi

th/ghi

Tổng thời

gian

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

Page 34: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Hiệu suất ống (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 34

Page 35: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Tăng tốc của ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 35

Nếu công việc các công đoạn như nhau Ví dụ: có cùng thời gian thực hiện Time between instructionspipelined =

Time between instructionsnonpipelined

Number of stages

Nếu các công đoạn không đều nhau Độ

tăng tốc sẽ ít hơn Độ tăng tốc thể hiện hiệu suất (throughput)

tăng Vì thời gian thực thi cho mỗi lệnh không thay đổi

(giảm)

Page 36: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Cơ chế ống với MIPS ISA

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 36

MIPS ISA được thiết kế với cơ chế ống Tất cả các lệnh 32-bits

Dễ dàng nạp & giải mã trong 1 chu kỳ

Khác với x86: 1- đến 17-bytes/lệnh

Lệnh ít dạng và có quy tắc Giải mã & đọc th/ghi trong 1 chu kỳ

Địa chỉ trong lệnh Load/store Có thể tính trong công đoạn 3, truy cập bộ nhớ

trong công đoạn 4

Các toán hạng bộ nhớ truy cập trong 1 cùng 1 chu kỳ

Page 37: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro (Hazards) trong cơ chế ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 37

Có trường hợp: Lệnh kế tiếp không thể thực hiện trong chu kỳ kế Rủi ro. Tồn tại 3 loại rủi ro:

Rủi ro về cấu trúc (Structure Hazard) Một tài nguyên được yêu cầu, nhưng bận

Rủi ro về dữ liệu Đợi lệnh trước hoàn tất tác vụ đọc/ghi dữ

Rủi ro về điều khiển Quyết định bước tiếp theo phụ thuộc vào

lệnh trước đó

Page 38: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro về cấu trúc

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 38

lw

Inst 1

Inst 2

Inst 4

Inst 3

Đọc dữ liệu từ Bộ nhớ

EX

MEM WB ID IF

EX

MEM WB ID IF

EX

MEM WB ID IF

EX

MEM WB ID IF

EX

MEM WB ID IF

Nạp lệnh bị

ngưng do xung

đột truy cập bộ

nhớ tại chu kỳ

này

Page 39: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro về cấu trúc

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 39

Tranh chấp sử dụng tài nguyên

Trong MIPS, cơ chế ống với 1 loại bộ nhớ

Load/store yêu cầu đọc/ghi dữ liệu

Nạp lệnh sẽ bị “kẹt” trong chu kỳ đó

Trường hợp đó gọi là sự “khựng lại” hay “bong bóng” (bubble)

Vì vậy, trong cơ chế ống lộ trình xử lý lệnh cần tách 2 bộ nhớ riêng biệt (lệnh, data)

ít ra thì 2 vùng cache riêng

Page 40: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro về dữ liệu

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 40

Kết quả truy xuất dữ liệu thuộc lệnh trước ảnh đến lệnh sau

add $s0, $t0, $t1 sub $t2, $s0, $t3

Page 41: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Xúc tiến sớm (Forwarding)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 41

Sử dụng ngay kết quả vừa tính toán xong của lệnh trước

Không cần đợi kết quả cất lại thanh ghi

Cần có thêm kết nối trong lộ trình

Page 42: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro dữ liệu khi dùng Load

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 42

Forwarding không phải lúc nào cũng giải quyết sự “khựng lại” trong ống

Nếu cần kết quả là lệnh truy xuất bộ nhớ cho lệnh kế

Không thể lùi lại!

Page 43: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Khắc phục

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 43

Sắp xếp lại code để tránh sử dụng kết quả của lệnh load trong lệnh kế

C code: A = B + E; C = B + F;

lw $t1, 0($t0)

lw $t2, 4($t0)

add $t3, $t1, $t2

sw $t3, 12($t0)

lw $t4, 8($t0)

add $t5, $t1, $t4

sw $t5, 16($t0)

stall

stall

lw $t1, 0($t0)

lw $t2, 4($t0)

lw $t4, 8($t0)

add $t3, $t1, $t2

sw $t3, 12($t0)

add $t5, $t1, $t4

sw $t5, 16($t0)

11 cycles 13 cycles

Page 44: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro về điều khiển

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 44

Rẽ nhánh thay đổi lộ trình thực hiện Nạp lệnh kế phụ thuộc vào kết quả của

điều kiện rẽ nhánh

Với cơ chế ống: khó xác định đúng Thực hiện trong công đoạn giải mã lệnh

Trong cơ chế ống của MIPS Giá trị các thanh ghi được so sánh & tính

ra địa chỉ đích

Sử dụng thêm phần cứng để thực hiện trong bước giải mã lệnh

Page 45: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Sự “khựng lại” trong rẽ nhánh

26-Jan-15 Khoa Khoa học & Kỹ thuật máy tính 45

Đợi cho đến khi xác định được khi nào sẽ nạp lệnh kế.

Page 46: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Tiên đoán khi có rẽ nhánh

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 46

Đối với ống dài: có thể xác định sớm

Sự “khựng lại” giảm hiệu xuất

Tiên đoán trước

50:50 “Khựng lại”

Trong cơ chế ống MIPS

Có thể tiên đóan

Tự động lấy lệnh kế

Page 47: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ví dụ: Tiên đoán 50:50

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 47

Prediction

correct

Prediction

incorrect

Page 48: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Giải pháp tiên đoán thực tế

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 48

Tiên đoán tĩnh (Static branch prediction)

Dựa trên hành vi rẽ nhánh thường xảy ra

Ví dụ: Vòng lặp với phát biểu if

Tiên đoán sẽ là rẽ nhánh quay lại (backward branches)

Tiên đoán rẽ nhánh xuôi (forward) không xuất hiện

Tiên đoán động (Dynamic branch prediction)

Bộ phận phần cứng sẽ đo đạc hành vi xảy ra

Ví du: lưu lại lịch sử mỗi rẽ nhánh

Giả thiết tương lai từ việc đo đạc

Nếu không đúng, cập nhật lại lịch sử, chấp nhận sự “khựng lại”

Page 49: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Tổng kết về Cơ chế ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 49

Cơ chế ống cải thiện hiệu suất thực hiện lệnh (throughput)

Thực hiện nhiều lệnh cùng lúc

Mỗi lệnh có thời gian thực thi không đổi

Vấn đề nảy sinh: rủi ro

Cấu trúc, dữ liệu , điều khiển

Thiết kế tập lệnh (theo nguyên tắc thiết kế) có thể làm phức tạp quá trình thực thi cơ chế ống

Page 50: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình MIP theo bước (ống)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 50

MEM: rủi ro điều khiển

WB: rủi ro dữ liệu

Dòng từ phải

qua trái

Rủi ro: Dũ

liệu, điều

khiển

Page 51: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Thanh ghi đệm giữa các bước

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 51

Cần có các thanh ghi đệm giữa các công đoạn (bước): lưu t/tin bước trước đó

Page 52: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Hoạt động trong ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 52

Các lệnh sẽ được thực hiện theo luồng trong lộ trình dữ liệu ống (theo từng chu kỳ)

Biểu diễn theo chu kỳ đơn

Thể hiện lệnh/chu kỳ đồng hồ

Tô đậm các tài nguyên sử dụng

Ngược với biểu diễn theo đa chu kỳ

Biểu đồ tác vụ theo thời gian

Chúng ta sẽ quan sát quá trình thực hiện từng bước với lệnh load & store

Page 53: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước Nạp lệnh (Load, Store, …)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 53

Page 54: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước Giả mã lệnh (Load, Store, ..)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 54

Page 55: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước thực hiện lệnh (Load)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 55

Page 56: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước truy cập bộ nhớ (Load)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 56

Page 57: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước ghi thanh ghi (Load)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 57

Wrong register number

Page 58: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình đúng (Load)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 58

Page 59: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước thực hiện (Store)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 59

Page 60: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước ghi MEM (Store)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 60

Page 61: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Bước ghi lên bộ nhớ (Store)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 61

Page 62: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

Biểu đồ ống đa bước (chu kỳ)

“Multiple-Clock-Cycle”

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 62

Page 63: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Biểu đồ ống đa bước (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 63

Cách biểu diễn truyền thống

Page 64: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Biểu đồ ống đơn bước

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 64

“Single-Clock-Cycle”

Trạng thái của ống trong 1 chu kỳ

Page 65: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Điều khiển cơ chế ống (đã đơn giản)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 65

Page 66: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Điều khiển cơ chế ống (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 66

Tín hiệu điều khiển xác lập từ lệnh: thực hiện đơn bước

Page 67: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Điều khiển cơ chế ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 67

Page 68: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro dữ liệu khi

thực hiện lệnh ALU

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 68

Quan sát đoạn code sau:

sub $2, $1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2)

Ta có thể áp dụng phương pháp forwarding để giải quyết rủi ro

Làm thế nào để xác định khi nào forwarding?

Page 69: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Sự ràng buộc & Forwarding

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 69

Page 70: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Phát hiện yêu cầu Forward

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 70

Chuyển Chỉ số thanh ghi theo đường ống Ví dụ: ID/EX.RegisterRs = Chỉ số của Rs trong thanh

ghi ống giai đoạn ID/EX

Chỉ số thanh ghi toán hạng (ALU) trong công đoạn thực hiện (EX) lệnh sẽ là ID/EX.RegisterRs, ID/EX.RegisterRt

Rủi ro dữ liệu xuất hiện khi: 1a. EX/MEM.RegisterRd = ID/EX.RegisterRs

1b. EX/MEM.RegisterRd = ID/EX.RegisterRt

2a. MEM/WB.RegisterRd = ID/EX.RegisterRs

2b. MEM/WB.RegisterRd = ID/EX.RegisterRt

Xúc tiến sớm

từ th/ghi

EX/MEM

Xúc tiến sớm

từ th/ghi

MEM/WB

Page 71: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Phát hiện yêu cầu Forward (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 71

Nhưng chỉ với trường hợp lệnh cần xúc tiến sớm có ghi ra thanh ghi, đó là

EX/MEM.RegWrite, MEM/WB.RegWrite

Và thanh ghi Rd không phải là th/ghi $zero

EX/MEM.RegisterRd ≠ 0, MEM/WB.RegisterRd ≠ 0

Page 72: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình xúc tiến sớm

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 72

Page 73: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Các điều kiện xúc tiến sớm

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 73

EX hazard

if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10

if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10

MEM hazard

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01

Page 74: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro dữ liệu đúp

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 74

Quan sát 3 lệnh dưới đây (Cộng dồn các phần tử của 1 dãy – Vector):

add $1,$1,$2 add $1,$1,$3 add $1,$1,$4

Xảy ra 2 loại Hazards: Ex và MEM

Dùng kết quả mới nhất của $1

Xét lại điều kiện để xúc tiến sớm

Page 75: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Điều kiện xúc tiến sớm xét lại

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 75

MEM hazard

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)

and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)

and (EX/MEM.RegisterRd = ID/EX.RegisterRs))

and (MEM/WB.RegisterRd = ID/EX.RegisterRs))

ForwardA = 01

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)

and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)

and (EX/MEM.RegisterRd = ID/EX.RegisterRt))

and (MEM/WB.RegisterRd = ID/EX.RegisterRt))

ForwardB = 01

Page 76: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình với Forwarding

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 76

Page 77: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro dữ liệu với lệnh Load

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 77

Phải “khựng lại” 1 bước

Page 78: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Phát hiện rủi ro do lệnh Load

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 78

Kiểm tra lệnh trong giai đoạn giải mã (ID)

Thanh ghi toán hạng của lệnh (inputs of ALU): IF/ID.RegisterRs, IF/ID.RegisterRt

Rủi ro khi thực hiện Load nếu ID/EX.MemRead and

((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt))

Nếu phát hiện, thì khựng lại và “nop”

Page 79: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Làm “Khựng lại” ?

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 79

Giữ các giá trị điều khiển thanh ghi trong bước ID/EX bằng 0

EX, MEM & WB thực hiện nop (no-op)

Không cập nhật PC & IF/ID register

Sử dụng lại bước giải mã lệnh

Nạp lệnh tiếp theo lần nữa

1-cyc đủ để đọc dữ liệu từ MEM đối với lw

Can subsequently forward to EX stage

Page 80: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Stall/Bubble in the Pipeline

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 80

Stall inserted here

Page 81: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Stall/Bubble in the Pipeline

26-Jan-15 Faculty of Computer Science & Engineering 81

Or, more accurately…

Page 82: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Lộ trình dữ liệu với bộ phát hiện rủi ro

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 82

Page 83: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Sự “khựng lại” & Hiệu suất

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 83

Sự “Khựng lại” làm giảm hiệu suất

Nhưng cần thiết để cho kết quả đúng

Biên dịch có thể sắp xếp lại trật tự các lệnh sao cho rủi ro và sự “ khựng lại” không xảy ra

Yêu cầu thông tin về cấu trúc thực hiện trong ống

Page 84: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro điều khiển (rẽ nhánh)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 84

Nếu rẽ nhánh được xác định trong bước MEM

PC

Flush these

instructions

(Set control

values to 0)

Page 85: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Giảm độ trễ do thực hiện rẽ nhánh

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 85

Xác định sớm bằng phần cứng ở giai đoạn ID

Bộ cộng địa chỉ đích (Target address adder)

Bộ so sánh thanh ghi (Register comparator)

Ví dụ: Giả thiết rẽ nhánh (branch taken) 36: sub $10, $4, $8 40: beq $1, $3, 7 44: and $12, $2, $5 48: or $13, $2, $6 52: add $14, $4, $2 56: slt $15, $6, $7 ... 72: lw $4, 50($7)

Page 86: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ví dụ: Rẽ nhánh xảy ra

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 86

Page 87: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ví dụ: Rẽ nhánh xảy ra (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 87

Page 88: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro dữ liệu với rẽ nhánh

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 88

Nếu 1 th/ghi của lệnh so sánh là kết quả của 1 lệnh ALU trước đó (2 hay 3 lệnh)

IF ID EX MEM WB

IF ID EX MEM WB

IF ID EX MEM WB

IF ID EX MEM WB

add $4, $5, $6

add $1, $2, $3

beq $1, $4, target

Giải quyết bằng xúc tiếp sớm

Page 89: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro dữ liệu với rẽ nhánh (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 89

Nếu 1 th/ghi của lệnh so sánh là kết quả của lệnh ALU ngay trước đó hoặc lệnh Load trước đó 2 lệnh

Cần 1 bước “khựng lại”

beq stalled

IF ID EX MEM WB

IF ID EX MEM WB

IF ID

ID EX MEM WB

add $4, $5, $6

lw $1, addr

beq $1, $4, target

Page 90: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Rủi ro dữ liệu với rẽ nhánh (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 90

Nếu 1 th/ghi của lệnh so sánh là kết quả của lệnh Load ngay trước đó

Cần 2 bước “Khựng lại”

beq stalled

IF ID EX MEM WB

IF ID

ID

ID EX MEM WB

beq stalled

lw $1, addr

beq $1, $0, target

Page 91: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Tiên đoán động rẽ nhánh

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 91

Ở những ống có nhiều bước, rủi ro điều khiển sẽ làm giảm hiệu xuất đáng kể

Sử dụng phương pháp tiên đoán động

Bộ đệm tiên đoán (Bảng lưu lịch sử quá khứ rẽ nhánh)

Đánh dấu chỉ số các địa chỉ rẽ nhánh

Cất kết quả rẽ nhánh (rẽ/không rẽ=tiếp tục)

Thực hiện rẽ nhánh bằng cách

Kiểm tra bảng lưu: cùng mong đợi

Bắt đầu quy trình nạp (from fall-through or target)

Nếu sai, Xóa lưu ông, cập nhật tiên đoán

Page 92: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

1-Bit Predictor: Shortcoming

26-Jan-15 Faculty of Computer Science & Engineering 92

Inner loop branches mispredicted twice!

outer: … … inner: … … beq …, …, inner … beq …, …, outer

Mispredict as taken on last iteration of inner loop

Then mispredict as not taken on first iteration of inner loop next time around

Page 93: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

2-Bit Predictor

26-Jan-15 Faculty of Computer Science & Engineering 93

Only change prediction on two successive mispredictions

Page 94: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Calculating the Branch Target

26-Jan-15 Faculty of Computer Science & Engineering 94

Even with predictor, still need to calculate the target address

1-cycle penalty for a taken branch

Branch target buffer

Cache of target addresses

Indexed by PC when instruction fetched

If hit and instruction is branch predicted taken, can fetch target immediately

Page 95: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ngoại lệ & Ngắt quãng

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 95

Một sự kiện không mong đợi xảy ra làm cho thay đổi lộ trình thực hiện chương trình

ISA khác nhau sử dụng theo cách khác nhau

Ngoại lệ

Xuất hiện khi CPU thực hiện

Ví dụ: mã lệnh sai, tràn, lệnh gọi …

Ngắt quãng

Bởi thiết bị ngoại vi

Giải quyết mà không làm ảnh hưởng đến hiệu năng vấn đề khó

Page 96: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Xử lý ngoại lệ

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 96

Trong MIP, ngoại lệ được quản lý bởi Bộ xử lý (kết hợp) điều khiển khiển hệ thống (CP0)

Cất PC của lệnh gây ra ngoại lệ (hoặc ngắt) MIPS: Exception Program Counter (EPC)

Cất dấu hiệu vấn đề sinh ra ngoại lệ MIPS: Thanh ghi nguyên nhân

Giả sử 1-bit 0: opcode không tồn tại, 1: tràn

Nhảy đến chương trình xử lý ngoại lệ: tại địa chỉ 8000 00180

Page 97: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Phương thức xử lý ngoại lệ khác

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 97

Bảng (Vectored Interrupts) Địa chỉ mỗi phần tử bảng xác định lý do

ngoại lệ

Ví dụ: Lệnh không tốn tại: C000 0000

Tràn: C000 0020

…: C000 0040

Lệnh xử lý ngoại lệ sẽ là Giải quyết trực tiếp với ngắt

Hoặc nhảy đến c/trình xử lý

Page 98: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Công việc xử lý ngoại lệ

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 98

Xác định nguyên nhân và chuyển đến c/trình xử lý tương ứng

Xác định các việc phải giải quyết

Nếu phải tiếp tục sau khi xử lý Giải quyết vấn đề

Sử dụng EPC để trở về c/trình cũ

Nếu không Kết thúc c/trình

Báo lỗi, sử dụng EPC, nguyên nhân, etc.…

Page 99: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ngoại lệ trong cơ chế ống

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 99

Một dạng khác thuộc rủi ro điều khiển

Giả sử tràn lệnh add trong bước EX add $1, $2, $1

Tránh thay đổi giá trị $1

Hoàn chỉnh lệnh trước đó

Xóa bỏ lệnh add và các lệnh sau

Gán nguyên nhân và giá trị t/ghi EPC

Chuyển điều khiển ch/trình xử lý tràn

Tương tự cho việc rẽ nhánh với địa chỉ tiên đoán: sử dụng lại phần cứng

Page 100: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Cơ chế ống với ngoại lệ

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 100

Page 101: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Exception Properties

26-Jan-15 Faculty of Computer Science & Engineering 101

Restartable exceptions

Pipeline can flush the instruction

Handler executes, then returns to the instruction

Refetched and executed from scratch

PC saved in EPC register

Identifies causing instruction

Actually PC + 4 is saved

Handler must adjust

Page 102: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ví dụ: ngoại lệ

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 102

Ngoại lệ xảy ra tại lệnh add trong đoạn code: 40 sub $11, $2, $4 44 and $12, $2, $5 48 or $13, $2, $6 4C add $1, $2, $1 50 slt $15, $6, $7 54 lw $16, 50($7) …

Xử lý ngoại lệ 80000180 sw $25, 1000($0) 80000184 sw $26, 1004($0) …

Page 103: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ví dụ: Ngoại lệ

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 103

Page 104: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Ví dụ: Ngoại lệ (tt.)

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 104

Page 105: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Đa ngoại lệ

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 105

Nhiều lệnh thực thi phủ lấp nhau trong ống

Dẫn đến xuất hiện ngoại lệ cùng lúc

Phương án đơn giản: Giải quyết ngoại lệ xảy ra đầu tiên

Xóa các lệnh kế tiếp

“Precise” exceptions

Ống phức tạp

Nhiều lệnh trong cùng 1 chu kỳ

Không còn khả năng hoàn tất

Giải quyết ngoại lệ một cách chính xác: khó

Page 106: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Imprecise Exceptions

26-Jan-15 Faculty of Computer Science & Engineering 106

Just stop pipeline and save state

Including exception cause(s)

Let the handler work out

Which instruction(s) had exceptions

Which to complete or flush

May require “manual” completion

Simplifies hardware, but more complex handler software

Not feasible for complex multiple-issue out-of-order pipelines

Page 107: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Instruction-Level Parallelism (ILP)

26-Jan-15 Faculty of Computer Science & Engineering 107

Pipelining: executing multiple instructions in parallel

To increase ILP Deeper pipeline

Less work per stage shorter clock cycle

Multiple issue Replicate pipeline stages multiple pipelines

Start multiple instructions per clock cycle

CPI < 1, so use Instructions Per Cycle (IPC)

E.g., 4GHz 4-way multiple-issue 16 BIPS, peak CPI = 0.25, peak IPC = 4

But dependencies reduce this in practice

Page 108: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Multiple Issue

26-Jan-15 Faculty of Computer Science & Engineering 108

Static multiple issue

Compiler groups instructions to be issued together

Packages them into “issue slots”

Compiler detects and avoids hazards

Dynamic multiple issue

CPU examines instruction stream and chooses instructions to issue each cycle

Compiler can help by reordering instructions

CPU resolves hazards using advanced techniques at runtime

Page 109: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Speculation

26-Jan-15 Faculty of Computer Science & Engineering 109

“Guess” what to do with an instruction

Start operation as soon as possible

Check whether guess was right

If so, complete the operation

If not, roll-back and do the right thing

Common to static and dynamic multiple issue

Examples

Speculate on branch outcome

Roll back if path taken is different

Speculate on load

Roll back if location is updated

Page 110: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Compiler/Hardware Speculation

26-Jan-15 Faculty of Computer Science & Engineering 110

Compiler can reorder instructions

e.g., move load before branch

Can include “fix-up” instructions to recover from incorrect guess

Hardware can look ahead for instructions to execute

Buffer results until it determines they are actually needed

Flush buffers on incorrect speculation

Page 111: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Speculation and Exceptions

26-Jan-15 Faculty of Computer Science & Engineering 111

What if exception occurs on a speculatively executed instruction? e.g., speculative load before null-pointer

check

Static speculation Can add ISA support for deferring

exceptions

Dynamic speculation Can buffer exceptions until instruction

completion (which may not occur)

Page 112: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Static Multiple Issue

26-Jan-15 Faculty of Computer Science & Engineering 112

Compiler groups instructions into “issue packets”

Group of instructions that can be issued on a single cycle

Determined by pipeline resources required

Think of an issue packet as a very long instruction

Specifies multiple concurrent operations

Very Long Instruction Word (VLIW)

Page 113: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Scheduling Static Multiple Issue

26-Jan-15 Faculty of Computer Science & Engineering 113

Compiler must remove some/all hazards

Reorder instructions into issue packets

No dependencies with a packet

Possibly some dependencies between packets

Varies between ISAs; compiler must know!

Pad with nop if necessary

Page 114: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

MIPS with Static Dual Issue

26-Jan-15 Faculty of Computer Science & Engineering 114

Two-issue packets

One ALU/branch instruction

One load/store instruction

64-bit aligned

ALU/branch, then load/store

Pad an unused instruction with nop

Address Instruction type Pipeline Stages

n ALU/branch IF ID EX MEM WB

n + 4 Load/store IF ID EX MEM WB

n + 8 ALU/branch IF ID EX MEM WB

n + 12 Load/store IF ID EX MEM WB

n + 16 ALU/branch IF ID EX MEM WB

n + 20 Load/store IF ID EX MEM WB

Page 115: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

MIPS with Static Dual Issue

26-Jan-15 Faculty of Computer Science & Engineering 115

Page 116: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Hazards in the Dual-Issue MIPS

26-Jan-15 Faculty of Computer Science & Engineering 116

More instructions executing in parallel

EX data hazard

Forwarding avoided stalls with single-issue

Now can’t use ALU result in load/store in same packet add $t0, $s0, $s1 load $s2, 0($t0)

Split into two packets, effectively a stall

Load-use hazard

Still one cycle use latency, but now two instructions

More aggressive scheduling required

Page 117: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Scheduling Example

26-Jan-15 Faculty of Computer Science & Engineering 117

Schedule this for dual-issue MIPS

Loop: lw $t0, 0($s1) # $t0=array element addu $t0, $t0, $s2 # add scalar in $s2 sw $t0, 0($s1) # store result addi $s1, $s1,–4 # decrement pointer bne $s1, $zero, Loop # branch $s1!=0

ALU/branch Load/store cycle

Loop: nop lw $t0, 0($s1) 1

addi $s1, $s1,–4 nop 2

addu $t0, $t0, $s2 nop 3

bne $s1, $zero, Loop sw $t0, 4($s1) 4

IPC = 5/4 = 1.25 (c.f. peak IPC = 2)

Page 118: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Loop Unrolling

26-Jan-15 Faculty of Computer Science & Engineering 118

Replicate loop body to expose more parallelism

Reduces loop-control overhead

Use different registers per replication

Called “register renaming”

Avoid loop-carried “anti-dependencies”

Store followed by a load of the same register

Aka “name dependence”

Reuse of a register name

Page 119: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Loop Unrolling Example

26-Jan-15 Faculty of Computer Science & Engineering 119

IPC = 14/8 = 1.75

Closer to 2, but at cost of registers and code size

Page 120: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Dynamic Multiple Issue

26-Jan-15 Faculty of Computer Science & Engineering 120

“Superscalar” processors

CPU decides whether to issue 0, 1, 2, … each cycle

Avoiding structural and data hazards

Avoids the need for compiler scheduling

Though it may still help

Code semantics ensured by the CPU

Page 121: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Dynamic Pipeline Scheduling

26-Jan-15 Faculty of Computer Science & Engineering 121

Allow the CPU to execute instructions out of order to avoid stalls

But commit result to registers in order

Example

lw $t0, 20($s2) addu $t1, $t0, $t2 sub $s4, $s4, $t3 slti $t5, $s4, 20

Can start sub while addu is waiting for lw

Page 122: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Dynamically Scheduled CPU

26-Jan-15 Faculty of Computer Science & Engineering 122

Reorders buffer for register writes

Can supply operands for issued instructions

Results also sent to any waiting reservation stations

Hold pending operands

Preserves dependencies

Page 123: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Register Renaming

26-Jan-15 Faculty of Computer Science & Engineering 123

Reservation stations and reorder buffer effectively provide register renaming

On instruction issue to reservation station If operand is available in register file or reorder

buffer Copied to reservation station

No longer required in the register; can be overwritten

If operand is not yet available It will be provided to the reservation station by a

function unit

Register update may not be required

Page 124: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Speculation

26-Jan-15 Faculty of Computer Science & Engineering 124

Predict branch and continue issuing

Don’t commit until branch outcome determined

Load speculation

Avoid load and cache miss delay

Predict the effective address

Predict loaded value

Load before completing outstanding stores

Bypass stored values to load unit

Don’t commit load until speculation cleared

Page 125: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Why Do Dynamic Scheduling?

26-Jan-15 Faculty of Computer Science & Engineering 125

Why not just let the compiler schedule code?

Not all stalls are predicable

e.g., cache misses

Can’t always schedule around branches

Branch outcome is dynamically determined

Different implementations of an ISA have different latencies and hazards

Page 126: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Does Multiple Issue Work?

26-Jan-15 Faculty of Computer Science & Engineering 126

Yes, but not as much as we’d like

Programs have real dependencies that limit ILP

Some dependencies are hard to eliminate

e.g., pointer aliasing

Some parallelism is hard to expose

Limited window size during instruction issue

Memory delays and limited bandwidth

Hard to keep pipelines full

Speculation can help if done well

Page 127: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Tiết kiệm năng lượng

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 127

Complexity of dynamic scheduling and speculations requires power

Multiple simpler cores may be better Microprocessor Year Clock Rate Pipeline

Stages

Issue

width

Out-of-order/

Speculation

Cores Power

i486 1989 25MHz 5 1 No 1 5W

Pentium 1993 66MHz 5 2 No 1 10W

Pentium Pro 1997 200MHz 10 3 Yes 1 29W

P4 Willamette 2001 2000MHz 22 3 Yes 1 75W

P4 Prescott 2004 3600MHz 31 3 Yes 1 103W

Core 2006 2930MHz 14 4 Yes 2 75W

UltraSparc III 2003 1950MHz 14 4 No 1 90W

UltraSparc T1 2005 1200MHz 6 1 No 8 70W

Page 128: Lộ trình dữ liệu – Điều khiển - cse.hcmut.edu.vnsonsys/CompArc_MT13KTTN/Bai_Giang/Chuong4.pdf · BK TP.HCM Các bước thực hiện lệnh 26-Jan-15 Khoa Khoa học

BK TP.HCM

Tổng kết

26-Jan-15 Khoa Khoa học & Kỹ thuật Máy tính 128

ISA influences design of datapath and control

Datapath and control influence design of ISA

Pipelining improves instruction throughput using parallelism

More instructions completed per second

Latency for each instruction not reduced

Rủi ro: cấu trúc, dữ liệu, điều khiển

Multiple issue and dynamic scheduling (ILP)

Dependencies limit achievable parallelism

Complexity leads to the power wall