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 3THONG 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 4LỜ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 5Chươ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 63.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 8Hì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 9Hì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 10Bang 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 11DANH MỤC TỪ VIET TAT
Ký hiệu hoặc viết tắt Chú thích
Trang 12TOM 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 13Chươ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 14và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 15Chươ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 17execution 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 18o 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 19rờ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 202.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 21Chươ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 22Time (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 23Loạ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 243.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 26two 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 273.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 28Cá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 293.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 303.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 31Khố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 32clk 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 33o_ 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 34rs_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