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ế vật lý bộ vi xử lý RISC-V hỗ trợ branch prediction

80 0 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

Thông tin cơ bản

Tiêu đề Thiết Kế Vật Lý Bộ Vi Xử Lý RISC-V Hỗ Trợ Branch Prediction
Tác giả Nguyen Hai Minh
Người hướng dẫn Th.S. Tạ Trí Đức, Th.S. Phạm Minh Quân
Trường học Đại Học Quốc Gia TP. Hồ Chí Minh
Chuyên ngành Kỹ Thuật Máy Tính
Thể loại Khóa Luận Tốt Nghiệp
Năm xuất bản 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 80
Dung lượng 80,42 MB

Nội dung

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 2

LỜ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 3

MỤ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 4

3.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 5

DANH 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 6

Hì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 7

DANH 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 8

DANH 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 9

SDC - Synopsys Design Constraints

UI - User Interface

Trang 10

TOM 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 11

CHUONG 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 12

chuyề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 13

s* Đố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 14

CHƯƠ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 15

RVä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 16

nà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 17

Table 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 18

e 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 19

e 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 20

Hinh 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 21

Hì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 23

pipeline 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 24

Giả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 25

Hì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 26

2.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 27

Quy 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 28

e 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 29

trong 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 30

CHƯƠ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 31

Bang 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 32

branch_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 33

write_back_D alu_srcB_D

23

Trang 34

Bả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 35

Chọ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 36

m_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 37

write 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 38

Tí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 39

vớ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 40

Hì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

Ngày đăng: 08/12/2024, 14:53

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN