TONG QUAN ĐÈ TÀI1.1 Tong quan dé tai Trong thời điểm hiện tại, sự phat triển của kiến trúc vi xử lý mã nguồn mởRISC-V đã trở thành một chủ đề nóng trong ngành công nghệ thông tin toàn cầ
Trang 1ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
NGUYEN HAI MINH - 20521608
KHOA LUAN TOT NGHIEP
THIET KE VAT LÝ BO VI XU LY RISC-V
HO TRO BRANCH PREDICTION
PHYSICAL DESIGN OF RISC-V PROCESSOR WITH
BRANCH PREDICTION
CU NHAN NGANH KY THUAT MAY TINH
GIANG VIEN HUONG DAN
TH.S TA TRI DUC
TH.S PHAM MINH QUAN
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN
Đầu tiên, em xin gửi lời cảm ơn đến quý thầy cô trường Đại Học Công Nghệ
Thông Tin Trong quá trình học tập và rèn luyện tại trường, với sự dạy dỗ, chỉ bảo
tận tình của quý thầy cô đã trang bị cho em những kiến thức về chuyên môn cũng
như kỹ năng mềm, tạo cho em hành trang vững chắc trong cuộc sống cũng như
công việc sau này.
Tiếp theo, em xin cảm ơn khoa Kỹ Thuật Máy Tính vì đã luôn tạo mọi điềukiện thuận lợi cho em được học tập và phát triển Đặc biệt, dé hoàn thành khóa luậntốt nghiệp này, em xin gửi lời cảm ơn sâu sắc tới Thầy Tạ Trí Đức đã tận tình chỉ
bảo, hướng dẫn và hỗ trợ trang thiết bị cho em trong suốt thời gian thực hiện đề tài
Đồng thời, em cũng xin gửi lời cảm ơn đến các sinh viên khác trong CLB CEEC đã
giúp đỡ em trên nhiều phương diện Em cũng muốn cảm ơn tất cả các công ty và
nhà phát triển cung cấp các dịch vụ miễn phí cũng như các thư viện và dự án mã
nguồn mở Không có những công cụ và thư viện này khoá luận của em sẽ không théhoàn thành được như bây giờ Cuối cùng, em xin cảm ơn đến gia đình, những ngườiluôn dành những sự động viên đến em trong suốt quá trình thực hiện khóa luận
Thành phó Hỗ Chí Minh, ngày 24, tháng 7 năm 2024
Sinh viên thực hiện
Nguyễn Hải Minh
Trang 3MỤC LỤC
CHƯƠNG 1 TONG QUAN DE TÀI - 2-52 ©22SE‡EE2EEEEEE2EEEEEE2E2E1212E.rrrree 1
1.1 Tổng quan đề tài -¿- 25s s19 9 1211211211211111211211211211111111 1.1.1 re 11.2 Mục tiêu đề tài -¿-©sc set k2 2 1 71211211211211111211 1111111111 erre 2c0: 0Š ai“ 2CHƯƠNG 2 CƠ SỞ LÝ THUYÊTT 2-22 2£ E+2E£2EE£EE£EEE£EEtEE+£EEEEEerxevrrrree 4
2.1 Kiến trúc tập lệnh RISC-V - -¿- 2 + SE+EE£EE+EE2E12E121121121121121121121 21.2 re 4
2.1.1 Giới thiệu về kiến trúc RISC-V ¿ 2¿©2+22xc2xSEEeEEerEerxerkrrrrervee 4
2.1.2 Các tập lệnh và thanh ghi cơ ban của RISC-V RV32I -‹- 4
2.1.3 Kiến trúc Pipeline 5 Tang ¿- 2-2 25222E+E££E2EEEEEEErrrrrrerreee 8
2.1.4 Xung đột trong RISC-V woe cseesesseesessesaesseeeceeesecsecsessessessesseeseeneens 9
2.2 Giải thuật Branch PredICtiOn - -c c5 3 2211111133222 EEE++SSEeEEkksesseeeeree 12
2.2.1 Giải thuật Two-level Gshare Branch Predicfion - -«‹++++<<<s 13
2.3 Quy trình thiết kế ASIC -¿¿2¿ 2 +£2E£+EE+EEEEEEEEEEEEEEEEEEEEEEEEEEEECrrrrrkrrvee 16
2.3.1 Giới thiệu về quy trình thiết kế A SIC -¿- 2 5¿©5z+c++zxe+xzzxerxs 162.3.2 Giới thiệu về bộ cơng cụ Cadence {OỌS - - + ++- 5+ ss+svvvsseeseeeees 18
CHƯƠNG 3 PHƯƠNG PHÁP THIET KE 2- 2£ 2©£2£E£+£+£2£++2£+e2zse2 20
3.1 Thiết kế RTL bộ vi xử lý RISC-V RV32I với Branch Prediction 20
3.1.1 Kiến trúc bộ vi xử lý RISC-V -2¿-+cx2E22xeEEcEESExerkrrrrerkrree 203.1.2 Kiến trúc Branch PredictiOn ¿St +x+EeE+E+EEEE+EeEEEeEeEerkererxrxereree 293.2 Thiết kế vật lý bộ vi xử lý RISC-V -¿- 2 sc++EE+E2EE2EEEEEEEErrkrrerree 33
3.2.1 Tổng hợp logic ¿5 SE +E£SE£EE£EEEEEEEEEEEEEEEEEEE1212111111 2111 c0, 333.2.2 Kiểm tra tính tương đồng - 2-2 + k+Ex+EE+EESEEEEEEEEEEEEEErErrrrrrrei 363.2.3 Thiết kế vật lý - ¿5c tt SE E1E7102111211111111111111111 11110 37
Trang 43.2.4 Kiểm tra thiết kế vật lý và xuất file -¿- 2-2 2Ez+EE+E2EzErErrrrei AlCHUONG 4 KET QUA VÀ DANH GIA uoeeececcsccsssssessessessessessessessessessessesessesseaees 42
AL Thiét 03 42
4.1.1 Kết qua mô phỏng chức nang vi xử lý RISC-V ¿©2 5552 42
4.1.2 Kết quả mô phỏng chức năng khối Branch Prediction - - 51
4.2 Thiết kẾ Vat lý -:- + ©k+SE+EE9EEEE1EE1511511111121121111111111 11.111.111 cy 52
4.2.1 Logic Synth€SIS - - sgk rry 52
4.2.2 Equivalence cheCKIng - - c2 E219 91 ng ng net 55
5.3.1 Cải thiện thêm thuật toán Branch Prediction << «5555 ++<<< 68
5.3.2 Phát triển Bus và các ngoại Vi - + sex 2E EEEEEEEEEEErrrrrei 685.3.3 Tối ưu thiết kế vật lý - ¿+ ©x+Sx+Ex£EEEEEEEEEE121122112111111 21121 c0, 68
Trang 5DANH MỤC HÌNH
Išï0):8928 181-1081) 0: 6⁄20 1 5
Hình 2.2 Định dạng cấu trúc các trường lệnh của R32ÌL -. +cc<ss<ssss 6Hình 2.3 Bảng mô tả chi tiết các lệnh R`V321 2-2 2 22S£+E£+E£+E2EzEzEzreee 7Hình 2.4 Chức năng cụ thể của từng thanh ghi - 2 2 2 2+££+££+Ezxzxz+xzzxez 8
Hình 2.5 Mô phỏng lệnh được thực thi trong kiến trúc không pipeline và pipeline 9
Hình 3.4 Hazard UnI( - - ¿2G 2c 3511551111211 911 1119111111 g1 th ng nàng 27
Hình 3.5 Khối Branch Prediction - 2 +2 ++£E+E£+E++£E£+EE+EE+zEezrxerxezrxerxee 30Hình 3.6 Mô hình khối Pattern History Table s5 Ăn re 32Hình 3.7 Cấu trúc sơ lược giải thuật Branch Prediction - -s«++<sss+sss++ 33Hình 3.8 Sơ đồ quy trình thực hiện Logic Synthesis 2-2 2 252252252: 34Hình 3.9 Sơ đồ quy trình thực hiện Equivalence Checking 2-2-2 +: 36Hình 3.10 I/O file cần thiết cho quy trình thiết kế vật lý [8] . - 37Hình 3.11 thiết lập thông số Floorplan - 2-22 2 +22£2++£x£+£++£xzx+zzszrxez 38Hình 4.1 Waveform kết quả mô phỏng nhóm lệnh R, I và S - 2-5: 44
Hình 4.2 Waveform kết quả mô phỏng nhóm lệnh R, I và S (t) - 45 Hình 4.3 Waveform kết quả mô phỏng nhóm lệnh R, Iva S (ff) 46
Hình 4.4 Waveform kết quả mô phỏng trường lệnh U -.:-¿5¿©55+¿ 47
Hin 4.5 ooo 47
Trang 6Hình 4.6 Waveform kết quả mô phỏng trường lệnh B - 2 2 2522 5š 48Hình 4.7 Waveform kết quả mô phỏng trường lệnh B (tt) 2-2-2 25+: 48Hình 4.8 Waveform kết quả mô phỏng lệnh JAL và JAL/R 2-2-5: 49Hình 4.9 Waveform kết quả mô phỏng thiết kế RTL - 22 2 522522 s52 50
Hinh 00009):9):158i 1,500 ái 00) 0 51
Hình 4.11 Trường hợp dự đoán đúng - 5 2c 1v 3 9 ng 51
Hình 4.12 Kết quả do số lần rẽ sai va tổng số nhánh rẽ - 2-2 2 2 z+szzsz 52
Hình 4.13 Synthesis Timing Ï€pOF - G5 1111119111911 1 111v vn kg 52
Hình 4.14 Synthesis Power Report - - G1 1191191 ng ng kt 33
Hình 4.15 Synthesis Area €pOTI -G s 11H ng 54
Hình 4.16 Mô phỏng Gate-level netlist với deÌay - 5-5 «se sseseeree 55
Hình 4.17 Kết quả Equivalence checking - 2 2 + + +2 +2 £+EE+E++E+zEzEzrezrs 56
Hình 4.18 report V€TIÍICAfIOTI - 2 101111189101 1991 91119 11 HH ng c 57
Hình 4.19 EloOrpÏaIn - óc +6 c1 11 E11 TH nu TH nu TH HH Hư 57
Hình 4.20 Thiết kế sau postC TS . ¿- 2:52 22S22+2EEE£EEESEEESEEEEEEESEkrrrkrrrkerrree 58Hình 4.21 Thiết kế layout sau khi Metal Fill .-.¿ cscc5ccvvcsvcxvrrerrrrrrrrrvee 59Hình 4.22 Kết quả kiểm tra DRC 2-52 2 S2SE9EE2EE£EE2EE2EE2EEEEEEEEEEErEkrrerreee 60Hình 4.23 Kết quả kiểm tra ŒeOIm€TY -2- 2 2 2S£+SE£EE+EE£EEEE£EEEEE+EEzEEzEerreree 60Hình 4.24 Kết quả kiểm tra ConnectiVity - 2: ¿- 2 2 £+S++£+E++EzEzxzrezreee 60Hình 4.25 Kết quả Layout vs RTL Equivalence check 2- 2 5+2 s52 61Hình 4.26 Kết quả post layout simulation có delay - 2-22 sz+sz+ssse2 61Hình 4.27 Thông số báo cáo về Power post ÏayOUI 2-2 2 2+sz+E+zEzzzzzreee 63Hình 4.28 Tổng số cell và diện tích của thiẾt kẾ 2-2 2 2 2+£+££+£z+£zxzzxz 64Hình 4.29 Thông số Timing va Density post layOUI - 2-2 2252222222 64
Trang 7DANH MỤC BANG
Bảng 3.1 Bảng mô tả tín hiệu của Vi XỬ lỚ - óc 2c 3S set 21
Bang 3.2 Bang mô tả tín hiệu của khối Controller 2 2 2 s+£+£z2££+s£2 5+2 21Bang 3.3 Bang mô ta chi tiết tín hiệu của khối Datapath -2- 2 2 25252 24Bang 3.4 Bang mô tả tín hiệu khối Hazard Unit 2-2 2 2252222222222 27
Bang 3.5 Bang mô tả tín hiệu của khối Branch Prediction 2-2 25s: 30
Bang 3.6 (983i): 10077 39
Bảng 4.1 Testcase kiém tra 1énh R, IU, S ằằằằ 42Bang 4.2 Testcase kiểm tra trường lệnh U -2- 2 2 22 22+ £+E++EzEzzzzzzezreee 46
Bảng 4.3 Testcase kiểm tra lệnh JAL và JALR - 2-2 2 22 ++s£+£z+£+zzxzxz 48
Bảng 4.4 Bảng tóm tắt các thông số post layOuI -2 -¿-©s¿csz+cx++zx+zzxezssez 62Bảng 4.5 Bảng so sánh các thông số thiết kế layout của khóa luận này với nghiên cứu
[QD] [LO] ố.ố.ốẮ({C <6Sa ố hố 65
Trang 8DANH MỤC TỪ VIẾT TẮT
ALU - Arithmetic Logic Unit
ASIC - Application-Specific Integrated Circuit
BHR - Branch History Register
BTB - Branch Target Buffer
CPF - Common Power Format
CTS - Clock Tree Synthesis
DFT - Design for Testability
DRC - Design Rule Checking
FPGA - Field-Programmable Gate Array
GDSII - Graphic Data System II
GHR - Global History Register
GPDK045 - General Purpose Design Kit 45nm
ISA - Instruction Set Architecture
LEC - Logical Equivalence Checking
LEF - Library Exchange Format
LIB - Library
PHT - Pattern History Table
PnR - Place and Route
PPA - Performance, Power, Area
RISC-V - Reduced Instruction Set Computing - Version V
RTL - Register Transfer Level
Trang 9SDC - Synopsys Design Constraints
UI - User Interface
Trang 10TOM TAT KHOA LUẬN
Khoá luận tốt nghiệp với đề tên đề tài “Thiết kế vật lý bộ vi xử lý RISC-V hỗ
trợ Branch Prediction” là quá trình học tập, nghiên cứu của sinh viên Nguyễn Hải
Minh Khoá luận tập trung vào việc thiết kế và hiện thực hoá bộ vi xử lý dựa trênkiến trúc RISC-V từ giai đoạn thiết kế RTL cho đến thiết kế vật vật lý với bộ công cụthiết kế của Cadence và GPDK 45nm Đặc biệt, giải thuật dự đoán Branch Prediction
sẽ được tích hợp vào vi xử lý để tối ưu hiệu suất của RISC-V Trọng tâm của đề tàinằm ở khâu thiết kế vật lý trong bối cảnh có rất nhiều đề tài làm về đề tài liên quanđến RISC-V nhưng đa số là hoạt động trên FPGA Kết quả của khoá luận này là một
thiết kế kiến trúc vi xử lý RISC-V pipeline 5 tầng có hỗ trợ branch prediction và thiết
kế vật lý của vi xử lý này Báo cáo khoá luận tốt nghiệp là sự đúc kết của quá trình
nỗ lực học tập, nghiên cứu và thực hành của sinh viên Tuy còn nhiều thiếu sót nhưngvẫn đạt được một số kết quả nhất định Báo cáo bao gồm 5 chương:
e CHƯƠNG 1: TONG QUAN DE TÀI
e CHƯƠNG 2: CƠ SỞ LY THUYET
e CHƯƠNG 3: PHƯƠNG PHAP THIET KE
e CHƯƠNG 4: KET QUA VA ĐÁNH GIÁ
e CHƯƠING 5: KET LUẬN VÀ HƯỚNG PHAT TRIEN
Trang 11CHUONG 1 TONG QUAN ĐÈ TÀI
1.1 Tong quan dé tai
Trong thời điểm hiện tại, sự phat triển của kiến trúc vi xử lý mã nguồn mởRISC-V đã trở thành một chủ đề nóng trong ngành công nghệ thông tin toàn cầu.Khởi nguồn từ một dự án học thuật tại Đại học California, Berkeley vào năm 2010,
RISC-V không chỉ là một lựa chọn kinh tế mà còn mở ra khả năng tùy biến và phát trién mạnh mẽ cho các nhà nghiên cứu và phát triển sản phẩm Đặc biệt, so với các
kiến trúc thương mại như x86 của Intel và ARM, RISC-V cung cấp một nền tang pháttriển miễn phí, giảm rào can chi phí và pháp lý, thúc day sự đổi mới và đa dang hóa.Một trong những lợi thé nồi bật của RISC-V là kiến trúc tập lệnh rút gọn, giảm thiểu
số lượng lệnh và tài nguyên can thiết dé chế tao chip, từ đó giảm chi phí sản xuất vàtăng hiệu suất cũng như tiết kiệm năng lượng Điều này không chỉ cải thiện khả nănghoạt động của các thiết bị mà còn mang lại lợi ích kinh tế, làm cho RISC-V trở thànhmột giải pháp hap dẫn trong thị trường vi xử lý hiện nay Hơn nữa, sự phát triển củaRISC-V được thúc day mạnh mẽ bởi cộng đồng toàn cầu gồm các chuyên gia, nhà
khoa học, và nhà nghiên cứu, đảm bảo cập nhật kỹ thuật liên tục và nhanh chóng Sự
hỗ trợ này không chỉ giúp RISC-V duy trì vị thế cạnh tranh mà còn tạo điều kiện chocác doanh nghiệp triển khai nhanh chóng các giải pháp công nghệ mới, đáp ứng nhucầu tăng trưởng của thị trường điện tử và IoT
Tình hình thế giới, các công ty, tập đoàn công nghệ lớn như Intel, SiFive, SemiFive, China RISC-V Industry Alliance, đã sử dụng RISC-V vào các sản phẩm
của họ Khoảng 3.100 thành viên trên toàn thế giới, bao gồm các công ty và tổ chứchọc thuật, hiện đang hợp tác thông qua tổ chức phi lợi nhuận RISC-V International
dé thiết lập và phát triển các dự án liên quan đến RISC-V Vào tháng 2/2022, Intelcông bồ dau tu 1 tỷ USD dé hỗ trợ các công ty sản xuất chip RISC-V [1]
Trong khi các nghiên cứu chỉ tập trung chủ yếu vào mô phỏng và thử nghiệmcác mô hình lý thuyết của vi xử lý RISC-V trên FPGA, khoá luận này đi một bước xahơn bằng cách thực thi thiết kế vật lý, mang các ý tưởng từ bảng vẽ đến thực tế Sự
Trang 12chuyền giao này từ mô hình mô phỏng sang thiết kế vật lý không chỉ là một bước tiếnquan trọng trong quá trình phát triển sản phẩm, mà còn là yếu tổ cần thiết để đánh giáchính xác các khả năng thực tế và các thách thức trong sản xuất Chính vì thế, nhóm
quyết định thực hiện đề tài “Thiết kế vật lý bộ vi xử lý RISC-V hỗ trợ Branch
Prediction” “Trong khoá luận này, việc tích hop branch prediction vào vi xử lý
RISC-V không chỉ nhằm mục đích cải thiện tốc độ xử lý và giảm độ trễ cho RISC-RISC-V, mà
còn nhằm đảm bảo rằng thiết kế cuối cùng có thể được áp dụng một cách hiệu quảtrong các môi trường sản xuất thực tế, đặc biệt là trong các ứng dụng yêu cầu hiệusuất cao như trong các hệ thống nhúng và IoT
% Đối với thiết kế RTL
e _ Hiện thức thiết kế RISC-V RV32I với kiến trúc pipeline 5 tầng
e Nghiên cứu thực hiện giải thuật Branch Prediction để tích hợp vào RISC-V
e Kết quả mô phỏng chính xác 37 lệnh của RV32I
s* Đối với thiết kế vật lý:
e Đưa thành công thiết kế vi xử ly RISC-V xuống thiết kế vật lý
e Tần số hoạt động của thiết kế vật lý đạt tối thiểu 50 MHz
© Thiết kế vật lý phải tương đồng với thiết kế RTL, hoạt động đúng chức năng
1.3 Giới hạn đề tài
% Đối với thiết kế RTL:
e Vi xử lý không hỗ trợ các lệnh liên quán đến Control and Status Register
Instruction va Environment Call and Breakpoints
e Vi xử lý đạt tần số hoạt động là 100 MHz
Trang 13s* Đối với thiết kế vật ly:
e Không thiết kế pin, pad
e Khong thiết kế DFT và SignOff
© Thiết kế vật lý hoạt động ở tan sé tối thiểu 50 MHz
Trang 14CHƯƠNG 2 CƠ SỞ LÝ THUYET
2.1 Kiến trúc tập lệnh RISC-V
2.1.1 Giới thiệu về kiến trúc RISC-V
RISC-V là một bộ lệnh máy tính (ISA) nguồn mở, dựa trên kiến trúc RISC
(Reduced Instruction Set Computing) được phát triển ban đầu tại Đại học California,Berkeley Kiến trúc này được thiết kế để đơn giản hóa các lệnh máy tính, giảm điệnnăng tiêu thụ và tối ưu hóa hiệu suất RISC-V hỗ trợ các kiến trúc 32, 64, và 128-bit
và được thiết kế mở, cho phép các nhà phát triển tự do tùy chỉnh và mở rộng bộ lệnhtheo nhu cầu cụ thể Điều này làm cho RISC-V trở thành lựa chọn phổ biến cho cảứng dụng thương mại và nghiên cứu, từ các hệ thống nhúng đến máy chủ cỡ lớn
RV32I là bộ lệnh bản cơ bản nhất của bộ lệnh RISC-V, thiết kế cho các hệ thống32-bit Bộ lệnh này bao gồm một tập hợp các lệnh tính toán đơn giản và cần thiết détriển khai các chức năng co bản của máy tính RV32I bao gồm các lệnh tính toán sốnguyên, điều khiển luồng chương trình, và truy cập bộ nhớ, đủ cho việc xây dựngmột bộ xử lý hoàn chỉnh Nó được thiết kế dé dé dàng mở rộng với các mô-đun lệnhb6 sung, hỗ trợ việc tùy biến và mở rộng khả năng xử lý
2.1.2 Các tập lệnh và thanh ghỉ cơ bản của RISC-V RV32I
Kiến trúc tập lệnh (ISA) của bộ lệnh RV32I bao gồm 47 lệnh, tuy nhiên một
số lệnh hệ thống đã được tích hợp thành phần cứng, làm giảm số lượng lệnh xuống
còn 37 lệnh (Hình 2.1) Khoá luận này chỉ giới hạn thêm việc vi xử lý sẽ không hỗ
trợ các lệnh gọi hệ thống và các lệnh kiểm soát trạng thái thanh ghi
Trang 15RVä2I Base Instruction Set
Hmmm[31:12]
Hmmm|31:12)
imum 2| 10:1)11)19:12 1101111 JAL
a | m— TOIT] JALR
L_ mmỊI2H05— [2s DU | im] [1100011] BNE ato) a nt ttt] BLT [Timm 21103] [sto im TTT [T0007] BGE
L—Tmi2105—|[——R2—| st] 110 _| amm[ 10] [1100011] BLTU L—anll2105]—|—R2—| TL TT _[ inlet] [100011 | BGEU
| 0U | rd | UUUUUI |LBE
LH LW LBU LHU SB
SH
imm|4:0] (II00011 sw
rd OOLOO11 ADDI
SLTI SLTIU XORI ORL ANDI
imm
Hình 2.1 Tập lệnh RV32I
37 lệnh này được chia thành 6 định dạng (R, I, S, U, B, J) như Hình 2.2 bên
dưới Trong đó, R, I, S, U là bốn nhóm chính, chúng có chiều dài cố định là 32bit vàphải được viết dudi dang 4 byte với mỗi lệnh trong bộ nhớ Chúng có chức năng thựcthi các lệnh tính toán toán học, truy cập bộ nhớ và thiết lập giá trị cho thanh ghi
Riêng B(branch) và J(jump) là 2 nhóm có chức năng đặc biệt dé kiểm soát luồngchương trình, chúng không phải xử lý dữ liệu trực tiếp như 4 nhóm lệnh chính Điều
Trang 16này giúp cho phân biệt rõ ràng giữa các lệnh xử lý dữ liệu và lệnh kiểm soát luồngchương trình thực thi, giúp cho kiến trúc RISC-V trở nên rõ ràng và hoạt động hiệu
quả hơn.
31 30 25 24 21 20 19 15 14 12 11 8 7 6 0
| funct7 rs2 rsl funct3 rd opcode | R-type
[ Imm[11:0] rsl funct3 rd opcode | I-type
| imm[11:5] rs2 rsl funct3 imm[4:0] opcode | S-type
imm|10:5 rs2 rsl funct3 | imm|4:1] | imm|11} | opcode | B-type
[ imm[31:12] rd opcode | U-type
[imm[20] | imm/[10:1] | mmm[11] imm{19:12] rd opcode | J-type
Hinh 2.2 Dinh dang cau trúc các trường lệnh cua RV32IDưới đây là bảng mô tả chỉ tiết các lệnh trong RV32I hoạt động và chức năng của
chúng (Hình 2.3)
Trang 17Table 8.1 RV32I: RISC-V integer instructions
3 | funct7 Type | Instructior Descrip:
OF funct tion Operation
(0000011G) |000 f= YE [IB ras tmírs [load byte r= SHQNERUCCAGCrESS IVa)
fooooon (3) Joos — [=r [TC rd Di load half] ro-= Sint taaresstis) | foooooa (3) —Jor0—[=-———t fw ra —tmrs1) loud word ]ra= tasers ine | fooooos 3) —|100—|-———t | ba — ra Tn rs1) load byte unsigned | rd = —Terobitttaaaressty 3) |
ae i on Tế rd, imm(rsl) pea hall wnsgned _fr ZeroExt(({Address]j<.9)
0010011 (19) [000 addi rd, rsl, imm ladd immediate rd = rsl + SignExt(imm)
10010011 (19) [001 |0000000 |L |si1i_rd._rsi uinm |shift left logical immediate [rd = rsi << uimm
|0010011(19 [oro [= — |] Jsitỉ rd, rst imn |setlessthan immediate [rd = (rsi « $ignExt(imm, | foorooa (19) Jou —|- 1 [teva ra.—rat 1m Joe ess than imm unsigned [rd = (ral_<StantxtCimmn) | 0010011(19) [100 |——_[L [PT rổ, rst inn |xor immediate — — |ri= rst > StanExtCinm
0010011 (19) [101 — [0000000"[I_|srT1_rd rst vi [shift right logical immediate [rd = re! 33 vi
0010011 (19) 010 srai rd, rs1, uimm |shift right arithmetic imm rd = rsi >>> uimm
0010011 (19) It —[andr rã, T1 tm [and immediate [r= rst & SignExt(imm)
0110011 (51) situ rd, rsi, rs2 |set less than unsigned rd=(rsl< rs2)
0110011 (51) xor rd ng tra xor rd = rsl ^ rs2
0110011 (51) sr] rd, rsì, rs? |shift right logical rd= rsl >> rs2e:o
0110011 (51) sra rd¿ ofsl, rs2 |shift ripht arithmetic rd = rs1 >>> rs2¿,
0110011 (51) or
0110011 (51) ý S1, rs2 land
0110111(55) |- + upimm load upper immediate pra = lupimm, 12°b0}
1100011 (99) |000 rs2, label! branch if = if (rsl = rs2) PC = BTA
1100011 (99) |00 rs2, 1abel |branch if + if (rsl ® rs2) PC = BTA
11000115)
1100011 (99) iB [bge esl, rs2, label |branchif > if (rsl 2 rs2) PC = BIA
1100011 (99) bltu rsl, rs2, Iabel |branch if < unsigned if (rsl < rs2) PC
1100011 (99) bgeu_rsl, rs2, label| branch if > unsigned if (rsl 2 rs2) PC = BTA
1100111 (103) jalr rd, rs1, imm |jump and link register PC = rs1 + SignExt(imm), rd = PC +4
1101111 (111) jal rd, label jump and link PC =JTA, rd = PC +4
e Thanh ghi x0: là thanh ghi không thé ghi đè, nó luôn chứa giá trị 0
e Thanh ghi x1: thanh ghi thường được dùng dé lưu địa chỉ trả về trong các lệnh
gọi hàm.
e Thanh ghi x2: thường được dùng làm con trỏ stackpointer Nó quan lý gọi va
trả lời hàm, giúp đảm bảo rằng các địa chỉ trả về và các biến cục bộ được lưu
trữ một cách có trật tự, cho phép chương trình truy cập và khôi phục chúng
một cách chính xác khi cân.
Trang 18e Thanh ghi x3: Con trỏ toàn cục, được dùng dé lưu trữ diachir cơ sở của một
vùng nhớ mà trường chình sử dụng để lưu trữ dữ và truy cập dữ liệu toàn cục
e Các thanh còn lại x4-x31 thường được sử dụng cho các mục đích tổng quát.
Sự phân bổ và sử dụng linh hoạt các thanh ghi trên cho phép RV32 hoạt động hiệuquả trọng việc xử lý nhiều tác vụ từ đơn giản đến phức tạp
register | ABI | description register | ABI |
x0 zero x16 a6
x1
x2 x3 x4 x5 x6 x7 x8 x9
x10
x11 x12 x13 X14 x15
ra
sp gp tp to t1 t2 s0/fp s1
a0
a1
a2 a3 a4 a5
Hardwired zero.
Return address Stack pointer Global pointer Thread pointer Temporary 0 Temporary 1 Temporary 2 Saved register0/frame pointer
Saved register 1 Function argument/return value 0 Function argument/return value 1
Function argument 2 Function argument 3 Function argument 4 Function argument 5
2.1.3 Kién tric Pipeline 5 Tang
x17
x18
x19 x20 x21 x22 x23 x24 x25 x26
x27
x28
x29
x30 x31
a7
s2 s3
s4 s5 S6 s7 s8 s9 s10
s11
t3 4 t5 t6
Function argument 6 Function argument 7 Saved register 2 Saved register 3 Saved register 4 Saved register 5 Saved register 6 Saved register 7 Saved register 8 Saved register 9 Saved register 10 Saved register 11
Temporary 3 Temporary 4 Temporary 5 Temporary 6
Hình 2.4 Chức năng cụ thể của từng thanh ghi
Pipeline là một kỹ thuật quan trọng trong kiến trúc máy tính đã được phát triển
từ rất lâu Nó giúp làm tăng hiệu suất của vi xử lý bang cách phân chia quá trình xửthành nhiều giai đoạn dé hiện thực đồng thời nhiều lệnh mà không cần chờ đợi lệnhtrước hoàn tắt
Kiến trúc Pipeline 5 tầng đúng như tên gọi, khi mà kiến trúc của vi xử lý
RISC-V được chia ra thành 5 giai đoạn Mỗi giai đoạn được ngăn cách bằng một thanh ghichặn dữ liệu,từng giai đoạn sẽ hoạt động độc lập cho phpes xử lý đồng thời nhiềulệnh ở các giải đoạn khác nhau trong pipeline Các tầng có trong kiến trúc Pipeline 5
tâng gôm có:
e Instruction Fetch (IF): Đọc lệnh
Trang 19e Instruction Decode (ID): giả mã lệnh
e Execute (Ex): Thực hiện các pháp tính hoặc xử lý logic
e Memmory (Mem): Truy cập bỗ nhớ dé đọc hoặc ghi dữ liệu
e Write Back (WB): Ghi lại kết qua
Time
Hình 2.5 Mô phỏng lệnh được thực thi trong kiến trúc không pipeline và pipeline
2.1.4 Xung đột trong RISC-V
Van dé mà mọi kiến trúc Pipeline gặp phải đó là các loại xung đột (Hazards) Vìvậy cần có khối xử lý các vấn đề về xung đột dữ liệu trong quá trình hoạt động củakiến trúc pipeline Các loại xung đột dữ liệu có thê xảy ra gồm:
s* Load Hazard: Load hazard xảy ra khi một lệnh cần sử dụng dữ liệu từ
một lệnh load trước đó vẫn chưa hoàn thành Điều này gây ra tình trạngphụ thuộc dữ liệu do lệnh thứ hai cần phải đợi dữ liệu được ghi vào thanhghi từ bộ nhớ Ví dụ, nếu một lệnh load đọc dit liệu vào một thanh ghi,
và lệnh tiếp theo ngay lập tức can sử dụng thanh ghi nay dé thực hiện
tính toán hoặc lưu trữ, lệnh thứ hai sẽ phải chờ cho đến khi lệnh load
hoàn tất việc lấy dữ liệu Ví dụ cụ thể và cách giải quyết xung đột nàyđược thể hiện trong hình sau:
Trang 20Hinh 2.6 Vi du vé Load Hazard
Dé giải quyết tình trang nay, Hazard Unit sẽ phát hiện và xác định loại xungđột này bằng cách so sánh các thanh ghi được sử dụng trong câu lệnh với nhau (thanh
ghi đích ở tầng EX của lệnh Iw) và các thanh ghi nguồn của lệnh sub ở tang ID Saukhi đã xác định được loại xung đột (Load Hazard), Hazard Unit sẽ tiễn hành stall
pipeline lại 1 chu kỳ Lệnh “sub” sẽ được nạp lại vào pipeline theo như hình trên Lúc
này, dữ liệu vẫn chưa ghi trở lại Register File nhưng tới chu kỳ sau lệnh “sub” cần
dữ liệu cho tang EX Tại đây, ta dùng tiếp kĩ thuật Forwarding dé chuyền trục tiếpgiá trị vừa lấy ra khỏi Data Memory và đưa ngược lại vào tầng EX Lúc này,Forwarding Unit sẽ đưa ra các tín hiệu điều khiển những con mux (Hình 2.6) dé lựachọn đối số thích hợp cho ALU
s* Read After Write (RAW): Đây là loại xung đột phô biến thường gặp,
nhưng các giải quyết chúng rất đơn giản Ví dụ cho loại xung đột trênđược thé hiện ở hai hình bên dưới (Hình 2.7 và Hình 2.8)
10
Trang 21Hình 2.8 Mô hình tổng quát hon của xung đột RAW
Hướng xử lý loại xung đột này khá đơn giản khi sử dụng tiếp kĩ thuậtForwarding dé nhìn trước xem các lệnh có sử dụng cùng một thanh ghi ở từng thời
điểm như thé nào dé có cơ chết Forward hợp lý Nhìn vào lệnh “and” và “or” ở Hình3.9 , Forwarding Unit sẽ quyết định Forward giá trị từ tầng MEM quay lại tang EX
của lệnh “AND” và từ tang WB về tang EX cho lệnh “OR” Riêng đối với lệnh
11
Trang 22“ADD” dưới lệnh “OR”, cần xử lý bằng cách ưu tiên đây giá trị của “RD” ra thang
“RS1” hoặc “RS2” khi thanh ghi nguồn “RS1” hoặc “RS2” bang giá trị thanh ghi
đích “RD”.
2.2 Giải thuật Branch Prediction
Trong kiến trúc máy tính, Branch Prediction là một giải thuật để cải thiện hiệuxuất của vi xử lý Bằng cách giúp vi xử lý đoán trước hướng đi của các nhánh trong
luồng lệnh mà không cần chờ đợi kết quả của nhánh đó Khi một nhánh được dự đoán
đúng, vi xử lý có thể thực thi lệnh tiếp theo liền mạch mà không bị gián đoán, giảm
thiêu độ trễ và tăng tốc độ xử lý tổng thể Mục đích Branch Prediction được sinh ra
là để hỗ trợ các kiến trúc pipeline Nó đóng một vai trò quan trọng trong việc nângcao hiệu suất của nhiều kiến trúc vi xử lý hiện đại Branch Prediction đã có sự phát
triển đáng ké từ những năm 1980, khi các kiến trúc vi xử lý bắt đầu dối mặt với các
thách thức về hiệu suất đo độ lớn kiến trúc pipeline ngày càng tăng lên Từ nhữnggiải thuật dự đoán đơn giản ban đầu, theo thời gian và sự đổi mới về công nghệ, xuấthiện những giải thuật dự đoán mới hiệu quả hơn, mang đến độ chính xác cao hơn
Có hai khía cạnh chính của Branch Prediction cần quan tâm Một là xác định
hướng đi (Taken or Not Taken) của nhánh, hai là dự đoán địa chỉ thực thi tiếp theo(Target Address) sẽ nhảy đến nếu nhánh được thực hiện Một câu lệnh rẽ nhánh cóthé được thực thi và nhảy đến một vùng địa chỉ khác trong vùng nhớ hoặc sé khôngđược thực thi và vi xử lý sẽ tiếp tục thực thi lệnh tiếp theo sau khi lệnh rẽ nhánh kếtthúc Vi xử lý sẽ không biết chắc chắn khi nào lệnh rẽ nhánh sẽ được thực thi cho đếnkhi kết quả của lệnh rẽ nhánh được tính toán ở tầng Execute trong kiến trúc pipeline
(Hình 2.9).
Nếu không có giải thuật Branch Prediction, vi xử lý phải đợi cho đến khi lệnh
rẽ nhánh đi qua tầng Execute trước khi lệnh tiếp theo bước vào tầng Fetch trongpipeline Bộ dự đoán có gắng tránh lãng phí thời gian này bằng cách dự đoán nhánh
có được thực thi không và dự đoán luôn cả nhánh có khả năng nhất tiếp theo sẽ được
thực thi Nêu dự đoán sai, các lệnh của nhánh được dư đoán sé được loại bỏ va
12
Trang 23pipeline sẽ bắt đầu lại với nhánh đúng, gây ra độ trễ và giảm hiệu suất Khoảng thời
gian trễ trong trường hợp dự đoán sai được tính bằng số tầng pipeline tính từ tầng
Fetch cho đến tầng Execute Kết quả là khi vi xử lý có càng phức tạp sẽ cần nhữnggiải thuật dự đoán tốt hơn dé giảm thiểu số chu kỳ hoạt động
2.2.1 Giải thuật Two-level Gshare Branch Prediction
Trong quá trình phát triển của các giải thuật dự đoán, một số giải thuật được ra
đời từ sự kết hợp hay cả tiến một số giải thuật trước dé nâng cao hiệu suất và kế thừacác ưu điểm của hai giải thuật trên Giải thuật Two-level Gshare Prediction hay
“Gshare Predictor” là một giải thuật dự đoán được phat triển dựa trên sự kết hợp đặc
biệt giữa giải thuật Two-level Adaptive và giải thuật Global History Mặc dù, so với
hiện nay, giải thuật này không mới nhưng nó là giải thuật dự đoán mang đến hiệu suất
cao và đáng tin cậy Nồi bật là dòng chip Intel Pentium M, Intel Core và Intel Core 2
đã sử dụng thuật toán này cho lõi vi xử lý kiến trúc ARM [2] Bên cạnh đó, hiện naycũng đã có một số bài báo mới cũng sử dụng thuật toán này trên core RISC-V [3]
13
Trang 24Giải thuật Two-level Gshare Branch Prediction kế thừa hai mức lịch sử để dự
đoán nhánh từ giải thuật Two-level Adaptive và sử dụng lịch sử toàn cục của các
nhánh trước đó thay vì lịch sử riêng lẻ của từng nhánh Các tính chất về độ hiệu quảcủa thuật toán trên đã từng được nhiều nghiên cứu chứng minh Nghiên cứu của tácgiả Gwennap [4] có một kết luận rằng giải thuật Two-level Adaptive mang lại độchính xác cao rất thích hợp cho các hệ thống phức tạp được phát triển trong tương lai
Trong khi tác gia Yale Patt [5] đã so sánh một vài thuật toán khác nhau trong đó có
thuật toán Global history Bài báo kết luận rằng giải thuật Global history thích hợp
để xử lý các chương trình số nguyên tốt hơn cũng như các câu lệnh if-then-else có
trong chương trình cũng được xử lý hiệu quả hơn Tuy nhiên, khi sử dụng lịch sử toàn
cầu, lịch sử mẫu của các nhánh khác nhau gây cản trở lẫn nhau nếu chúng ánh xạ đến
cùng một bảng lịch sử mẫu Do đó, giải pháp được đưa ra là tạo địa chỉ dò cho bảng
bang dự đoán bang cách kết hợp thanh ghi lưu dự đoán (GHR) với địa chỉ nhánhnhảy Có hai cách kết hợp dé tạo ra địa chỉ độc nhất cho bảng dự đoán là XOR hoặcghép thanh ghi lịch sử với địa chỉ nhánh nhảy Nếu sử dụng phép XOR thì thuật toán
sẽ trở thành “gshare” và trở thành “gselect” nêu ghép bit [2] Nghiên cứu của tác giảMcFarling [6] chi ra rằng “gshare” mang lại hiệu quả về độ chính xác cao hơn
“gselect” với độ sâu của bang dự đoán dat 256 bytes hoặc hơn Thanh phan quantrọng không kém trong các giải thuật dự đoán là bộ dự đoán Có nhiều bộ dự đoán
khác nhau được nghiên cứu và phát triển như “always taken”, “onebit” hay “2-bit
saturating counter” nhưng bộ dự đoán 2-bit Saturating counter (Hình 2.10) mang lại
độ hiéu quả hơn hết Điều này đã được chứng minh qua nghiên cứu [7] Giải thuật
như một máy trạng thái sẽ chuyền đôi trạng thái mỗi khi nhận được tín hiệu thực thi
hoặc không thực thi mỗi khi có nhánh nhảy xuất hiện
14
Trang 25Hình 2.10 Sơ đồ trạng thái 2-bit Saturating counter
Tom lai, gidi thuat “gshare” hay Two-level Gshare Branch Prediction hiéu qua
với uu điểm về độ chính xác cao Cực kì thích hợp với các chương trình có nhiều
nhánh nhảy khác nhau và được lặp lại đặc biệt là các câu lệnh if-else cùng với các
vòng lặp phức tạp Cái mà mà các chương trình nhúng trong các thiết bị IoT thườngxuyên sử dụng cho những giải thuật Giải thuật này khá dé dàng triển khai nhưng cónhược điểm là cần kha khá tài nguyên để thiết kế Cấu trúc giải thuật gồm:
e Branch History Register (BHR): có cau trúc là một thanh ghi, lưu trữ cả dia
chỉ các nhánh lịch sử và kết quả của nhánh đó BHR lưu trữ kết quả (take hay
not take) của các nhánh trước đó Mỗi khi một nhánh mới được thực thi, lịch
sử nhánh sẽ được cập nhật Kết quả các nhánh lịch sẽ được sử dụng để dự đoánkết quả của nhánh hiện tai qua thuật toán 2-bit saturation counter (Hình 2.10)
e Pattern History Table: Là một thanh ghi lưu trữ các thang thái dữ đoán cho
cách nhánh dựa trên các mẫu lịch sử nhánh Địa chỉ truy cập cua PHT là kết
quả của phép XOR giữa các bịt địa chỉ nhánh lịch sử và địa chỉ nhánh hiện tại.
e Phép XOR: Đây là điểm khác biệt của thuật toán khi nó dùng dé tạo ra một dia
chỉ duy nhất cho mỗi mẫu lịch sử nhánh Nó giúp cái thiện độ chính xác dựđoán bằng cách tận dụng tốt hơn không gian địa chỉ của PHT
15
Trang 262.3 Quy trình thiết kế ASIC
2.3.1 Giới thiệu về quy trình thiết kế ASIC
Sự tiến bộ nhanh chóng trong công nghệ bán dẫn đã thúc đây nhu cầu về cácphương pháp thiết kế tiên tiến để tạo ra các mạch tích hợp (IC) phức tạp Quá trìnhchuyên đổi từ thiết kế RTL thành thiết kế vat lý san sàng cho nhà máy sản xuất là mộtquá trình quan trong và phức tap trong thiết kế VLSI (Very-Large-Scale Integration).Quy trình từ RTL (Register Transfer Level) đến GDSII (Graphic Data System II) làmột quy trình cơ bản trong thiết kế chip hiện dai, với trọng tâm là bộ công cụ toàndiện do Cadence Design Systems cung cấp
Quy trình từ RTL đến GDSII bao gồm nhiều giai đoạn, mỗi giai đoạn đều quantrọng dé đảm bảo tính năng, hiệu suất và khả năng chế tạo của IC cuối cùng Bắt đầu
từ mô tả thiết kế cấp cao, quy trình tiến hành qua các bước tổng hợp, thiết kế kiểmtra, floorplan, PnR, CTS và các giai đoạn kiểm tra khác nhau, cuối cùng tạo ra fileGDSII Dinh dạng file nay là tiêu chuẩn công nghiệp dé đại diện cho bố cục vật lý
cua IC va rat quan trọng cho việc chê tạo.
Bộ công cụ của Cadence, bao gồm Genus Synthesis Solution, Innovus
Implemen-tation System, Tempus Timing Signoff Solution, Pegasus Verification
System, va Voltus IC Power Integrity Solution, cung cấp một môi trường tích hợp vàmạnh mẽ dé thực hiện mỗi giai đoạn của quy trình từ RTL đến GDSII Các công cụnày đảm bảo rằng các thiết kế có thê đáp ứng các yêu cầu khắt khe về tần số, hiệusuất, công suất và diện tích Hình 2.11 bên dưới là quy trình thiết kế cơ bản các bước
từ thiết kế RTL cho đến GDSII
16
Trang 27Quy trình bao gồm các bước:
Yêu cầu và Đặc tả Thiết kế (Requirements and Specifications): Quy trình thiết
kế ASIC bắt đầu bằng việc thu thập và phân tích yêu cầu từ khách hàng hoặctài liệu yêu cầu để xác định rõ các chức năng, hiệu suất, và điều kiện vận hànhcủa thiết kế
Thiết kế RTL (RTL Design): là quy trình mô tả và kiểm tra chức năng củathiết kế bằng ngôn ngữ HDL như Verilog Quá trình này lặp lại cho đến khi
thiết kế đạt được độ chính xác và hiệu suất mong muốn, trước khi chuyển Sangbước tổng hợp logic
17
Trang 28e Tổng hợp logic (Logic Synthesis): là quá trình chuyền đổi thiết kế RTL thành
một mạng lưới công logic (gate-level netlist) Trong quá trình tổng hợp, thiết
kế RTL được dịch sang các phần tử logic cơ bản như công AND, OR, NOT,
và các flip-flop.
e Kiểm tra tính tương đương logic (Logic Equivalence Check): là quá trình xác
minh rằng thiết kế logic sau khi tổng hợp (gate-level netlist) vẫn giữ nguyênchức năng như thiết kế ban đầu ở mức RTL Đảm bảo rằng các tối ưu hóa và
chuyển đổi trong quá trình tổng hợp không làm thay đôi chức năng mong muốn
của thiết kế
© Thiết kế vật lý (Physical Design): gồm rất nhiều công đoạn và có thé phải thực
hiện nhiều lần Quá trình bao gồm Placement, routing, validation vaverification Khi công đoạn validation va verification không đạt yêu cau sẽ cầnphải quay lại chỉnh sửa thiết kế vật lý
e Tạo file GDSII: Kết quả của những bước trên sẽ tạo ra một tệp có định dạng
chuẩn lưu trữ thông tin cho quá trình thiết kế của nhà máy (fabrication)
2.3.2 Giới thiệu về bộ công cụ Cadence tools
Với quy trình thiết kế phức tạp và rất nhiều giai đoạn như trên, Cadance cungcấp cho người dùng một quy trình hệ sinh thái với đầy đủ các loại ứng dụng khácnhau đề phục vụ riêng biệt cho từng bước thiết kế Lấy ví dụ từ bước thiết kế từ Hình
2.9 chúng ta có:
e Xcelium: Xcelium là công cụ mô phỏng — simulation các thiết kế được
viết dưới dang Verilog
e Genus: Genus Synthesis Solution là công cụ dùng dé tổng hợp thiết kế
RTL Cụ thé, Genus chuyển đồ mô tả thiết kế ở mức ngôn ngữ phan
cứng (HDL) như Verilog, Systemverilog, VHDL thành một mạng lưới
công logic được tối ưu hoá
© Conformal: Conformal là công cụ kiểm tra tính tương đương giữa hai
phiên bản thiết kế (formal equivalence checking) Nó được sử dụng
18
Trang 29trong bước xác minh thiết kế vi mach dé đảm bảo rang hai phiên bản
của thiết kế, chăng hạn như thiết kế RTL và thiết kế tổng hợp tương
dương về mặt chức năng
e Innovus: Đây là công cụ thiết kết vật lý mạnh mẽ, có thé coi là mũi
nhọn của Cadence Bao gồm các tính năng toàn diện hỗ từ bừ bướcplacement, optimization, clock tree synthesis và routing dé đám bảo các
lỗi về IR và EM trong quá trình thiết kế mà không làm ảnh hưởng đến
PPA(hiệu suất, công suat, dién tich) cudi cùng.
se Một số công cụ hỗ trợ khác như Voltus, Virtuoso, Modus, Tempus,
19
Trang 30CHƯƠNG 3 PHƯƠNG PHÁP THIẾT KÉ
3.1 Thiết kế RTL bộ vi xử lý RISC-V RV32I với Branch Prediction
3.1.1 Kiến trúc bộ vi xứ lý RISC-V
Vi xử lý có cấu tạo gồm 3 phần như trong Hình 3.1: Controller (phần mau
xanh), phần Datapath (phan màu xám) và các thành phan phụ (phần màu đỏ) dé phục
vụ mục đích kiểm tra cũng như là tạo I/O cho thiết kế Bộ controller điều khiển cáctín hiệu theo từng lệnh và gửi các tín hiệu điều khién xuống cho khối datapath
value address DataOrReg instruction Future Bus
LN
Hình 3.1 Kiến trúc của bộ vi xử lý RISC-V
Bộ vi xử lý được thiết kế với chân nạp lệnh trực tiếp từ bên ngoài vàoInstruction Memory qua chân tín hiệu "instruction" Quá trình nạp lệnh sẽ mat 1 chu
kỳ xung clock cho mỗi lệnh Trong quá trình này, Datapath sẽ tạm dừng hoạt động
vì tín hiệu "start" được điều khiển từ bên ngoài sé stall hai thanh ghi IF và ID Khi
quá trình nạp lệnh hoàn tất và tín hiệu "start" được kích hoạt (giá trị 1), hệ thống sẽhoạt động bình thường Chi tiết các tín hiệu trong thiết kế được mô tả trong Bảng 3.1
20
Trang 31Bang 3.1 Bảng mô tả tín hiệu của vi xứ lý
Tín hiệu VO | Số bit Mô ta chức năng
clk I Ị Xung clock toàn hệ thống.
rst n I 1 Tin hiệu reset tích cực mức thấp toàn hệ
5 thông.
start I 1 Tin hiệu cho phép vi xử ly hoạt động
DataOrReg I 1 Tín hiệu lựa chọn muốn xem kết quả của
Data Memory hay Register File
check_address I 32 | Dia chi muốn kiểm tra giá trị trong bộ nhớ
value O 32 | Giá trị được đọc ra
Instruction I 32 | Lệnh được nạp vào thông qua chân này
address I 32 Dia chi lệnh được nap vào trong Instruction
Memory
3.1.1.1 Controller
Khối Controller trong bộ vi xử lý có vai trò quan trọng trong việc điều khiển các
hoạt động của vi xử lý dựa trên các tín hiệu đầu vào do Datapath cung cấp sau quátrình giải mã lệnh Hình 3.2 minh họa tổng quan về khối này, với các tín hiệu input
va output chính được liệt kê dưới Bang 3.2 như sau:
Bảng 3.2 Bảng mô tả tín hiệu của khối Controller
Trang 32branch_D O 1 Báo hiệu lệnh rẽ nhánh, đi vào bộ dự đoán
jump_D[1:0] O | 2 | Điều khién nhảy, xác định loại nhảy thực hiện,
đi vào bộ dự đoán nhánh.
load_sel_D[2:0] O 3 Chọn kiểu ghi dữ liệu, xác định cách thức dữ
liệu được lây ra từ bộ nhớ Data Memory
memWrite_D O | 1 | Điều khiến ghi bộ nhớ, quyết định thời điểm dữ
liệu được ghi vào bộ nhớ.
regWrite_D O | 1 | Điều khiến ghi Register File, quyết định thời
điêm giá trị được ghi vào Register File.
store_sel_D[2:0] O 3 | Chọn kiêu lưu trữ dit liệu, xác định cách thức dữ
liệu được lưu trữ trong Data Memory.
Điều khiên ghi lại dữ liệu vào thanh ghi, xác
write_back_DỊI:0]| O | 2 | định cách dữ liệu được ghi lại vào thanh ghi sau
khi hoàn thành phép toán.
opcode[6:0] I 7 | Mã lệnh, xác định loại lệnh dé bộ vi xử lý thực
hiện.
Khối Controller nhận các mã lệnh và tín hiệu điều khiến từ các thành phan
khác của bộ vi xử lý và tạo ra các tín hiệu điều khién tương ứng Những tín hiệu này
điều khiển hoạt động của các thành phần khác như ALU, bộ nhớ, và các thanh ghi,đảm bảo rằng các lệnh được thực hiện chính xác và hiệu quả Điều này giúp đảm bảo
bộ vi xử lý hoạt động một cách trơn tru và đáp ứng các yêu cầu thiết kế đã đặt ra
22
Trang 33write_back_D alu_srcB_D
23
Trang 34Bảng 3.3 Bảng mô tả chỉ tiết tín hiệu của khối Datapath
Tín hiệu V/O | Sốbit | Mô tả chức năng
ADDRESS[3:0] 7 32 Địa chỉ hiện tại, điều khién bởi tín hiệu
address" từ Controller.
BROPCODE_D{2:0] | I 3 Điều khiến —~ xác định cách thức
thực hiện nhánh.
INSTRUCTION[31:0] |I1 |32 Tập lệnh được nạp vào, điệu khién bởi
instruction" tu top module.
LOAD_SEL_D[2:0] |I |3 Chọn kiểu lay dữ liệu từ Data Memory
24
Trang 35Chọn kiểu lưu trữ dữ liệu vào DataSTORE_SEL_D[2:0] 3 Memory.
Điều khiển ALU, quyết định các phé
alu_ctrl_D[9:0] 0 ALU mye pus
alu_srcA_D 1 Chon đầu vào A cho ALU
alu_srcB_D 1 Chon dau vao B cho ALU.
memWrite_D 1 Điều khiến ghi dữ liệu vào bộ nhớ.
mem_RA[8:0] 9 Dia chi doc dữ liệu từ bộ nhớ.
ra[4:0] 5 Dia chỉ đọc dữ liệu từ thanh ghi.
regWrite_D 1 Điều khién ghi dữ liệu vào thanh ghi
rst_n 1 Tin hiéu reset hé thống.
s data[31:0] == Dự lại sử dụng dé phát trién tinh năng
start 1 Tín hiệu khởi động quá trình xử ly.
write_back_D[1:0] 2 Điều khiến ghi lai đữ liệu vào thanh ghi
MemData[3 1:0] 32 Dữ liệu từ bộ nhớ được đọc ra.
RegData{3 1:0] 32 Dữ liệu từ thanh ghi được đọc ra.
funct3[2:0] 3 cue oe chi tiết về các lệnh cho
funct7[6:0] 7 ce we chi tiét vê các lệnh cho
m_addr[31:0] 32 Dia chỉ bộ nhớ cho các hoạt động sau
này.
25
Trang 36m_data[31:0] O | 32 Dữ liệu cho các hoạt động sau này.
m_rnw O | 1 Tín hiệu cho các hoạt động sau này.
3.1.1.3 Tầng Instruction Fetch
Lệnh được đọc từ bộ nhớ lệnh dựa trên địa chỉ hiện tại mà Program Counter
(PC) cung cấp PC sau đó được cập nhật (PC+4 hoặc địa chỉ nhãn đối với các lệnh
nhảy và rẽ nhánh) dé chỉ vào lệnh tiếp theo
3.1.1.4 Tầng Instruction Decode
Lệnh được đọc từ giai đoạn IF được giải mã dé xác định các thao tác và thanh
ghi cần dùng Một instruction 32 bit được lấy từ tang IF sẽ được cắt thành 3 trường
Opcode[6:0] (instruction[6:0]), funct3[2:0] (nstruction[14:12]) và funtc7[6:0]
(instruction[31:25]) Những tín hiệu này sẽ đưa sang khối Controller để Controllerquyết định những gì Datapath cần thực hiện
3.1.1.5 Tầng Execute
Tang Execute sẽ giải quyết hết tat cả các phép tính toán logic và tính toán số
học với bộ ALU Tầng này cũng chứa các bộ mux dé Hazard Unit (trường hợp xử lý
Forwarding) và Controller phối hợp điều khiển đối số đầu vào cho bộ ALU trước khi
bộ ALU thực hiện tính toán.
Trang 37write enable RF_W forwardAE
forwardBE
write_enable_RF_M
Hinh 3.4 Hazard Unit
Bang 3.4 Bang mô tả tin hiệu khối Hazard Unit
Tin hiệu VO Mô tả chức năng
Tín hiệu cho phép ghi vào thanh ghi RE của
write_enable RF M | I 1 :
tâng Memory (M)
write_enable RE W | I 1
27
Trang 38Tín hiệu điều khiến ghi lại dữ liệu vào thanh ghi
rs2_D I 5 | Giá trị thanh ghi ngu6n 2 tại tang Decode
rsl_E I 5 | Giá trị thanh ghi nguôn 1 tại tang Execute
rs2_E I 5 | Giá tri thanh ghi nguồn 2 tai tang Execute
rd_E I 5 | Giá trị thanh ghi dich trong tang Execute
Tín hiệu chon dau vào A của ALU trong tang
Khối Hazard Unit kiểm tra và so sánh đồng thời giá trị thanh ghi “RS1” và
“RS2” với thanh ghi đích “RD” cả tại tầng Memory và tang Write Back dé xác địnhtính hiệu cần được chuyền tiếp Khối này cũng kiểm tra tín hiệu cho phép ghi vàoRegister File tại tầng Memory và Write Back dé xác định chính xác trường hợp nàocần chuyền tiếp tín hiệu Nếu tín hiệu cho phép ghi vào Register File ở tầng nào sẽchuyền tiếp kết quả ALU tính ra được tại tầng đó Khối Hazard cũng giải quyết luônLoad Hazard (mô tả ở Hình 2.6) băng cách kiểm tra tín hiệu lựa chon Write Back ởtầng E dé xác định lệnh load cùng với kiểm tra “RS1” và “RS2” ở tang ID có trùng
28
Trang 39với “RD” ở tầng EX không Khi xác định có xảy ra loại xung đột này, Hazard Unit
sẽ “stall” tầng IF và ID lại một chu kỳ và xóa bỏ lệnh trong tang EX
3.1.2 Kiến trúc Branch Prediction
3.1.2.1 Tổng quan khối Branch Prediction
Khối Branch Prediction thu thập các thông tin về tín hiệu PC hiện tại của cáctang IF, ID, EX cũng như các thông tin về các nhánh nhảy dé đưa ra các dự đoán cho
nhánh đó Từ đó, nó giải quyết các xung đột về điều khiển trong quá trình thực thi
cua vi xử lý Nếu dự đoán nhánh rẽ của nó đưa ra là đúng, nó sẽ đưa địa chỉ của nhãnchương trình cần thực thi vào tầng Fetch PC sẽ bắt đầu thực hiện tiếp từ địa chỉ đó
cho đến khi lệnh rẽ nhánh qua tầng Execute và trả về kết quả của nhánh nhảy Nếu kết quả của nhánh trùng với dự đoán mà Branch Prediction đưa ra, chương trình sẽ
thực thi bình thường mà không hao phí chu kì nào Ngược lại nếu kết quả trả về sai,
vi xử lý sẽ xoá các lệnh đang thực thi hiện tại trong pipeline di và ghi lại đúng địa chỉ
lệnh cần thực thi Việc này sẽ gây ra sự tiêu tốn chu kì giảm hiệu suất của vi xử lý
Đề giảm thiểu sự sai sót đó, giải thuật Two-level Gshare Branch Prediction được áp
dụng trong khoá luận này Với việc kết hop Branch Target Buffer (BTB) với Pattern
History Table (PHT) cùng với thanh ghi Global History Register (GHR) — được tao
ra bang cách XOR dia chỉ PC hiện tại với dia chỉ nhánh lịch sử Giúp tăng hiệu suấtcủa vi xử lý Hình 3.5 bên đưới mô tả tông quan khối Branch Prediction và Hình 3.7bên dưới mô tả chỉ tiết hơn về giải thuật được
29
Trang 40Hình 3.5 Khối Branch Prediction
Cu thê, chức nang của từng tín hiệu của khôi Branch Prediction được mô tả
trong bảng Bảng 3.5 sau:
Bảng 3.5 Bảng mô tả tín hiệu của khối Branch Prediction
Số
Tín hiệu | LO bit Mô ta chức năng
clk I ¡ | Xung clock toàn hệ thống, đồng bộ hoá các hoạt
động trong module
rst n I ¡ | Tín hiệu reset tích cực mức thấp, khởi động lại trạng
7 thái cua module khi can jump_E I 1 | Tin hiệu thông báo lệnh nhảy không điêu kiện ở giai
g đoạn Execute
30