1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế bộ xử lí theo vi kiến trúc OoO

68 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

Trong khóa luận tốt nghiệp nay, chúng em sẽ trình bay van dé thiết kế bộ xử lý RISC-V theo vi kiến trúc OoO hỗ trợ xử lý 37 lệnh trong tập lệnh RV32I và 4lệnh cộng trừ nhân chia với số d

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TÍNH

PHAN VAN TIEN HUYNH TRUNG TAN

KHOA LUAN TOT NGHIEP

THIET KE BO XU LY THEO VI KIÊN TRÚC 000

DESIGN OOO PROCESSOR

KY SU NGANH KỸ THUAT MAY TÍNH

TP HO CHÍ MINH, 2021

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TÍNH

PHAN VAN TIEN — 16521234

HUYNH TRUNG TAN - 16521073

KHOA LUAN TOT NGHIEP

THIET KE BO XU LÝ THEO VI KIÊN TRÚC 000

DESIGN O00 PROCESSOR

KỸ SƯ NGANH KY THUAT MAY TÍNH

GIANG VIEN HUONG DAN

HO NGỌC DIEM

TP HO CHÍ MINH, 2021

Trang 3

THONG TIN HỘI DONG PHAN BIEN KHÓA LUẬN TOT NGHIỆP

Hội đồng cham khóa luận tốt nghiệp thành lập theo Quyết định số

70/QD-DHCNTT ngày 27 tháng 01 năm 2021 của hiệu trưởng trường Dai học Công Nghệ Thông Tin.

1 TS Lâm Đức Khải - Chủ tịch.

2 TS Nguyễn Minh Sơn - Cán bộ phản biện.

3 ThS Nguyễn Thanh Thiện - - Thư ký.

Trang 4

LỜI CẢM ƠN

Trong thời gian nghiên cứu và thực hiện khóa luận tốt nghiệp, để đạt được kết quả hôm này, chúng em đã nhận được sự hỗ trợ và hướng dẫn nhiệt tình từ giảng viên hướng dẫn Qua báo cáo khóa luận tốt nghiệp này, chúng em xin bày tỏ lòng biết ơn chân thành đến giảng viên Thạc sĩ Hồ Ngọc Diễm, Kỹ sư Trần Đại Dương.

Đồng thời, nhóm xin chân thành gửi lời cám ơn đến tất cả quý thầy

cô giảng viên tại trường Dai học Công Nghệ Thông Tin - ĐHQG TP.HCM,

đã giảng dạy và hướng dẫn tận tình cho chúng em trong thời gian học tập

và nghiên cứu tại trường.

Trang 5

Chương 1l Tổng quan đề tài

2.3.2 Vi kiến trúc OoQ cvccvtnnnnnnn21211111 re 7

2.4 Kiến trúc tập lệnh RISC-V -2222222++rtttEEEEEvrrrrrrrrrrrrrrrrrrrrrrrres 9

Chương 3 Thiết kế bộ xử lý RISC-V theo vi kiến trúc OoO - 10

3.1 Vấn dé cần giải quyết 22¿-2222+222222 22111221211 E111 cetrtkrrrre 10

3.1.1 Data Hazards s1 TgHThH HH nrrhưệp 10 3.1.2 Register Renaming -c+c cv 13

3.2 Thiết kế cơ bản tổng quát . :¿¿-222v2222++t222EEEEEvrrrtttrkrrrrrrrrrrrer 15

Trang 6

3.2.1 Tơng quan - + cty 15

3.2.2 Khối Control

3.2.3 Khối tính tốn ALU -ccccc-+222222222222EEEEEErrrrrrrrvev 18 3.2.4 Khối xử ly Forwarding

3.2.5 Khối Rename sseeecsssssssssccscscceessessssnnnnnnnnnnnnsessssseseeseeeeeeceesensnnennenennens 20 3.2.6 Khéi Reservation Station(RS) - rsSource

3.27 Khối quản lý RS I0 7 5 23

Chương 4 Thiết kế đơn vị xử lý số dau cham động (FPU)

4.1 Số dấu chấm động (Floating point) :c-©vcz22cvvvcvccvvvceerrrer 25 4.1.1 Khái niệm số dấu chấm động :zcz+cc5sccc++ 25 4.1.2 Số dấu chấm động độ chính xác đơn theo chuẩn IEEE 754 25

