Tập lệnh RV32I, một phan quan trọng của RISC-V, cung cấp nền tảng cơ bản cho các bộ xử lý 32-bit, mang lại hiệu năng cao và thiết kế đơn giản.. Khóa luận này trình bày việc phát triển mộ
Trang 1ĐẠI HOC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
NGUYEN BA VĂN - 17521248
KHOA LUAN TOT NGHIEP
NGHIEN CUU PHAT TRIEN BO KIEM TRA DANH GIA
HE THONG RISC-V CORE
RESEARCH AND DEVELOPMENT A TEST AND EVALUATION SUITE FOR RISC-V CORE SYSTEM
KY SU NGANH KY THUAT MAY TINH
GIANG VIEN HUONG DAN
Ts NGUYEN MINH SON
TP HO CHI MINH, 2024
Trang 2THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số 662/QD-DHCNTT
ngày 05 thang 07 năm 2024 của Hiệu trưởng Trường Dai học Công nghệ Thông tin.
Trang 3LỜI CẢM ƠN
Trước hết, lời đầu tiên em xin được cảm ơn chân thành nhất Tiến sĩ Nguyễn
Minh Sơn người đã chỉ dẫn, động viên và hỗ trợ em suốt quá trình nghiên cứu và
hoàn thành khóa luận này Với sự tận tâm, kiên nhẫn và những góp ý quý báu của
Thay đã giúp đỡ và hỗ trợ em rất nhiều trong quá trình thực hiện khóa luận
Em cũng xin gửi lời cảm ơn của mình đến toàn thé thầy cô thân yêu trườngĐại học Công nghệ Thông tin — Đại học Quốc gia Thành phố Hồ Chí Minh, đặc biệt
là quý thầy cô khoa Kỹ thuật Máy tính, những người đã dạy dỗ và truyền đạt đượccho em những kiến thức, kỹ năng và tạo điều kiện thuận lợi cho em trong thời gian
học tập vừa qua.
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của sinh viên nêntrong báo cáo này chúng em không thể tránh khỏi những thiếu sót Em rất mong nhận
được nhiều sự góp ý, nhận xét của quý thầy cô
Một lân nữa em xin chân thành cảm ơn!
TP Hồ Chí Minh, ngày 20 tháng 06 năm 2024
Sinh viên thực hiện
Nguyễn Bá Văn
Trang 4MỤC LỤC
CHƯƠNG1._ GIỚI THIỆU ĐỀ TÀI csssitceSSSEEEEEEEEEEEEevkvrrrrrrevvrrrrrree 2
1.1 Tổng quan đề tài es-iccccssreecevrirerertrirrrrrrrrrrtrrrrrrrrrrrrrrrrre 2
1.2 _ Các dự án phát triển ở nước ngồi .-cccccrrrceecvvrrrreererrrrrrerrerrrre 5
1.2.1 So lược các dự án nghiên cứu ngồi hƯỚC -«cccceererreerrerseee 5 1.3 Mục tiêu khĩa luận c-csccsccs+tsrtererrterttrrrrtkrrkrrkrrkersrrrkrrkrrsrrsrkrrerrk 6
I5 Mure ti@u noo 0o sẽ 6
1.3.2 Chỉ tiết về mục tiêu của khĩa luận ::c::iceeceevvvrrrtrrreecse 6
1.4 Phuong pháp thực hiện khĩa luận . -« «c©c«e+xereererrerxrerererkree 7
CHƯƠNG2 TONG HỢP LÝ THUYẾT :-ec2++eevEEeSEEE.evrrrrreee 9
2.1 GiGi thiệu về kiến trúc RISC-V -:-cccesvcvverttiiteeeevkktrrtrrriressekerrrrrrid 9
2.11 Tổng ae Šađ% eo 9
2.1.2 Tap lệnh cơ bản RV32I -ceccererrkirtriirirriirrrirrree 10 2.1.3 Tap lệnh mở rộng của RISC-V -ccccceereekreeireirerierierrree 13
2.1.4 RISC-V RV22IL He, 14
2.2 Hệ thống xác minh chức năng bộ xử lý .c-ee+reeccccrrrrecccerrrree 20
2.2.1 Random Test Ge€neTafOT -«-cxetrrterktetekirtrrirtrirririrrrrrrierrree 21
2.2.2 Testbench ControÏÏ€T e ss«cs+xrEktrEkrEkirkkitkrirtietrirrkirerree 21
2.2.3 COImp-TUTN€T -e set HH 21
2.2.4 Coverage MONI(OT ce<ScssteErkeerirtrrttrrtkrrrirrrirrririrrrrree 22 2.2.5 Instruction Set Simulator oc ssesssessssessseessessssesseessseessessseesssersnsessseesssessseesane 22
2.2.6 RTL Simulation ecccceessessecseessessecsecseesesstesseeseeseessesseseeseessessesseeseesseanesseeneenss 22
CHUONG 3 Tổng quan thiết kế hệ thống -cceccesccccvvvessrrre 24
3.1 Tổng quan về hệ thống -ccc2+eecettreevertrreretrrrrrvrtrrrrrrrrrrrrrrre 24
Trang 53.2 Các khối chức năng có trong hệ thống -ecceireecvevrrrreceverrrre 26
3.2.1 AsseImbIer -ccsccecsrresrrrkersrtetsrrrtsrsrkrtrrkrtsrkrkrrrsrrsrkrksrersrrsre 26
3.2.2 Configuration fiÏ€ -c-«-ccxecktrkirthHh te riet 28 3.2.3 Instruction Set SimulafOr s scs+c+svceesttsrtsrserersrkersersersrssrssrk 29
3.2.4 RTL Simulation .-ssccscs+cse+teeskketsrsrtersrtrtsrtetsrkrkrrrsrrsrsrrsrsrerrsre 30
3.2.5 COMP-RUNDMEL oon eeeeeseessessesseessesseeseeseeseeseeneeneeatesseeneeseeatesseeneeneeateatesseeneeateatenesseeass 32
CHƯƠNG 4 QUY TRINH MO PHONG VA DANH GIÁ KET QUẢ 33
4.1 Quy trình mô phỏng cho hệ thống đánh giá kiểm tra RISC-V 33
4.2 So sánh và đánh giá kết quả s2-+ceetreeeerreeerrrrvrrrrrrrrrerrrree 41
CHƯƠNG 5 KET LUẬN VÀ HƯỚNG PHÁT TRIỂN -c.:- 55
eC 55
5.2 Hướng phát triGtr ccesssssssssessssssessssosessssssssssssssssssssssasssesssssssssssessassssssnsnsessasseeen 56
Trang 6DANH MỤC HÌNH
Hình 1.1 Hệ thống xác minh chức năng bộ xử lý 2-2 2 2+ 2+£z+szz£+xze: 4
Hình 2.1 Cấu trúc tap lénh RISC V 13
Hình 3.1 Thiết kế kiến trúc hệ thống . :- ¿2£ ©2+2©++£+++£x++Ex+zrxrzrxrrreee 25 Hình 3.2 Sơ đồ hoạt [0i 500i 0a Soi 27
Hình 3.3 Minh họa cho chương trình tệp mã MAY - ¿+ 5+5 +++s>+*s+ss++x 28 Hình 3.4 So đồ hoạt động của khối ISS - 2 2 2 + £+E++E£EE+EzEezrzrezreee 30 Hình 3.5 Sơ đồ tong quát RTL Simulation - 2-2 2 2+2 ++++£++£++xzzzzzxeez 31 Hình 3.6 Sơ đồ tổng quát của Comp-Runner -2- 2 2 s++2x++£x++zxzzxezzsez 32 Hình 4.1 Quá trình mô phỏng và kiểm tra, đánh giá -2 2-¿©csz+cxz+5s+2 33 Hình 4.2 Tép chương trình thực tH1 - 5 G6 5111331 911331 9119 1 11 1 2x ngư 35 Hình 4.3 Thực thi từng dòng lệnh mã máy bằng bộ mô phỏng ISS - 36
Hình 4.4 Giá trị thanh ghi sau khi chạy ISS s1 xSxSsiirsirsreree 36 Hình 4.5 Giá trị bộ nhớ sau khi chạy ISS ¿- 5 22t +kEseeseserseesek 37 Hình 4.6 Giá trị độ bao phủ sau khi chạy ISS - 55555 *++++skseeereeereeees 37 Hình 4.7 Kết quả thực thi của bộ mô phỏng RTL -2- 2-2 2 s2 2+££2££+££2+£š 38 Hình 4.8 Giá trị thanh ghi sau khi thực hiện mô phỏng RTL Simulation 38
Hình 4.9 Giá trị bộ nhớ sau khi thực hiện mô phỏng RTL Simulation 39
Hình 4.10 Độ bao phủ sau khi thực hiện mô phỏng RTL - «<< «<2 39 Hình 4.11 Tệp nhật ký đưa ra so sánh giữa ISS,RTL cùng với đánh giá thiết ké 40
Hình 4.12 Cửa số Coverage Monitor đưa ra kết quả đánh giá thiết kế 1 40
Hình 4.13 Cửa số Coverage Monitor đưa ra kết quả đánh giá thiết kế 2 41
Hình 4.14 Tép tập hợp các lệnh dé thực hiện kiểm tra - 2-5: 44 Hình 4.15 Giá tri của tệp thanh ghi sau khi chạy mô phỏng ISS - 45
Hình 4.16 Giá tri của bộ nhớ sau khi mô phỏng ISS - 5 52c 46 Hình 4.17 Các lệnh được thực hiện sau quá trình mô phỏng ISS - 47
Hình 4.18 Giá tri của tệp thanh ghi sau khi chạy RTL simulation - 48
Hình 4.19 Giá trị của bộ nhớ sau khi chạy mô phỏng RTÌL - - - «+ 49
Hình 4.20 Các lệnh được thực hiện sau quá trình mô phỏng R'TL - 50
Trang 7Hình 4.21 Kiểm tra chéo kết quả với trình mô phỏng phan cứng Vivado 51
Hình 4.22 Giá trị của tệp thanh ghi sau khi chạy mô phỏng bằng Vivado 51
Hình 4.23 Mô phỏng các lệnh thông qua phần mềm RISC V Interpreter 1 52
Hình 4.24 Mô phỏng các lệnh thông qua phần mềm RISC V Interpreter 2 53
Hình 4.25 Giá trị của bộ nhớ thông qua phần mềm mô phỏng RISC V Interpreter 53 Hình 4.26 Giá trị thanh ghi thông qua mô phỏng RISC V Interpreter 54
Trang 8Bang 2.4 Các lệnh lấy dit liệu từ bộ nhớ vào thanh ghi -2- 2 2 225225: 15
Bang 2.5 Các lệnh có chức năng lưu dữ liệu vào bộ nhớ + «<+s+ 16 Bảng 2.6 Các lệnh có chức năng tính toán Ì «¿+ + EskEseEseeserserseree 17 Bang 2.7Các lệnh có chức năng tính toán 2 - + 1xx hư 18 Bang 2.8 Các lệnh có chức năng nhay eee eecesseeseceeceeeeseeeseeececeeeeeseeeeeseeseees 20
Bảng 3.1 Nội dung của tệp cấu hình đánh giá hệ thống 2-5 2 52522 29Bảng 4.1 So sánh hệ thống với bộ mô phỏng khác -2- ¿52222252 41
Bang 4.2 So sánh bộ mô phỏng ISS với bộ mô phỏng khác - « s«<+ 43
Trang 9DANH MỤC TU VIET TAT
Tir viét tat Mô tả
RISC Reduced Instruction Set Computer
ISS Instruction Set Simulator
RTG Random Test Generation
RV32I RISC-V 32 Integer
ISA Instruction Set Architecture
RVCoTS RISC-V Co-Simulation Test Suite
RTL Register Transfer Level
Trang 10TÓM TẮT KHÓA LUẬN
RISC-V (Reduced Instruction Set Computer V) [10] là một kiến trúc tập lệnh
mở và miễn phí, dựa trên thiết kế RISC Ra đời từ 2010, RISC V nhanh chóng thuhút được nhiều sự chú ý từ cộng đồng Với sự linh hoạt và hiệu quả trong thiết kếphan cứng và phần mềm, RISC-V đã trở thành một nền tảng phổ biến cho các ứngdụng đa dạng Tập lệnh RV32I, một phan quan trọng của RISC-V, cung cấp nền tảng
cơ bản cho các bộ xử lý 32-bit, mang lại hiệu năng cao và thiết kế đơn giản
Khóa luận này trình bày việc phát triển một hệ thống đánh giá thiết kế cho
kiến trúc RISC-V với tập lệnh RV32I "RISC-V Co-Simulator Test Suite" (RVCoTS)tập trung vào việc phát triển một hệ thống tự động hóa thử nghiệm và đánh giá cácthiết kế hệ thống dựa trên kiến trúc RISC-V RVCoTS được thiết kế để tạo ra các
mẫu thử thực hiện các tiêu chí đầu vào từ người dùng và tự động mô phỏng chúng
thông qua sự kết hợp giữa phần mềm mô phỏng ISS (Instruction Set Simulator) và
mô phỏng phần cứng RTL (Register-Transfer Level) Sau đó, RVCoTS cung cấpmột quy trình đánh giá tự động để đánh giá hiệu suất và độ tin cậy của thiết kế hệthống RISC-V
Ngoài ra, để đánh giá hiệu quả và tính đúng đắn của hệ thống, nhóm đã tiếnhành so sánh kết quả của nó với bộ mô phỏng RISC-V Interpreter và kết quả môphỏng phần cứng từ Vivado Kết quả cho thấy hệ thống của chúng tôi không chỉ đơngiản hóa quá trình kiểm tra và phát triển các bộ xử lý RISC-V RV32I mà còn đạtđược độ chính xác cao và hiệu quả trong việc xác minh thiết kế, phù hợp với các tiêu
chuân kiêm tra và mô phỏng hiện tại.
Trang 11CHUONG1 GIỚI THIỆU DE TÀI
sử dụng tập lệnh RV32I Các công cụ và phương pháp hiện tại thường yêu cầu sự kết
hợp giữa nhiều hệ thống và môi trường khác nhau, dẫn đến việc phức tạp hóa quy trình phát triển và kiểm tra.
Nhận thay đây là một trong những nhu cầu cấp quan trọng về một hệ thongđánh giá thiết kế đơn giản, hiệu quả va đáng tin cậy cho RISC-V RV32I, chúng tôixác định phát triển một giải pháp tích hợp, sử dụng mô phỏng phần mềm và phầncứng thông qua Python và thư viện cocotb[12] Động lực chính của đề khóa luậnnàylà tạo ra một công cụ có thé tự động hóa quá trình kiểm tra, giảm thiểu sai sót và
mô phỏng trong quá trình thiết kế bộ xử lý
Bằng cách kết hợp mô phỏng phần mềm độc lập phần cứng và mô phỏng phầncứng Verilog Nhờ có hệ thống này, việc phát triển và kiểm tra các thiết kế RISC-Vtrở nên đơn giản và hiệu quả hơn, đồng thời đảm bảo độ chính xác và tin cậy trongquá trình xác minh Việc này không chỉ khuyến khích cộng đồng phát triển kiến trúcRISC-V mà còn góp phần đáng ké nâng cao hiệu quả và tốc độ của các bộ xử lý sử
dụng tập lệnh RV32I.
Trang 12Bang 1.1 Những dự án dựa trên kiến trúc CPU RISC-V
Tên CPU Nhà phát triển Kiến trúc Sản phẩm
ESP32-C3 Wi-Fi &
ESP32-C3 Espressif Systems | RV32IM
sự phát triển của kiến trúc RISC-V trong nước và cộng đồng RISC-V Trong dự án
này, nhóm tiếp tục phát triển hệ thống xác minh thiết kế RISC-V dựa trên mô hình đã
được thiết kế, bao gồm các thành phần chính như RISC-V RTG, Testbench
Controller, RTL Simulation, Comp-runner và Coverage Monitor.
Trang 13e Random Testcase Generator (RTG): Đây là phần mềm chủ yếu dùng dé
kiểm tra tính năng của bộ xử lý RTG tạo ra các testcase bằng cách ngẫunhiên lựa chọn các lệnh, thanh ghi, địa chỉ va hợp ngữ dé kiểm tra kiến
trúc tập.
e Testbench Controller: Là khối quản lý việc thực thi các testcase trong cả
mô phỏng Instruction Set Simulator (SS) và RTL Simulation Nó khởi
dau bang việc chạy các testcase được sinh ra bởi RTG trên ISS
e Instruction Set Simulator (ISS): Là một chương trình mô phỏng phần mềm
với kết quả được xem như một mô hình tham chiếu kết quả mong muốn(golden model) dé so sánh kết quả dự kiến với kết quả thực tế từ RTLSimulation ISS mô phỏng hành vi của vi xử lý bằng cách thực hiện các
lệnh và giữ giá trị của các thanh ghi và bộ nhớ Chương trình này được
viết bằng ngôn ngữ python, không phụ thuộc vào thiết kế phần cứng của
người dùng.
e RTL Simulation: Mô phỏng RTL là quá trình kiểm tra chức năng của mô
hình phan cứng bằng các phương pháp như OVM và UVM dé xác minhtính chính xác của thiết kế Kết quả của mô phỏng RTL là sóng mô phỏng,
Trang 14giá trị của thanh ghi và bộ nhớ trong thiết kế của người dùng, ngoài ra,trong khóa luận này, nhóm trích xuất được các dòng lệnh được thực thi racửa số để người dùng có thé biết được thứ tự các lệnh được thực thi nhưthế nào.
e Comp-runner: Được sử dụng dé so sánh trạng thái của ISS với kết quả từ
RTL để đánh giá tính tương đồng giữa hai mô hình bộ vi xử lý Công cụnày cũng bao gồm module giám sát phạm vi bao phủ dé đo lường và báo
cáo vê mức độ bao phủ các thành phân của mô hình kiêm chứng.
1.2 Các dự án phát trién ở nước ngoài
1.2.1 Sơ lược các dự án nghiên cứu ngoài nước
Rocket Chip Generator [16] là dự án mã nguồn mở dé thiết kế cho CPU V,du án cung cấp các công cụ dé mô phỏng và kiểm tra tính chính xác của thiết kế
RISC-Dự án bắt đầu từ năm 2016 và vẫn đang được phát triển tích cực
e Uudiém:
o Cung cấp hệ thông đánh giá và kiểm tra CPU RISC-V
o_ Hỗ trợ nhiều tính năng nâng cao như bộ nhớ đệm đa cấp, dự đoán nhánh
và thực thi ngoài lệnh.
o Hỗ trợ nhiều kiến trúc RISC-V khác nhau
o Có cộng đồng người dùng và nhà phát triển lớn
e Nhược điểm:
o Quá phức tạp cho dé cho người mới sử dụng.
o Yêu cau trình độ chuyên môn cao trong việc thiết lập môi trường dé có
thê cài đặt môi trường
o_ Chưa hỗ trợ giao diện.
RISC-V Verification Suite [1] là một bộ công cụ mã nguồn mở miễn phí dé
xác minh tính chính xác của các trình biên dich RISC-V va mô phỏng RISC-V Dự
án hiện vẫn đang được phát triển tích cực
Trang 15o_ Quá phức tạp cho dé cho người mới sử dụng.
o Yêu cầu trình độ chuyên môn cao đề có thé cài đặt môi trường
o Không có giao diện người dùng
1.3 Mục tiêu khóa luận
1.3.1 Mục tiêu khóa luận
Mục tiêu của nhóm là thiết kế hệ thống kiểm tra đánh giá hệ thống RISC-Vdựa trên tập lệnh RV-32I Hệ thống có thé mô phỏng đánh giá thiết kế phần cứngbằng RTL simulation và ISS, sau đó so sánh kết quả giữa RTL Simulation và ISS(golden model) và đưa ra kết quả
1.3.2 Chỉ tiết về mục tiêu của khóa luận
Mục tiêu đề tài nghiên cứu chỉ tiết như sau:
e = Tìm hiểu kiến và nghiên cứu kiến trúc tập lệnh RISC-V Cụ thé hơn là có
thé thực thi 37 lệnh cơ bản của kiến trúc tập lệnh RV32I Qua đó nhóm cóthê phác thảo được thiết kế được hệ thống đánh giá, ngoài ra nhóm cònthiết kế cho bộ mô phỏng RTL Simulation thông qua thư viện Cocotb cótrong Hình 1.1 và phát triển hệ thống đánh giá RISC-V Core Cụ thể hơn
là các loại định dạng: R, I, S, U, J-type, SB được trìnnh bày ở Bảng 1-2
Bảng 1.2 Các lệnh cơ bản của kiến trúc RV321
Định dạng lệnh Lệnh
Trang 16R ADD, AND, OR, XOR, SLL,
SRL, SLTU, SUB, SRA, SLT,
I SLTI, LBU, SLTIU, LB, XORI,
JAL, ORI, ANDI, ADDI, SLLI, SRLI, SRAI, LW, LH, LHU
e Hỗ trợ đánh giá thiết kế phan cứng cũng như kiểm tra các tệp lệnh
assembly của người dùng.
e _ Có khả năng tính toán độ bao phủ dựa trên cấu hình của người dùng nhằm
hỗ trợ cho việc xác minh chức năng của các tệp đầu vào assembly hoặc bộ
RTG.
e Hệ thống trong khóa luận này có thé thực thi độc lập giữa ISS, RTL
Simulation hoặc chạy toàn bộ đề đánh giá thiết kế phần cứng
1.4 Phương pháp thực hiện khóa luận.
Dé hiện thực hóa mục tiêu mà nhóm đã đặt ra, nhóm đã xây dựng phương pháp
thực hiện bài bản, gôm các bước sau:
Trang 17“ Khối điều khién chính có chức năng điều khiến, điều phối luồng
dữ liệu ra vào giữa các khối và cung cấp cho các khối khác thực
hiện chức năng của khối đó.
x Khối kiểm tra kết quả có chức năng như tính toán kết quả, so sánh
các lệnh được thực thi giữa ISS và RTL Simulation, đồng thờiđánh giá được thiết kế
Thiết kế chi tiết các thần phan trên với các chức năng cụ thé, đảm bao
được độ chính xác, tôi ưu hóa hiệu quả hoạt động và yêu câu đánh giá.
> _ Triển khai hiện thực khóa luận theo quy trình phát triển theo 5 bước:
Kiểm tra: Thử nghiệm độc lập các khối chương trình để phát hiện và
sửa lỗi, xác nhận chương trình hoạt động chính xác và hiệu quả.
Trién khai: Việt mã, và kiêm tra các khôi chức năng trong thực tê.
> Đánh giá hệ thống:
v Từ kết quả của 2 bộ mô phỏng ISS và RTL, kiểm tra chéo với kết qua
của các bộ mô phỏng tập lệnh khác được công bố trên website của Tổ
chức RISC-V (riscv.org) và RISC-V Interpreter.
Lay kết qua từ phần mềm Vivado dé kiểm tra chéo kết quả mô phỏng
của hai chương trình mô phỏng ISS và RTL Simulation, từ đó xác nhận
kết quả có tính đúng đắn và chính xác trong quá trình mô phòng nhằmđánh giá độ tin cậy của hệ thống
Trang 18CHUONG 2 TONG HỢP LÝ THUYET
2.1 Giới thiệu về kiến trúc RISC-V
2.1.1 Tổng quan
Kiến trúc RISC-V có thiết kế linh hoạt dạng mô-đun linh hoạt với khả năngthích ứng cao cho các nhà phát triển vi xử lý, cho phép họ tùy chỉnh và thiết kế kiến
trúc phù hợp với nhu câu cụ thê của người dùng.
RV32I: Nền tang cơ bản cho vi xử lý RISC-V RV32I, tập lệnh số nguyên32-bit, RV32I đóng vai trò nền tang cơ bản cho kiến trúc Tập lệnh này bao gồm
đầy đủ các lệnh cần thiết cho một vi xử lý mục đích chung và tương thích với nhiều
phân mêm và trình biên dịch.
Cu thé, RV32I cung cap:
> Lệnh cơ bản: Các phép toán số học va logic đơn giản
> Lệnh điều khiển luồng: Điều hướng chương trình thông qua các nhánh,
vòng lặp và hàm.
> Lệnh truy xuất bộ nhớ: Đọc và ghi dữ liệu từ bộ nhớ
> Lệnh đánh địa chỉ bộ nhớ: Xác định vi trí dữ liệu trong bộ nhớ.
Mở rộng linh hoạt với các tập lệnh bô sung Từ nền tảng RV32I, các nhàphát triển và cộng đồng có thể phát triển và duy trì tập lệnh mở rộng dựa trên
RV32I Từ đó các tập lệnh này tạo nên một sự linh hoạt va nhiều khả năng phát
triển cho các nhà phát triển Các tập lệnh mở rộng nay bao gồm:
Bang 2.1 Bảng các tập lệnh cơ bản và mở rộng của RISC-V
Trang 19Integer Multiplication
and Division
A Cung cap các toán tử sô nguyên nâng
Atomic Instruction cao.
F Cung cấp các phép toán sé thực và | Cac mo rộng tiêu
Sigle-Precision dấu phay động với độ chính xác đơn chuẩn
Floating-Point cao.
D Cung cấp các phép toán số thực và Double-Precision | đấu phẩy động với độ chính xác kép
Floating-Point trong phép tính
2.1.2 Tập lệnh cơ bản RV32I
Tập lệnh cơ bản RISC-V RV32I đóng vai trò nền tảng cho kiến trúc RISC-V,cung cấp bộ lệnh đầy đủ cho các thiết kế lõi RISC-V đơn giản Hiện nay tập lệnh
RV32I đã được hỗ trợ hầu hết với các phần mềm và trình biên dịch, RV32I có 47
lệnh và được phân chia dựa trên chức năng của từng lệnh Thông qua opcode của
kiến trúc, ta có thé chia nó thành 9 nhóm như trong Bảng 2.2
Bang 2.2 Bảng miêu tả các lệnh của tập lệnh RV32I
Phân loại Opcode Lệnh Chức năng
BEQ, BNE, BLT, BGE, | Thực hiện rẽ nhánh
Rẽ nhánh 110 0011 `
BLTU, BGEU có điêu kiện
0000011 LB, LH, LW, LBU, LHU Truy xuất dữ liệu
Trang 20Chuyén dữ liệu từ
010 0011 SB,SH,SW
Lưu trữ bộ nhớ tạm thời
010 0111 FSW, FSD vào bộ nhớ chính
ADDI, SLTI, SRLI, SRAI, | Các lệnh thực hiện
001_0011 SLTIU, XORL SLLI, ORI, |các tính toán số
ANDI, học.
, ADD, SUB, XOR, SRL,
Sô học va luận
: SRA, OR, AND, SLL, SLT,
/ 011_0011 SLTU, DIVU, REM,
REMU, MUL, MULH,
MULHSU, MULHU, DIV, 001_0111 AUIPC
AMOOR.W, AMOMIN.W,
SCALL, FRFLAGS, | Truy cập vào các
SBREAK, RDCYCLE, | tính năng của hệ
Nhóm lệnh hệ Iii00¡ii |RDCYCLEH, , FSCSR, thống lõi và thực
Trang 21nhảy vô điêu kiện
và nhảy liên tiếp
Theo như Bảng 1.2, các lệnh thực thi RV321 được phân thành 6 nhóm chính:
> Nhóm R-Type: Thao tác thực thi các phép tính số học và logic 32bit
giữa ba thanh ghi.
Nhóm I-Type: Thao tác thực thi các phép toán số học và logic 32bit với
một thanh ghi và giá tri tức thoi.
Nhóm S-Type: Luu dir liệu từ thanh ghi vào bộ nhớ.
Nhóm SB-Type: So sánh giá trị của 2 thanh ghi và xác định vi trí của
lệnh tiếp theo.
Nhóm U-Type: Thực hiện thao tác với thanh ghi.
Nhóm UJ-Type: Lưu dit liệu vào thanh ghi và cung cấp địa chỉ được
tính toán từ thanh ghi base và giá tri tức thời.
12
Trang 2231 30 25 24 21 20 19 15 14 12 11 8 ic 6 0
funct7 rs2 rsl funct3 rd opcode
imm/{11:0] rsl funct3 rd opcode
imm[11:5] rs2 rsl funet3 imm|4:0] opcode imm{12] | imm[10:5] rs2 rsl funct3 | imm[4:1] | imm[11] | opcode
imm[31:12] rd opcode
imm|20] imm[10:1] imm{11] imm/[19:12] rd opcode
RISC-V RV32I sử dung mô hình thanh ghi đơn giản và hiệu quả, bao gồm:
> Thanh ghi PC (Program Counter): La thanh ghi co chức năng lưu giữ dữ liệu địa chỉ
của lệnh đang thực hiện.
> RISC-V có 31 thanh ghi: Mỗi thanh ghi có độ rộng 32bit, có thé dùng dé giữ giá trị
các phép toán hoặc địa chỉ
> Ngoài ra còn có thanh ghi x0: là thanh ghi zero, dù ban có thao tác gì với thanh ghi
này thì nó vẫn luôn giữ giá trị zero, thường được sử dụng làm thanh ghi khởi tạo
nguôn cho trong các phép toán sô học
o_ D(debug): Hỗ trợ gỡ lỗi chương trình.
o_ F(floating point): Hỗ trợ các phép toán số thực
o_ M (privileged): Cung cấp các lệnh đặc quyên cho hệ điều hành
13
Trang 23©_ S (standard): Tập lệnh cơ bản RV32I.
> Các tập lệnh đang phát triển:
o B (bit manipulation): Cung cấp các lệnh thao tác bit nâng cao.
o J (dynamically translated languages): Hỗ trợ thực thi các ngôn
ngữ được dịch động.
o L (decimal float): Hỗ trợ các phép toán số thực thập phân
o N (user-level interrupts): Hỗ trợ ngắt ở cấp độ người dùng
o P (packed SIMD): Hỗ trợ các phép toán SIMD đóng gói.
o_T (transactional memory): Hỗ trợ bộ nhớ giao dich.
o_ V (vector operations): Hỗ trợ các phép toán vector.
Những tập lệnh mở rộng mang lại nhiều lợi ích và hỗ trợ cho cộng đồng VI
mạch, nhà thiết ké, giúp họ có thể cá nhân hóa kiến trúc RISC-V cho các nhu cầu cụthể, từ đó khiến cho các thiết kế có được hiệu suất và tính linh hoạt
Phân loại | Lệnh Vi dụ Ý nghĩa
BEQ | BEQ x5, x6, 100 | Nếu hai thanh ghi có giá trị bằng nhau,Nhóm thì sẽ nhảy đến PC = PC + Immediate
lệnh rẽ BNE | BNEx5, x6, 100 | Nếu hai thanh ghi có giá trị không bằng
nhánh nhau, thì sẽ nhảy đến PC = PC +
Immediate.
14
Trang 24BLT BLT x5, x6, 100 Nếu thanh ghi 1 có giá trị nhỏ hơn
thanh ghi 2, thì sẽ nhảy đến PC = PC +
Immediate.
BGE BGE xS, x6, 100 Nếu thanh ghi 1 có giá trị lớn hơn hoặc
bằng thanh ghi 2, thì sẽ nhảy đến PC =
PC + Immediate.
BLTU BLTU x5, x6, 100 Nếu thanh ghi 1 có giá trị nhỏ hon
thanh ghi 2, thì sẽ nhảy đến PC = PC +
Immediate.
BGEU BGEU x5, x6, 100 Nếu thanh ghi 1 có giá trị lớn hơn hoặc
bằng thanh ghi 2, thì sẽ nhảy đến PC =
PC + Immediate.
Bảng 2.4 Các lệnh lay dt liệu từ bộ nhớ vào thanh ghi
Nhom
lệnh nạp
trong thanh ghi va offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy byte kế tiếp
lưu vào thanh ghi.
LH LH x5, 40(x6) Tính địa chi memory với base lưu
trong thanh ghi và offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy half word kếtiếp lưu vào thanh ghi
trong thanh ghi và offset lưu ở lệnh,
15
Trang 25sau đó đến dia chỉ đó lây word kế tiếp
lưu vào thanh ghi.
LBU LBU x5, 40(x6) Tính địa chi memory với base lưu
trong thanh ghi và offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy byte kế tiếp
lưu vào thanh ghi và sẽ mở rộng bit
dựa vào MSB của số đã nạp, chèn bit
0 vào ở phía bên trái.
LHU LHU x5, 40(x6) Tính địa chỉ memory với base lưu
trong thanh ghi và offset lưu ở lệnh,
sau đó đến địa chỉ đó lẫy half word kếtiếp lưu vào thanh ghi và sẽ mở rộngbit dựa vào MSB của số đã nạp, chèn
bit 0 vào ở phía bên trái.
LUI LUI x5, 40(x6) Load 20-bit [31:20] của số tức thời,
lấy giá trị lưu vào thanh ghi
Bảng 2.5 Các lệnh có chức năng lưu dữ liệu vào bộ nhớ
Phân loại | Lệnh Ví dụ Ý nghĩa
SB SB x5, 40(x6) Tinh dia chi memory với base lưu
trong thanh ghi va offset lưu ở lệnh,
Nhóm sau đó đến địa chỉ đó lấy giá trị trong
lệnh lưu thanh ghi lưu vào byte tiếp theo
SH SH x5, 40(x6) Tinh địa chi memory với base lưu
trong thanh ghi va offset lưu ở lệnh,
16
Trang 26sau đó đến địa chỉ đó lấy giá trị trong
thanh ghi lưu vào half word tiếp theo.
trong thanh ghi và offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy giá trị trongthanh ghi lưu vào word tiếp theo.
ADDI ADDI x5, x6, 20 Cộng giá thanh ghi với một số tức
thời, kết quả lưu vào thanh ghi đích
SLTI SLTI x5, x6, 20 Nếu giá tri của thanh ghi rs2 lớn hon
giá trị của số tức thời thì thiết lập chothanh ghi đích bằng 1 Hoặc ngượclại Lệnh này quan tâm tới bit dấu củathanh ghi nguồn
SLTIU SLTIU x5, x6, 20 Nếu giá tri của thanh ghi rs2 lớn hơn
giá trị của số tức thời thì thiết lập chothanh ghi đích bang 1 Hoặc ngược
lại Lệnh này không quan tâm tới bit
XORI XORI x5, x6, 20 Thực hiện phép tính logic XOR giữa
thanh ghi nguồn và số tức thời, sau đóghi kết quả vào thanh ghi đích
ORI ORI x5, xó, 20 Lay từng bit tương ứng của thanh ghi
nguồn và số tức thời, thực hiện phép
OR logic trên từng cặp bit và ghi kết
17
Trang 27quả vào từng bit tương ứng của thanh
ghi đích.
ANDI ANDI x5, x6, 20 Phép toán logic AND giữa thanh ghi
nguồn và số tức thời, sau đó ghi kết
quả vào thanh ghi đích
SLHI SLLI x5, x6, 20 Dịch trái giá trị của thanh ghi nguồn
bằng n bit, với bit ở đây là giá trị của
số tức thời, sau đó ghi kết quả vào
thanh ghi đích
SRLI SRLI x7, x8, 20 Shift gia tri của thanh ghi sang phải n
bit, với n là một giá tri tức thời, kết
quả lưu trong thanh ghi.
AUIPC AUIPC x5,
0x12345
Load 20-bit [31:20] của số tức thờicông với giá trị của PC, kết quả lưu
vào thanh ghi.
SRAI SRAI x7, x8, 20 Dich phải giá trị của thanh ghi nguồn
băng n bit, với bit ở đây là giá trị của
số tức thời, sau đó ghi kết quả vào
ADD ADD x7, x8, x9 Thực hiện phép cộng số học giữa nội
dung của hai thanh ghi và lưu kết quả
vào thanh ghi đích.
18
Trang 28học và
luận lý
dung của hai thanh ghi và lưu kết quả
vào thanh ghi đích.
SLT SLT x7, x8, x9 Nếu giá trị thanh ghi thứ nhất lớn
hơn giá trị thanh ghi thứ hai thì kếtquả lưu vào thanh ghi là 1 Nếu giá
trị thanh ghi thứ nhất nhỏ hơn giá trị thanh ghi thứ hai thì kết quả lưu vào
thanh ghi là 0.
SLTU SLTU x9, x10, x11 Nếu giá trị thanh ghi thứ nhất lớn
hơn giá trị thanh ghi thứ hai thì kếtquả lưu vào thanh ghi là 1 Nếu giátrị thanh ghi thứ nhất nhỏ hơn giá trịthanh ghi thứ hai thì lưu kết quả vào
thanh ghi là 0.
XOR XOR x9, x10, x11 XOR giá trị thanh ghi thứ nhất va giá
trị thanh ghi thứ hai, kết quả lưu vào
thanh ghi.
SRL SRL x9, x10, x11 Shift giá trị của thanh ghi thứ nhất
sang phải n bit, với n là một giá tri
thanh ghi thứ hai, kết quả lưu trong
thanh ghi.
SRA SRA x9, x10, x11 Shift giá trị của thanh ghi thứ nhất
sang phải n bit, với n là một giá tri
thanh ghi thứ hai, kết quả lưu trong
thanh ghi và sẽ mở rộng bit dựa vào
MSB của số đã shift
19
Trang 29OR OR x9, x10, x11 OR giá trị thanh ghi thứ nhất và giá
trị thanh ghi thứ hai, kết quả lưu vào
thanh ghi.
AND | AND x9, xI0,xI1 | AND giá trị thanh ghi thứ nhất và giá
trị thanh ghi thứ hai, kết quả lưu vào
thanh ghi.
Bảng 2.8 Các lệnh có chức năng nhảy.
Phân loại | Lệnh Ví dụ Ý nghĩa
Lưu giá trị địa chỉ hiện tại vào thanh
ghi đích, sau đó nhảy đến địa chỉ có
JAL JAL x1, 100 NX, ¬¬ ;
gia tri bang gia tri dia chi hién tai
cộng với giá tri của sô tức thời.
Nhóm
lệnh nhảy Lưu giá trị địa chỉ hiện tại vào thanh
ghi đích, sau đó nhảy đến địa chỉ có
JALR | JALR x1, 100(x5) : Ct, ¬¬ ;
gia tri bang gia tri cua thanh ghi
nguồn cộng với giá trị của số tức thời
2.2 Hệ thống xác minh chức năng bộ xử lý
Theo như Hình 1.1 đã trình bày trước đó ở trang 3, hệ thống xác minh chức
năng bao gồm 5 thành phần chính: Random Test Generator, Testbench Controller,
Comp-runner, Coverage Monitor và Instruction Set Simulator.Chi tiết của các thànhphần này sẽ được trình bày trong các phần tiếp theo tại mục 2.2.1, 2.2.2, 2.2.3,
2.2.4,2.2.5 và 2.2.6.
Qua đó, hệ thống xác minh chức năng với 5 khối thành phần được kết nối chặtchẽ đóng vai trò quan trọng trong việc đảm bảo tính chính xác và hiệu quả cho thiết
20
Trang 30bị Việc hiểu rõ chức năng và hoạt động của từng khối thành phan là nền tang dé đánhgiá hiệu quả của hệ thống và nâng cao chất lượng sản phẩm.
2.2.1 Random Test Generator
Random Test Generator (RTG), hay còn gọi là Instruction Stream Generator
(ISG), dong vai tro then chét trong việc xác minh chức năng của bộ vi xử lý Nóhoạt động như một "bộ não" thông minh, tạo ra các trường hợp kiểm tra ngẫu nhiên(testcases) để đánh giá hiệu quả hoạt động của bộ xử lý
Vai trò chính của RTG là tạo testcase ngẫu nhiên: RTG sử dụng thuật toán
ngẫu nhiên dé lựa chọn các nhóm lệnh cùng với các thanh ghi, bộ nhớ, địa chỉ và
dữ liệu, tạo ra các chương trình hợp ngữ đa dạng và phong phú.
2.2.2 Testbench Controller.
Testbench Controller: Trung tâm điều phối hệ thống Đóng vai trò trung tâm
điều phối trong hệ thống xác minh chức năng, gitr chức năng quan trọng sau:
> Nạp testcase: nhận testcase được tạo ra bởi RTG hoặc đầu vào từ người
dùng.
> Đưa testcase đến hai bộ mô phỏng
> Điều khiển luồng thực thi của hệ thống
> Thu thập kết quả
2.2.3 Comp-runner.
Comp-runner đóng vai trò quan trọng trong việc so sánh trạng thái của
Instruction Set Simulator (ISS) và mô hình RTL (Register Transfer Level) để xác
định sự đồng nhất trong hoạt động của hai mô hình bộ vi xử lý này.
Một số ví dụ về chức năng của khối như sau:
e Tính toán số lượng lần xuất hiện của mỗi lệnh, định dạng lệnh
e _ Tính toán số lượng lần xuất hiện của mỗi thanh ghi
e D6 bao phủ của nhánh dé đo các nhánh có điều kiện được thực hiện
e 6 bao phủ trong việc truy xuất bộ nhớ
21
Trang 31Tuy nhiên, do hai mô hình hoạt động ở các mức độ trừu tượng khác nhau, kếtquả thu được có thé có tạo ra các kết quả khác nhau do hiệu ứng pipeline Thôngthường, các hệ thống mô phỏng ISS sẽ chỉ có thé mô phỏng tuần tự, do đó chỉ có môhình RTL thực hiện được các tình huống xử lý pipeline.
2.2.4 Coverage Monitor
Coverage Monitor Có chức nang nhận kêt qua từ Comp Runner va đưa ra các
đánh giá về thiệt kê, ngoài ra, khôi còn có chức nang tạo cửa sô và đưa thông tin cho
người dung thay vì người dùng phải đọc trên các cửa số làm việc của hệ thống
2.2.5 Instruction Set Simulator
ISS (Instruction Set Simulation) tao ra kết quả từ quá trình mô phỏng dé runner so sánh với mô hình RTL ISS — Chương trình mô phỏng tập lệnh độc lập phancứng là một chương trình mô phỏng Chương trình được viết bằng python, một ngôn
comp-ngữ lập trình thân thiện với người dùng.
Chức năng của khối ISS như sau:
e M6 phỏng mã máy của một thiết bi phan cứng khác hoặc toàn bộ máy tính
để có khả năng tương thích cao Một trình mô phỏng hệ thống đầy đủthường bao gồm một trình mô phỏng tập lệnh
e Theo dõi và thực thi lệnh mã máy nhằm kiểm tra
e (C6 khả năng tính toán độ bao phủ dựa trên cấu hình của người dùng
2.2.6 RTL Simulation
RTL Simulation tạo ra kết quả từ quá trình mô phỏng dé comp-runner so sánh
với mô hình ISS RTL Simulation — Chương trình mô phỏng phan cứng bằng cách sử
dụng thiết kế phần cứng và mô phỏng trên môi trường python thông qua thư viện
cocotb.
RTL Simulation dùng để như sau:
e Mô phỏng thiết kế phần cứng của người dùng bằng ngôn ngữ python
với tôc độ nhanh, đơn giản.
22
Trang 32Theo dõi và kiểm soát được các lệnh được thực thi thông qua tệp nhật
ký.
Có khả năng tự động tính toán độ bao phủ dựa trên câu hình của người dùng.
23
Trang 33CHƯƠNG 3 Tổng quan thiết kế hệ thống
Hệ thống đánh giá sẽ được nhóm trình bày chỉ tiết trong chương này, cụ thểnhóm sẽ trình bày tổng quan về thiết kế, sau đó là chỉ tiết cho từng khối có trong hệthống này Nhóm sử dụng phần mềm Visual Studio, thư viện Cocotb và môi trườngUbuntu dé thực hiện khóa luận Mục 3.1, Mục 3.2 lần lượt trình bày thiết kế hệ thống
và thiết kế chỉ tiết của RTL Simulation
3.1 Tổng quan về hệ thống
Khóa luận này sẽ tái sử dụng lại đề tài Nghiên cứu thiết kế bộ mô phỏng tậplệnh RISC-V và thiết kế thành hệ thống đánh giá kiểm tra bộ xử lý RISC-V Core.Hình 3.1 trình bày kiến trúc hệ thống đề xuất của nhóm
24