4.1.3 Tính tốn trên số dau chấm động độ chính xác đơn - 27

4.1.4 Ngoại lệ trong tính tốn số dau cham động độ chính xác đơn 28

4.1.5 Làm trịn khi tính tốn số đầu châm động .-: - 28

4.2 Thiết kế dom vị xử ly Floating point theo ludng thiết kế ASIC 28

4.2.1 Thiết kế đơn vị xử lý Floating pọn( c:cscz+cc5sscz+c+ 28

4.2.2 Thực hiện các phép tốn trên FPU - - - + +©++x+c+c+xercxe 30

Chương 5 Mơ phỏng và đánh giá kết quả -c-:-52222ccvcccesrrrrrrree 4I

5.1 Mơ phỏng bộ xử lý RISC-V -c2+22222222222221111111111tcrrrrrrrke 4I

5.1.2 Tập lệnh mơ phon eeeeeeseseeeeseseseseeeeensseserseaeeeaeenevseeeeeeeneee! Al

5.2 Mơ phỏng don vị xử ly Floating point 0 eee + 5 5555+c+c+c+escecxe 49

5.2.1 Mơ phỏng phép cộng - - +55 Street 49

5.2.2 Mơ phỏng phép trừ - - + tk HH1 uy 50

Trang 8

Hình 2.1: One-Deep Single-Completion Instruction Pipeline [5] 6

Hình 2.2 Đường ống song song (Parallel Pipeline) [5] c:z- ¿5+ 6

Hình 2.3: Mô hình OoO ExecutiON - ¿62 St ‡EEkSv‡kEEEEEEkkerrrkrkrkerrie 8

Hình 2.4: Kiến trúc tập lệnh [5] : -22+++222222v+z+++ttt22zvvrrrrrrrrrrrrerree 9

Hình 3.1: Ví dụ về xung đột dữ liệu [2] -.-. -¿¿-2222v22ccertccrvrvrerrrrrrrrrrrree 1 Hình 3.2: Thiết kế fowarding dé giải quyết xung dột dit liệu [5] - 1

Hình 3.3: Cấu trúc thiết kế khi sử dụng kỹ thuật forwarding [2] . 2

Hình 3.4: OoO có phụ thuộc dữ liệu [2] -¿-¿- ¿5c 65+ £‡**££kekeererererrkexee 4

Hình 3.5: OoO sử dung register renaming [2] -. ¿ + +5+5++++s+sec>++x+xe> 5

Hình 3.6: Sơ đồ thiết kế 5

Hình 3.7: Khối Control điều khiển -:+++ccccccvtttrrrrreerrrrrrrrrrrree 6

Hình 3.8: Khối tính toán ALU -c¿.cccccccc5cc222222cEEEEErrrtrrrtrrrrrrrrrrrrirrrrrrriie 8 Hình 3.9: Khối xử lý fowarding -:-2222:++2222++222E3122222111222111 2211122 9

Hình 3.10: Khối Rename i22 20 Hình 3.11: Khối rsSource -225522 treo 22

Hình 3.12: Khối rsFree ccccssssssssssssssssnnnnesssssssssseececceseesssssnssnssnnnunmesssssseeeeeeeeeeeseee 24 Hình 4.1: Giao diện mức hệ thống của FPU - St S Set srEeterxekrrxrrrressrr 29

Hình 4.2: Giao diện mức hệ thống phép cộng trừ -c-z-:cc-s- -3Ö

Hình 4.3: Sơ đồ giải thuật phép tính cộng -:- ccc2ccvsccsccvvccecccee v32 Hình 4.4: Sơ đồ khối của bộ cộng/trừ [5] .¿¿-2¿¿22++z+2vvzxve+cvvseresrr 34 Hình 4.5: Giao diện mức hệ thống phép nhân ¿z5szz++ 35

Hình 4.6: Sơ đồ giải thật cho phép tính nhân 36

Hình 4.7: Giao diện mức hệ thống phép chia 38 Hình 4.8: Sơ đồ giải thuật phép tính chia 40 Hình 5.1: Kết quả chạy khởi tao trên phần mềm RARS 1.5 -44

Trang 9

Hình 5.2: Kết quả mô phỏng khởi tạO ¿:©2222+222++tt22SSvvetvvvvrrerrvsrrrrrr 45

Hình 5.3: Kết quả chạy 37 lệnh RV32I và 4 lệnh Float trên phan mềm RARS 1.5.47

Hình 5.4: Kết quả mô phỏng 37 lệnh RV32I và 4 lệnh Float - 48

Hình 5.5: Kết quả chạy chuỗi lệnh trên phần mềm RARS I.5 - 49

Hình 5.6 Kết quả mô phỏng chuỗi lệnh -2¿¿©2++2EE22z++222+zzz+ezvseez 49 Hình 5.7: Dang sóng mô phỏng kết quả phép cộng ở mức RTIL - -.- 50

Hình 5.8: Dạng sóng mô phỏng kết quả phép trừ ở mức RTL - 5“

Hình 5.9: Dạng sóng mô phỏng kết quả phép nhân ở mức RTL 52

Hình 5.10: Dang sóng mô phỏng kết quả phép chia ở mức RTIL - 53

Hình 5.11: Tổng hợp Timing thiết kế chưa tích hợp khối tinh toán Floating Point 53 Hình 5.12: Tổng hợp Timing thiết kế tích hợp khối tính toán Floating Point 54

Hình 5.13: Tổng hợp tài nguyên ¿222222++2222++SEEEErttErkvrrrrrrrrrrrrrrrree 54 Hình 5.14: Tóm tắt tài nguyên thiết kế sử dụng trên FPGA

Trang 10

Bang 4.1: Biểu diễn của các số dấu cham động - 2 2 ++x+zE+E++rxerxrez 26

Bang 4.2: Giá trị thể hiện của số dấu chấm động 2-2 +22+z+cxsrxzez 26Bang 4.3: Giao điện mức hệ thống của FPU 2-2 ©5¿+2£+x+£xtzxzzezrxerxeres 29Bảng 4.4: Tín hiệu hệ thống phép cộng trừ -2¿ + ++++++x++zx++zxzrxerxesree 30Bảng 4.5: Tín hiệu mức hệ thống phép nhân -2- ¿2+ £2++++£x++z+zzz+zz+z 35Bảng 4.6: Tín hiệu mức hệ thống phép chia - 2-2 5¿2¿2+2+2£x+2zxzs+srsz 38Bảng 5.1: Tập lệnh được thực hiện trên thiết kẾ ¿- 5 ©£2©sz2x+2zs+zx+zrxz 41

Bảng 5.2: Khởi tạo giá trị ban đầu cho các thanh ghi -2- 2-52 ©5225s2 +2 42

Bang 5.3: Bang mã khởi tạo giá tri ban đầu cho các thanh ghi - 43

Bảng 5.4: Bang mã thực thi 37 lệnh RV32I và 4 lệnh Float - - «++<< 45

Bảng 5.5: Bảng lệnh thực thi chuỗi lệnh theo OoO 2- ¿22 ©5z>szcszz+zz+zs+2 48

Trang 11

DANH MỤC TỪ VIET TAT

Ký hiệu hoặc viết tắt Chú thích

Trang 12

TOM TAT KHÓA LUẬN

Hiện nay, các vi kiến trúc ngày càng trở nên phức tạp hơn, khiến cho việc

học tâp và nghiên cứu về vi xử lý gặp nhiều khó khăn, nhất là ở phần thực nghiệm

Đồng thời việc tìm hiểu về kiến trúc vi xử lý căn bản giúp ta có thé có được nhữngkiến thức cần thiết, tạo tiền đề cho việc phát triển các vi xử lý trong tương lai

Trong khóa luận tốt nghiệp nay, chúng em sẽ trình bay van dé thiết kế bộ xử

lý RISC-V theo vi kiến trúc OoO hỗ trợ xử lý 37 lệnh trong tập lệnh RV32I và 4lệnh cộng trừ nhân chia với số dau cham động trong tập lệnh RVF Nhóm sẽ thựchiện việc so sánh kết quả mô phỏng trên công cụ Xinlinx Vivado và đánh giá khả

năng hoạt động của bộ xử lý.

Trang 13

Chương 1 Tổng quan đề tài

1.1 Tổng quan

Hiện nay, khoa học kỹ thuật ngày càng phát triển kéo theo đó là một lượng

dữ liệu vô cùng lớn cần được xử lý, việc tạo ra các CPU có tốc độ xử lý nhanh là

cực kì cần thiết Một trong những phương pháp để giải quyết vần đề này đó là áp

dung vi kiến trúc OoO (Out of Order) vào trong thiết kế các bộ vi xử lý hiệu suất

dẫn đến việc ton nhiều chu kì hơn dé xử lý các lệnh.

1.1.1 Các nghiên cứu liên quan

Theo nhóm tìm hiểu thì chưa có dé tài nghiên cứu nào về thiết kế bộ xử lýtheo vi kiến trúc OoO được công bố ở Việt Nam Ở trường Đại học Công nghệthông tin - ĐHQG TP.HCM đã có đề tài “Nghiên cứu thiết kế bộ vi xử lý kiến trúcMIPS32” của tác giả Nguyễn Hoàng Dũng va Phan Gia Bảo ở Khóa luận tốt nghiệpngành Kỹ thuật Máy tính năm 2018 Kết quả của nghiên cứu này đã hoàn thànhthiết kế bộ xử lý MIPS32 pipeline 5 tầng theo vi kiến trúc In of Order và đã đượckiểm thử trên FPGA Xilinx Virtex-7, tuy nhiên thiết kế chưa thực hiện được cáclệnh liên quan đến Floating point, cũng như tốc độ thực thi của thiết kế chưa cao do

sử dụng vi kiến trúc In of Order

1.1.2 Ly do thực hiện đề tài

Hiện nay, ở Việt Nam chưa có công trình nghiêng cứu cũng như sản phẩm

nao liên quan đến bộ xử lý thế hệ mới RISC-V cũng như việc sử dụng vi kiến trúc

OoO vào trong thiết kế Nhìn thấy được lợi ích của việc áp dụng vi kiến trúc OoO

Trang 14

vào trong thiết kế bộ xử lý với tốc độ xử lý tốt hơn, nhóm đã lựa chọn nghiên cứu

và thiết kế một bộ xử lý theo vi kiến trúc OoO

1.1.3 Mục tiêu đề tài

Thiết kế Bộ xử lý RISC-V pipeline 5 tầng theo vi kiến trúc OoO:

- Thuc thi 37 lệnh thuộc tập lệnh RV32I.

- Thuc thi 4 lệnh floating point FADD, FSUB, FMUL, FDIV thuộc tập

lệnh RVF.

- Hoat động ở tần số 50Mhz

1.1.4 Phương pháp thực hiện

- Nghiên cứu tài liệu: Tìm hiểu tài liệu về RISC-V và các công trình

nghiêng cứu liên quan đến việc sử dụng vi kiến trúc OoO vào trong thiết

kế, nghiên cứu và thiết kế đơn vị xử lý Floating point

- _ Thiết kế: Xilinx FPGA Design Flow

- _ Xác minh: Mô phỏng thiết kế sử dụng công cụ Xilinx Vivado

- _ Thực nghiệm: Hiện thực trên FPGA Xilinx Virtex-7.

1.1.5 Các nội dung chính

- _ Thiết kế bộ xử lý RISC-V theo vi kiến trúc OoO

- M6 phỏng bộ xử lý RISC-V.

- _ Thiết kế đơn vị xử ly Floating Point

- M6 phỏng đơn vi xử lý Floating Point.

- Tich hợp hệ thống va mô phỏng

- _ Kiểm thử thiết kế trên FPGA

Trang 15

Chương 2 Kiến trúc bộ xử lý và kiến trúc tập lệnh risc-v

2.1 Kiến trúc RISC

RISC là một phương pháp thiết kế các bộ vi xử lý (VXL) theo hướng đơn giảnhóa tập lệnh, trong đó thời gian thực thi tất cả các lệnh đều như nhau Hiện nay, các

bộ vi xử ly RISC phổ biến là ARM, SuperH, MIPS, PIC, DEC Alpha, PA-RISC và

PowerPC của IBM.

2.1.1 Ưu điểm

Diện tích của bộ xử lý dùng cho bộ điều khiển giảm từ 60% (cho các bộ xử

lý CISC) xuống còn 10% (cho các bộ xử lý RISC) Như vậy có thể tích hợpthêm vào bên trong bộ xử lý các thanh ghi, các cổng vào ra và bộ nhớ

cache,

Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanhghi (it thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và cóhiệu quả (các lệnh đều có thời gian thực hiện giống nhau và có cùng dạng)

Thời gian cần thiết dé thiết kế bộ điều khiến là ít Điều này góp phan làmgiảm chi phí thiết kế

Bộ điều khiến trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà

ta gặp thường trong bộ điều khiển

2.1.2 Nhược điểm

Cấm thâm nhập bộ nhớ đối với tất cả các lệnh ngoại trừ các lệnh đọc và ghivào bộ nhớ Do đó ta buộc phải dùng nhiều lệnh để làm một công việc nhất

định.

Cần thiết phải tính các địa chỉ hiệu dụng vì không có nhiều cách định vị

Tập lệnh có ít lệnh nên các lệnh không có sẵn phải được thay thế bằng một

chuỗi lệnh của bộ xử lý RISC.

Trang 16

- Cac chương trình dịch gặp nhiều khó khăn vì có ít lệnh làm cho có ít lựa

chọn đề diễn dịch các cấu trúc của chương trình gốc Sự cứng nhắc của kỹ

thuật ống dẫn cũng gây khó khăn

- C6 ít lệnh trợ giúp cho ngôn ngữ cấp cao

2.2 Kiến trúc RISC-V

RISC-V là kiến trúc bộ tập lệnh RISC được phát triển bởi David Patterson

tại Đại học California, Berkeley.

Ban đầu kiến trúc RISC là 32 bits, sau đó là các phiên bản sửa đôi hỗ trợ 64

bits.

2.2.1 Ưu và nhược điểm của kiến trúc RISC-V

- Uudiém:

o Bộ xử lý truy xuất thanh ghi nhanh

o CPU không phải đợi dé thực hiện các tiến trình don mà thực hiện

cùng lúc nhiều tiến trình, do đó chu kỳ của tiến trình được thông

suốt

o Không gian bộ nhớ của máy được giải phóng nhiều hơn

- Nhược điểm:

o Thanh ghi là một thành phan phan cứng nên số lượng có định và

hạn chế, đòi hỏi phải xử dụng khéo léo.

o Cấu trúc và cách sử dung phức tạp

2.2.2 Kiến trúc RISC-V đã pipeline hóa

Pipeline là kỹ thuật chia lệnh thành nhiều thành phần (stages) trong quá trình

thực thi Kiến trúc RISC-V có nhiều biến thé của pipeline nhằm tăng thời gian thực

hiện lệnh Dưới đây là một số kiến trúc pipeline cơ bản:

Trang 17

execution 200 400 600 800 1000 1200 1400 1600 1800

Time T T T T T T T T ST order

Hinh 2.1: One-Deep Single-Completion Instruction Pipeline [5]

o One-Deep Single-Completion Instruction Pipeline: mỗi lệnh được

chia thanh 5 stategs va duoc thuc hién lién tiếp nhau Hình 2.1 thé

hiện One-Deep Single-Completion Instruction Pipeline.

o Đường ống song song (Parallel Pipeline): dé tận dụng thời gian rỗi

giữa các giai đoạn, thay vì việc phải đợi lệnh hiện tại hoàn thành,

ta có thể load lệnh kế tiếp tại mỗi chu kỳ xung clock Quá trìnhthực hiện lệnh đầu tiên vẫn tốn 5 chu kỳ cung clock, tuy nhiên các

lệnh kế tiếp sẽ hoàn thành sau mỗi chu kỳ xung clock Hình 2.2

thé hiện đường ống song song

Trang 18

o Superpipeline: mỗi giai đoạn có thé thiết kế để thực hiện trong 1

phần của chu kỳ xung clock (cạnh lên và cạnh xuống của xung

Vi kiến trúc In-of-Order Là mô hình thực hiện lệnh theo thứ tự

Việc xử lí các lệnh được thực hiện trong 1| chu trình lệnh thường bao gồm

các bước sau:

o Tìm nạp lệnh.

o_ Nếu các toán hạng đầu vào có sẵn (nằm trong registers), lệnh được

gửi đến function unit thích hợp Nếu một hoặc nhiều toán hạng

không khả dụng trong chu kỳ xung nhịp hiện tại (thường là do

chúng được lấy từ memory), bộ xử lý sẽ đợi cho đến khi chúng

khả dụng.

o Các lệnh sẽ được chuyên đến các functional unit thích hợp dé thực

hiện.

o Kết quả sau khi thực hiện sẽ được ghi lại vào register tương ứng

Việc thực thi các lệnh theo thứ tự làm tốn nhiều chu kỳ do khả năng

bị gián đoạn có thê xảy ra, dẫn đến việc làm giảm hiệu xuất xử lý

2.3.2 Vi kiến trúc OoO

Vi kiến trúc OoO Là mô hình thực hiện lệnh không theo thứ tự

Mô hình mới này sẽ giúp giải quyết vấn đề còn hạn chế đối với việc xử lý

theo mô hình In-Order.

Các bước thực hiện bao gồm:

Trang 19

rời khỏi hàng đợi trước mà không phải đợi lệnh trước đó.

Lệnh sẽ được chuyển đến các functional unit thích hợp để thực

Trang 20

2.4 Kiến trúc tập lệnh RISC-V

Tập lệnh RISC-V bao gồm 6 loại lệnh: R-Type, I-Type, S-Type, SB-Type,

U-Type, UJ-Type, trong đó bao gồm :

o R-Type: add, sub, sll, xor, srl, sra, or, and.

o I-Type: addi, slti, sltiu, xori, ori, andi, slli, srli, srai, lb, Ih, lw, Ibu,

| funct7 | rs2 s1 | funct3 rd opcode | R-type

| imm[11:0] rsl | funct3 rd opcode | I-type

rs2 rsl | funct3 imm[4:0] opcode | S-type

| imm [3 1: 12] rd opcode | U-type

imm|20] imm{10:1] imm|11] imm[19:12] rd opcode | UJ-type

Hình 2.4: Kiến trúc tập lệnh [5]

Trang 21

Chương 3 Thiết kế bộ xử ly RISC-V theo vi kiến trúc OoO

3.1 Vấn đề cần giải quyết

3.1.1 Data Hazards

Các loại phụ thuộc dữ liệu:

o True dependence: RaW (Read after Write)

sw x15, 100(x2)

Ta thay việc xử dung thanh ghi cho công đoạn WB (ghi kết quả vào thanh

ghi) ở lệnh đầu và sử dụng thanh ghi ở công đoạn ID cho các lệnh sau là một

nguyên nhân dẫn đến xung đột dữ liệu

Phương pháp giải quyết: sử dụng gửi vượt trước (forwarding) kết quả ngay

sau khi có kêt quả.

10

Trang 22

Time (in clock cycles) Value of CC 1 cc2 cc3 cc4 ccs ccé CG7 CC 8 cc9

ID/EX EX/MEM MEM/WB

Hinh 3.2: Thiét ké fowarding dé giai quyét xung dét dit liéu [5]

11

Trang 23

Loại phụ thuộc dữ liệu này xảy ra với 1 trong 4 trường hợp sau:

la EX/MEM.RegisterRd = ID/EX.RegisterRs1

IFMD.RegisterRd

-~

Forwarding

unit

Hình 3.3: Cấu trúc thiết kế khi sử dụng kỹ thuật forwarding [2]

o False dependence: WaW (Write after Write)

Trang 24

3.1.2 Register Renaming

Register Renaming là 1 hình thức pipeline liên quan đến sự phụ thuộc dữ liệugiữa các lệnh bằng cách đổi tên register operands

Các operands này được chỉ định bằng cách sử dụng các architectural register

(mỗi register này đại diện cho 1 register trong ISA).

Quá trình xử lí này được diễn ra trên 1 vùng register khác (gọi là physical

register file (PRF)).

Dữ liệu được ánh xa từ architectural register file (ARF).

Bộ xử lý không theo thứ tự sử dung một kỹ thuật gọi là Register renaming déloại bỏ các phụ thuộc dữ liệu WAR va WAW Hoạt động thêm một số thanh ghi vat

lí vào bộ xử lý.

Ví dụ, bộ xử lý có thé thêm 20 thanh ghi vật lí, được gọi là T0 - T19 Lậptrình viên không thê sử dụng các thanh ghi này trực tiếp, vì chúng không phải là

một phan của kiến trúc Tuy nhiên, bộ xử lý có thé tự do sử dụng chúng dé loại bỏ

các mối nguy hiểm

Ví dụ:

Hình 3.5 cho thay một chương trình tương tự như Hình 3.4 nhưng đang thực

thi trên bộ xử lý Out-Of-Order với việc sử dụng phương pháp Register renaming dé

loại bỏ các phụ thuộc của chương trình ở

Hình 3.4 Ở đây R8 được đổi tên thành TO trong SUB va AND để loại bỏ

nguy cơ WAR.

13

Trang 25

- Lệnh ADD phụ thuộc vào LDR theo R8, vì vậy nó chưa thê thực thi Tuy

nhiên, lúc này lệnh SUB độc lập khi toán hạng đích của nó đã được đôi tên thành TO, do đó SUB cũng được thực thi.

> Chu kỳ 2:

- Vico độ trễ hai chu kỳ giữa việc ban hành lệnh LDR và lệnh có phụ thuộc,

vi vay :

- ADD không thê thực thi do phụ thuộc R8.

- _ Lệnh AND phụ thuộc vào SUB, vì vậy nó có thê thực thi vì SUB đã được

thực thi ở chu kì trước đó T0 được chuyên tiếp từ SUB sang AND

- _ Lệnh ORR là độc lập, do đó nó cũng được thực thi.

> Chu kỳ 3:

- Trong chu kỳ 3, R§ có sẵn, do đó các lệnh ADD được thực thi.

- R11 cũng có sẵn, do đó lệnh STR cũng được thực thi.

14

Trang 26

two cycle latency

between load and use of R8

Hinh 3.5: OoO su dung register renaming [2]

3.2 Thiết kế cơ ban tổng quát

3.2.1 Tong quan

Bộ vi xử ly kiến trúc RISC-V bao gồm 2 phan datapath va control Khốidatapath gồm tất cả các khối chức năng dé xử lý các tác vụ cũng như tính toán của

vi xử lý Phần control đảm nhiệm vai trò giải mã các tín hiệu từ phần datapath để

đưa ra các tín hiệu điều khiển quyết định hoạt động của toàn bộ thiết kế.

15

Trang 27

3.2.2 Khối Control

Khối Control có chức năng như sau:

o Giải mã lệnh từ Opcode, funct3, funct7, functŠ dé xuất các tín hiệu

điều khiển cho Datapath

o_ Diễn giải: sau khi nhận được Opcode và các funct từ lệnh đọc vào

khối Control sẽ giải mã để cho ra các tín hiệu điều khiển tương ứng

với từng lệnh đến từng giai đoạn

immSel[2:0

aluSel[3:0]

dataType wbSel[1:0]

16

Trang 28

Các tín hiệu của khối Control được thê hiện trong Bảng 3.1.

Bảng 3.1: Các tín hiệu của khối Control

Tên tín hiệu | Loại tín hiệu Ý nghĩa

inst[31:0] input Dữ liệu lệnh thực thi

pcSel output Chọn địa chỉ lệnh kế tiếp

immSel[2:0] output Chon loại imm tương ứng với lệnh trong khối

1mm

regWEn output Cho phép thực hiện ghi vào thanh ghi

brUn output Chon so sánh số có dau và số không dau

bSel output Chon đữ liệu rs2

aSel output Chon đữ liệu rsl

aluSel[3:0] output Xác định phép tinh trong khối ALU

memRW Oufput Cần đọc ghi dữ liệu ở memory

dataType output Loại dữ liệu ghi vào memory

wbSel[1:0] output Chon nguồn dir liệu ghi vào thanh ghi

17

Trang 29

3.2.3 Khối tính toán ALU

Khối tính toán ALU chức năng như sau:

©_ Thực hiện các tính toán bên trong CPU.

o Diễn giải: nhận các toán hạng và tín hiệu điều khiển tương ứng dé

thuc hién cac phép tinh.

Bảng 3.2: Các tín hiệu của khối ALU

Tên tín hiệu | Loại tín hiệu Ý nghĩa

a[31:0] input Toán hang 1

b[31:0] input Toán hạng 2

aluSel[3:0] input Phép tinh can thuc hién

result[31:0] Oufput Kết quả của phép tính

18

Trang 30

3.2.4 Khối xử lý Forwarding

Khối xử lý Forwarding có chức năng như sau:

o Phat hiện phụ thuộc dữ liệu RAW trong quá trình thực hiện các lệnh

trong đường ống và xử lý

o_ Diễn giải: nhận các địa chỉ thanh ghi cần thao tác trong chu kỳ đó, từ

đó phát hiện phụ thuộc và đưa ra phương pháp giải quyết

Các tín hiệu của khối Khối xử lý fowarding được thể hiện ở bảng 3.3

Bảng 3.3: Các tín hiệu của khối xử lý Forwarding

Tên tín hiệu Loại tín hiệu Ý nghĩa

instX[31:0] input Chứa các dia chi thanh ghi sử dung ở giai

đoạn IE/ID

instM[31:0] input Chita các địa chỉ thanh ghi sử dung ở giai

19

Trang 31

Khối Rename có chức năng như sau:

o_ Thực hiện đối tên thanh ghi dé loại bỏ các phụ thuộc dữ liệu gặp phải.

o_ Diễn giải: thực hiện đổi tên thanh ghi

clk

validA regWEn

validB

updatedata_D

dataA updatetag

addrA renaming dataB

addrB tagA

——————>

addrD tagB

checktag

Các tín hiệu của Khối Rename được thể hiện ở bảng 3.4

Bảng 3.4 Các tín hiệu của khối RenameTên tín hiệu Loại tín hiệu Ý nghĩa

20

Trang 32

clk input Tin hiệu clock

regWEn Input Tin hiệu cho phép doc

updatedata_D Input Cập nhật giá tri cho rd

updatetag Input Cập nhật tên tag cho thanh ghi được đôi tên

checktag Input Kiểm tra tag sau khi thực thi xong lệnh và trong

rename, nếu giống nhau thì cập nhật giá trị vào

thanh ghi giữ tag nay

addrA Input Dia chỉ rsl

addrB Input Địa chỉ rs2

addrD Input Địa chỉ rd

validA output Gia tri valid cua rs1

validB output Gia tri valid cua rs2

dataA output Dữ liệu của rs1

dataB Oufput Dữ liệu của rs2

tagA output Gia tri tag cua rsI trong Rename

tagB output Gia tri tag của rs2 trong Rename

3.2.6 Khối Reservation Station(RS) - rsSource

Khôi rsSource có chức năng như sau:

o Sử dụng trong quá trình rename, lưu dit liệu của thanh ghi được đổi

^

ten.

21

Trang 33

o_ Diễn giải: Như là hàng đợi của các lệnh, khi các toán hạng nguồn đều

kha dụng thì lệnh được rời khỏi RS dé đến Function Unit tương ứng

để thực thi

clk

rsFree

d tag in_dataA

rs_dataA in_dataB

checktag_rs

updatedata_rs

Các tín hiệu của khôi Khôi rsSource được thê hiện ở bảng 3.5.

Bảng 3.5: Các tín hiệu khối rsSource

Tên tín hiệu Loại tín hiệu Ý nghĩa

clk Input Tin hiệu clock

rsFree Input RS trống

rs_dataA Input Dữ liệu rs1 được rời khỏi hang đợi

rs_dataB Input Dữ liệu rs2 được rời khỏi hàng đợi

22

Trang 34

rs_tag Input Gia tri tag tương ứng của lệnh được lưu gia

trị vào RS, sử dụng dé gan giá trị tag cho rd

được đôi tên

rs_busy Input RS đang giữ giá trị cua I lệnh

d_tag Input Giá tri tag tương ứng của lệnh được rời khỏi

RS checktag_rs Input Giá tri tag của lệnh vừa được thực thi xong

updatedata_rs Input Gia tri của lệnh vừa được thực thi xong

in_dataA Input Dữ liệu rs1

in_dataB Output Dữ liệu rs2

in_validA Output Gia tri valid của rs1

in_validB Output Gia tri valid của rs2

in_tagA Output Gia tri tag của rs1 trong RS

in_tagB Output Gia tri tag của rs2 trong RS

3.2.7 Khoi quan ly RS trống - rsFree

Khôi rsFree có chức nang như sau:

o_ Quản lý RS có trống hay không, sử dụng trong quá trình Rename

23

Ngày đăng: 02/10/2024, 04:38

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN