Tép thử nghiệm là những chương trình hợp ngữ với những chuỗi lệnh có nghĩa dùng để kiểm tra tính đúng đắn của bộ vi xử lý cho thiết RISC-V và là chương trình hợp ngữ có những chuỗi lệnh
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
TRAN THI LAN TRINH
KHOA LUAN TOT NGHIEP
BO PHAT SINH CHUONG TRINH KIEM TRA NGAU
NHIEN CHO THIET KE RISC-V
RISC-V RANDOM TEST GENERATOR
KY SƯ NGANH KY THUAT MAY TÍNH
TP HO CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
TRAN THI LAN TRINH - 17521165
KHOA LUAN TOT NGHIEP
BO PHAT SINH CHUONG TRINH KIEM TRA NGAU
NHIEN CHO THIET KE RISC-V
RISC-V RANDOM TEST GENERATOR
KY SƯ KỸ THUAT MAY TÍNH
GIANG VIEN HUONG DAN
THS HO NGOC DIEM
TP HO CHi MINH, 2021
Trang 3THONG 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ố 466/QD-DHCNTT
ngày 23 tháng Ø7 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LOI CAM ON
Để hoàn thành được khóa luận tốt nghiệp này, lời đầu tiên em xin chânthành gửi lời cảm ơn đến quý thầy cô trường Đại học Công nghệ Thông tin - Đại
học Quốc Gia Thành phố Hồ Chí Minh nói chung và quý thầy cô Khoa Kỹ thuật
Máy tính nói riêng đã truyền đạt kiến thức và những kinh nghiệm quý báu cho emtrong suốt thời gian học tập vừa qua
Đặc biệt, em xin chân thành cảm ơn ThS Hồ Ngọc Diễm và KS Trần ĐạiDương đã luôn quan tâm giúp đỡ, động viên và tận tình hướng dẫn, cung cấp cho
em nhiều kiến thức chuyên môn quý báu để em có thé hoàn thành khóa luận mộtcách tốt nhất
Bên cạnh đó, em muốn gửi lời cảm ơn đến sự giúp đỡ của anh chị, bạn bè
cùng với gia đình đã luôn động viên, khích lệ tỉnh thần và tạo điều kiện cho emtrong suốt quá trình học tập cũng như thực hiện đề tài
Với điều kiện và vốn kiến thức cùng kinh nghiệp vẫn còn hạn chế vì vậy
khóa luận không thể tránh khỏi những thiếu sót, em rất mong nhận được sự đónggóp ý kiến, những nhận xét và phê bình của quý thầy cô để nâng cao kỹ năng,kiến thức của bản thân nhằm phát trién trong tương lai
Một lần nữa em xin chân thành cảm ơn!
TP Hồ Chí Minh, ngày 30 tháng 06 năm 2021
Sinh viên thực hiện
Trần Thị Lan Trinh
Trang 5MỤC LỤC
Chương 1 GIGI THIỆU DE TÀI
1.1 Giới thiệu để tài -2222cccc222222Ev crrEEEEEEEErrrrrrrrrrrtrrrrrrrrrrrrrrrrrrree1.2 Một số nghiên cứu liên quan
1.2.1 Tình hình nghiên cứu ngoải nước - +«+++c+ce++x+xz++ 4
1.2.2 _ Tình hình nghiên cứu trong nước.
1.3 Mute co na ẽ 61.4 Bố cục Khĩa luận 2¿-22222+++22E2++222E111222231112221112 222211221221 ce 7
Chương2 CƠ SỞ LÝ THUYẾT +2¿+22E+++tS22EEE+rtEEESzrrtrrrrcree §
2.1 Sơ lược về kiến trúc tập lệnh RISC-V 2¿¿+222+2ct222Exerrtrrkerrrrrrvee §2.1.1 Tổng qútết £ me VỆ , Ả coi 8
2.1.2 Kiến trúc tập lệnh cơ bản ccc+222cvvvcccerrrrrrex 9
2.1.3 Kiến trúc tập lệnh mở rộng ¿-¿- ¿5 +52 +z£+£sx+x+zzesecexsee 12
2.1.4 RISC-V321 222 E22 2E cEtrrrrve 13
2.2 Hệ thống xác minh chức năng bộ xử lý -:¿¿:vvccczz+rr+x 19
2.2.1 Random Test CenI€TAfOT + + Sky 20
2.2.2 Testbench COntrỌÏ€T - + SEkk##EvEEEkekrkrkrkrrrrkrkrvek 22
2.2.3 COmp-runner -7- 5+5 2
2.2.4 Coverage MONIIOI - ¿5S Street 23
Chương 3 THIẾT KE DE XUẤT :¿22++++22vvvvzrsrrsscee 243.1 Thiết kế hệ thống -22¿222+2+2222+22222111222211112221122222111 221 re 243.2 Thiết kế chỉ tiết -. -¿ 222222 2222222111121 re 25
3.2.1 Random Test Cen€TAfOT + +5 xxx it 25
Trang 63.2.2 _ Tệp tin cấu hình :-2+++2222+++ttErkxrrrtrrktrrrrrrkrrrrrrrrvee 28
Trang 7Hình 3.4: Minh họa một phan nội dung của I tescases.
Hình 3.5: Sơ đồ thuật toán cua Assembler
Hinh 3.6: Quy trinh cua giai doan Pre-Endcoding
Hình 3.7: Minh họa cho tệp chương trình mã máy 34
Hình 4.1: Quy trình thực thi chương trÌnh c5 Secererekeketererrkekeree 35
Hình 4.2: Ví dụ minh hoa cho một tệp tin cầu hình cccccccccreesrreesrreeerrxee 37Hình 4.3: Một phan nội dung chương trình có ý nghĩa phụ thuộc vào trọng số .40
Hình 4.4: Ví dụ cho nội dung của một tệp chương trình mã máy -. 4I
Hình 4.5: Quy trình xác minh ÍÑT( - ccxtststSeEexskestsrerrvrererekeerkrree 42
Hình 4.6: Ví dụ về nội dung tiêu chi tính độ bao phủ của RISC-V RTG 43
Hình 4.7: Biểu đồ thống kê phạm vi số lượng lệnh được tạo ra theo nhóm lénh 45Hình 4.8: Biểu đồ thống kê chỉ tiết về số lượng lệnh thuộc nhóm ALU được tạo 45Š
Hình 4.9: Biểu đô thong kê số lan sử dụng thanh ghỉ của hai festcases 46
Hình 4.10: Tinh độ bao phú INstNum wcccccecscsessecesvesseveevesseesseseesesseseesssneseeneaseneeneaees 48
Hình 4.11: Nội dung của một testcase được tạo ra ngẫu nhhiÊN: <<+<<++ 49
Hình 4.12: Biểu đô độ bao phủ của RISC-V RTG ©5cccccscccxsecrrrrseee 50Hình 5.1: Sơ đô hệ thong hướng phát triển eccccccccssssssssssssssssssssssssssesssssssesssessecsesssses 56
Trang 8DANH MỤC BANG
Bang 1.1: Những CPU RISC-V tiêu biểu [1] csscccsssssscsssssssesssssssessssssssssssssesssssssesesssvees 3
Bang 2.1: Bang các tập lệnh cơ sở và mở rộng của RISC-V -.-c~s=+<+<«+ ổ Bang 2.2: Phân loại các nhóm lệnh của tập lệnh RV32Ì]L «55x55 s+<<x 9
Bang 2.3: Dinh dang lệnh của các lệnh RV321 ÏSA 5+ cc5+c+csxsxeexcee 11
Bảng 2.4: Cấu trúc của định dạng lệnh
Bang 2.5: Chức năng của nhóm lệnh rẽ nhánh
Bảng 2.6: Chức năng của nhóm lệnh nạp 14
Bang 2.7: Chức năng của nhóm lệnh lưu WAS
Bang 2.8: Chức năng cua nhóm lệnh số học và luận n1 16
Bang 2.9: Chức năng của nhóm lệnh số học và luận lý 2oeccsssssssssssseessssssesssssseesesssees 17
Bảng 2.10: Chức năng của nhóm lệnh số học và luận Ìý Ÿ «-x<«=«+ 18
Bảng 2.11: Chức năng của nhóm lệnh nhảy
Bang 3.1: Cầu trúc dữ liệu, hàm và thư viện được sử dụng
Bang 4.1: So sánh kết qua đạt được với hai công trình nghiên cứu đã có 51
Trang 9DANH MỤC TU VIET TAT
Từ viết tắt Mô tả
CPU Central Processing Unit
ISA Instruction Set Architecture
ISS Instruction Set Simulator
RISC Reduced Instruction Set Computer
RTG Random Test Generator
SoC System on Chips
Trang 10TÓM TÁT KHÓA LUẬN
RISC-V là một kiến trúc tập lệnh mở (Open-source ISA) dựa trên các nguyên
tắc máy tính tập lệnh rút gọn RISC (Reduced Instruction Set Computer) đã và đang
được phát triển cực nhanh trên thế giới Tập lệnh ở mức người dùng đã được phát
hành vào tháng 03/2019 cho phép các nhà thiết kế có thể tiền hành thực hiện
RISC-V ISA cho riêng mình RISC-RISC-V mang lai cơ hội cho các nước đang phát triển, các
công ty muốn thiết kế chip và phát triển riêng bộ vi điều khiển (Microcontroler) cho
riêng minh mà không phải tốn thêm bat kỳ chi phí nào cho van dé bản quyền
Trong đề tài này, kết quả nhóm muốn đạt được là tạo ra những tệp thử nghiệm
Tép thử nghiệm là những chương trình hợp ngữ với những chuỗi lệnh có nghĩa dùng
để kiểm tra tính đúng đắn của bộ vi xử lý cho thiết RISC-V và là chương trình hợp
ngữ có những chuỗi lệnh phụ thuộc vào những trọng số của nhóm lệnh với mục đích
để kiểm tra các trường hợp mà người dùng mong muốn Ngoài ra nhóm đặt mục tiêu
sẽ đạt được 100% độ bao phủ với những tiêu chí riêng ví dụ như lệnh, thanh ghi,
Để kiểm tra bộ phát sinh chương trình kiểm tra ngẫu nhiên cho thiết kế RISC-V
(RISC-V RTG) thì nhóm sẽ mô phỏng qua bộ ISS (Instruction Set Simualator) Đồngthời qua khối mô phỏng ISS này, nhóm sẽ nắm được độ bao phủ mà chương trình
RISC-V RTG đạt được bao nhiêu phần trăm Sau đó so sánh với mục tiêu ban đầu đã
đặt ra.
Ngoài ra ở khóa luận này, nhóm sẽ so sánh kết quả tạo được với ba công trình
nghiên cứu liên quan là những bài báo khoa học quốc tế được đăng tải trên các hội
nghị uy tín và khóa luận trước.
Trang 11Chương 1 GIỚI THIỆU DE TÀI
1.1 Giới thiệu đề tài
Tên đề tai: Bộ phat sinh chương trình kiểm tra ngẫu nhiên cho thiết kế RISC-V
Động lực thực hiện đề tài:
Ngày nay nền công nghiệp máy tính nói chung và lĩnh vực thiết kế vi mạch
và phần cứng nói riêng đang trên đà phát trién mạnh mẽ Tuy nhiên việc đề xuất
và hiện thực một kiến trúc tập lệnh mới để có thể sử dụng được là rất tốn kém
Bởi vì những người thiết kế máy tính thường không đủ khả năng tài chính đề làmviệc miễn phí và việc phát triển vi xử lý dựa trên kiến trúc tập lệnh mới còn đòi
hỏi chuyên môn, kinh nghiệm thiết kế rất cao cần nhiều chuyên ngành như điện
tử kỹ thuật số, trình biên dịch, hệ điều hành, kỹ thuật phần mềm, Ngoài ra cần
có các công cụ dé mô phỏng, kiểm tra chất lượng, kiểm thử chức năng, tổng hợp
ra các mạch điện tử và đo lường các thông só về tiêu tốn năng lượng của thiết kế
Các công nghệ này cần phải mua bản quyển và cũng rất tốn kém Vì vậy một kiến
trúc tập lệnh RISC-V được hình thành (RISC viết tắt từ Reduced Instruction SetComputer), là một kiến trúc tập lệnh, được xây dựng dựa trên những nguyên tác
của kiến trúc tập lệnh RISC Trái ngược với hầu hết các kiến trúc tập lệnh khác,
RISC-V hoàn toàn miễn phí cho bat kỳ mục đích sử dụng nào Nó cho phép bat
kỳ ai có thể thiết kế, sản xuất và bán các sản phẩm phần cứng và phần mềm sửdụng RISC-V Điều đó sẽ đem đến rất nhiều lợi ích quan trọng cho nền công
nghiệp máy tính nói chung và sự phát triển của thiết kế vi mạch và phần cứng nói
riêng, cũng như lôi kéo được nhiều ý tưởng sáng tạo thiết kế hơn, các thiết kế bộ
vi xử lý có thể được trao đổi, tái sử dụng, dé tối ưu hơn làm cho chỉ phí của bộ vi
xử lý trở nên rẻ hơn và phủ hợp với nhiều ứng dụng khác nhau
Dựa vào rất nhiều lợi ích quan trọng mà RISC-V đem đến, nhưng lại rất mới
tại Việt Nam Theo tìm hiểu của nhóm, hiện nay mới ghi nhận được một công trìnhnghiên cứu liên quan đến Bộ phát sinh chương trình kiểm tra ngẫu nhiên Đây cũng
Trang 12là lý do mà nhóm muốn thực hiện đề tài: “Bộ phát sinh chương trình kiểm tra ngẫunhiên cho thiết kế RISC-V” Thực hiện dé tài này nhóm mong muốn công trình nghiêncứu có thé góp một phan giúp Việt Nam bat kịp với thế giới xu thé phát triển của thégiới trong lĩnh vực thiết kế bộ vi xử lý RISC-V Ngoài ra đối với việc xây dựng mộtkiến trúc tập lệnh mới như RISC-V rất khó tìm được một đội thiết kế độc lập nào bên
ngoài các công ty thiết kế vi xử lý chuyên nghiệp (như ARM, Intel, IBM, MIPS, )
Do đó việc đóng góp của rất nhiều thành viên đến từ cộng đồng sử dụng RISC-V
mang ý nghĩa quyết định đến sự thành công của kiến trúc tập lệnh mới này Đó cũng
là một trong những động lực đề thực hiện Khóa luận này, đó là tham gia vào tìm hiểu,
sử dụng, thiết kế, kiểm định và đánh giá sản phẩm liên quan đến kiến trúc tập lệnh
RISC-V Vậy nên, khóa luận này muốn thiết kế ra bộ phat sinh chương trình kiểm trangẫu nhiên cho thiết kế RISC-V (viết tắt là RISC-V RTG) với mục đích tạo ra các
testcases là các chương trình hợp ngữ nhằm kiểm tra tính đúng đắn kiến trúc tập lệnh
của bộ vi xử lý.
RISC-V được phát trién lần đầu tiên bởi Đại học California, Berkeley vào năm
2010 Cho đến nay đã có hàng chục bộ xử lý được phát triển dựa trên kiến trúc tập
lệnh này nhắm vào nhiều mục đích ứng dụng và phân khúc khác nhau Bảng 1.1 trình
bày một số sản phẩm CPU RISC-V tiêu biểu
Bảng 1.1: Những CPU RISC-V tiêu biểu [1]
RISC-V CPU | Nhà phát triển | Kiến trúc tập lệnh | Sản phẩm mục tiêu
Rocket/BOOM | Đại hoc California | RV64G Máy tính, thiet bị cá
nhân
ORCA Vector Blox RV32IM FGPA
Sodor Đại học California | RV32I Education
SCRI Syntacore RV32UE[MC] Vi điều khién/IoT
PICORV32 Clifford Wolf RV32IMC Vi điều khién/IoT
Trang 13Z-Scale Đại học Berkeley | RV32IM Vi điều khién/IoT
RISCY
ETH Zurich & Dai x 2
RV32IMC[F]X Vi điêu khién/IoT hoc Bologna
1.2 Một số nghiên cứu liên quan
1.2.1 Tình hình nghiên cứu ngoài nước
- Năm 2018 Chupilko và các cộng sự công bố nghiên cứu về bộ tạo chương trình
kiểm tra cho tập lệnh RISC-V dựa trên nền tảng MicroTESK [2] Bộ tạo chương
trình kiểm tra của Chupilko giúp xác minh chức năng của bộ vi xử lý RISC-V với
các tính năng sau:
Tao ra các testcases dé kiểm tra các lệnh riêng biệt bằng cách sử dụng các
giá trị toán hạng ngẫu nhiên.
Tao ra các testcases để kiểm tra các lệnh riêng biệt bằng cách sử dụng các
giá trị toán hạng biên.
Tao ra các testcases để kiểm tra các lệnh riêng biệt bao gồm tất cả các
đường dẫn thực thi được mô tả trong thông số kỹ thuật
Tạo ra các testcases có nội dung là các chuỗi lệnh ngắn với kết quả đạt
được bao gồm tất cả các định dạng lệnh
- Năm 2020, Herdt và các cộng sự đã giới thiệu nghiên cứu về đặc tả và kiểm tra
tập lệnh RISC-V sử dụng công cụ GRIFT [3] Nghiên cứu đã tạo ra bộ thử nghiệm
ngẫu nhiên với 8900 trường hợp thử nghiệm trong 392 giây dựa trên đặc điểm kỹ
thuật của bộ thử nghiệm RV32I Công trình nghiên cứu của Herdt đã tạo ra các
tệp kiểm tra thỏa mãn các ràng buộc sau:
Lệnh load/store không tạo ra các truy cập bộ nhớ không hợp lệ.
Lệnh branch/jump chỉ thực hiện các bước nhảy tương đối cục bộ để nằmtrong phạm vi địa chỉ lệnh hợp lệ Đảm bảo rằng không tự tạo ra vòng lặp
bằng cách hạn chế các bước nhảy khác 0
Trang 14"_ Độ lệch bước nhảy cho lệnh JAL bị hạn chế chỉ thực hiện bước nhảy ngắn
(không rời khỏi phạm vi địa chỉ của lệnh).
Nghiên cứu sử dụng GRIFT (Galois RISC-V ISA Formal Tools) để đo độ baophủ của chương trình Độ bao phủ của chương trình kiểm tra kiến trúc tập lệnh RV321IISA là khoảng từ 67% đến 86% (Hạn chế còn lại chủ yếu là do các lệnh nhảy, rẽ
nhánh và bộ nhớ (load/store).
1.2.2 Tình hình nghiên cứu trong nước
Trong quá trình tìm hiểu của nhóm, hiện nay mới ghi nhận được một công trìnhnghiên cứu liên quan đến bộ phát sinh chương trình kiểm tra thiết kế Chương trình
nghiên cứu về Random Test Generator for RISC-V 32I do sinh viên Trương Thị
Giang, Khoa Kỹ thuật Máy tính, trường Đại học Công nghệ Thông tin thực hiện [4].
Nghiên cứu đã sử dụng phương pháp random “Table Based Generators” và
“Weighted Randomness” tạo ra các tệp kiểm tra thỏa mãn các ràng buộc sau:
Kiểm tra được hoạt động bao gồm 36/37 lệnh của RV32I ISA va kiểm tra đượctất cả định dạng lệnh
Đảm bảo các lệnh nhảy có thể nhảy tới và lùi, có nhảy và không nhảy
“Tạo ra các số tức thời bao gồm: số 0, số âm, số dương, số lớn nhất và số nhỏ nhất
Đối với việc truy xuất bộ nhớ:
¢ Truy xuất địa chỉ bộ nhớ liên tiếp (cho truy xuất mảng)
e Đọc và ghi một địa chỉ bộ nhớ nhiều lần
Đối với thanh ghi đa dụng:
e _ Ghi giá trị tới 32 thanh ghi.
e Doc dữ liệu từ 32 thanh ghi.
e _ Thanh ghi vừa là toán hạng nguồn vừa là toán hạng đích
e Đối với các lệnh ALU, hai toán hạng nguồn và toán hạng đích đều là một
thanh ghi.
e Hai thanh ghi toán hạng nguồn đều là thanh ghi 0.
Trang 151.3 Mục tiêu đề tài
Nghiên cứu kế thừa kết quả của đề tài khóa luận tốt nghiệp của anh chị khóa
trước để phát triển thiết kế bộ phát sinh chương trình kiểm tra ngẫu nhiên cho thiết
kế RISC-V Mục đích cụ thể như sau:
- Tìm hiểu về kiến trúc tập lệnh mới RISC-V Từ đó thiết kế bộ phát sinh chương
trình kiểm tra ngẫu nhiên cho thiết RISC-V
- Độ bao phủ (coverage) đạt 100% theo những tiêu chí sau:
“_ Đối với lệnh: Kiểm tra được hoạt động bao gồm 37 lệnh của RV32I ISA:
BEQ, BNE, BLT, BGE, BLTU, BGEU, LB, LH, LW, LBU, LHU , LUI,
SB, SH, SW, ADDI, SLTI, SLTIU, XORI, ORI, ANDI, SLLI, SRLI,
SRAI, ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND,
AUIPC, JAL, JALR và 6 định dạng lệnh: R-TYPE, I-TYPE, S-TYPE,
SB-TYPE, U-SB-TYPE, UJ-TYPE.
=_ Đối với lệnh nhảy: Dam bảo được các lệnh nhảy có thể nhảy tới và nhảy
lùi.
= Đối với số tức thời: Tao ra được các số tức thời bao gồm: số 0, số âm, số
dương, số lớn nhất và số nhỏ nhất
“_ Đối với thanh ghi đa dụng:
e Ghi giá trị tới 32 thanh ghi.
e Doc dữ liệu từ 32 thanh ghi.
¢ Thanh ghi vừa là toán hạng nguồn vừa là toán hạng dich
e Đối với các lệnh ALU, hai toán hạng nguồn và toán hạng đích đều
là một thanh ghi.
¢ Hai thanh ghi toán hạng nguồn đều là thanh ghi 0
= Đối với việc truy xuất bộ nhớ:
e Truy xuất địa chỉ bộ nhớ liên tiếp (cho truy xuất mảng).
© Đọc và ghi một địa chỉ bộ nhớ nhiều lần.
Trang 161.4 Bố cục Khóa luận
Báo cáo này được chia thành 5 chương chính.
- Chương 1: Giới thiệu đề tài - Chương đầu tiên giới thiệu về dé tài khóa luận và
một số nghiên cứu liên quan
- Chương 2: Cơ sở lý thuyết - Chương này trình bày những cơ sở lý thuyết được
sử dụng có liên quan đến nội dung nghiên cứu của đề tài như tìm hiểu sơ lược về
kiến trúc tập lệnh mở RISC-V bao gồm: nội dung tổng quan về kiến trúc tập lệnh
cơ sở, kiến trúc tập lệnh mở rộng và trình bày về kiến trúc tập lệnh được chọn để
hiện thực đề tài Hơn nữa ở chương này nhóm cũng sẽ nói sơ lược về sơ đồ hệ
thống xác minh chức năng của bộ xử lý, tìm hiểu lý thuyết của các khối chức năngtrong sơ đồ hệ thống đó bao gồm các khối: Random Test Generator, Testbench
Controller, Comp-runner và Coverage Monitor.
- Chwong 3: Thiết kế đề xuất - Dựa vào những kiến thức về cơ sở lý thuyết đã tim
hiểu được ở chương 2 thì chương 3 này sẽ thê hiện thiết kế hệ thống một cách chỉ
tiết của khóa luận Ngoài ra nhóm sẽ giải thích và minh họa cách thức hoạt động
của từng khối trong hệ thống Ở chương này nhóm cũng sẽ giới thiệu sơ lược về
ngôn ngữ lập trình và phần mềm sử dụng để hiện thực khóa luận
- _ Chương 4: Mô phỏng và Đánh giá kết quả - Ở chương này, nhóm thực hiện sẽ
trình bày những kết quả mà khóa luận đã đạt được thông qua một số biêu đồ thông
kê số liệu Ngoài ra nhóm sẽ trình bày độ bao phủ đạt được của RISC-V RTG.Hơn nữa là kết quả của bộ phát sinh chương trình kiểm tra ngẫu nhiên cho thiết
kế RISC-V sẽ được so sánh với các nghiên cứu liên quan
- Chương 5: Kết luận và Hướng phát triển - Chương cuối sẽ đúc kết lại khóa
luận, tóm tắt toàn bộ công việc của nhóm thực hiện và những kết quả, thành tích
đã đạt được Đồng thời ở chương này nhóm thực hiện sẽ đưa ra đề xuất cho hướngphát triển tiếp theo của đề tài trong tương lai
Trang 17Chương 2 CƠ SỞ LÝ THUYET
2.1 Sơ lược về kiến trúc tập lệnh RISC-V
2.1.1 Tổng quát
Kiến trúc tập lệnh RISC-V được thiết kế theo kiểu module nhằm cho phép cácnhà phát triển vi xử lý RISC-V có thể linh hoạt lựa chọn được kiến trúc phù hợp nhấtcho ứng dụng của họ RISC-V định nghĩa kiến trúc tập lệnh số nguyên 32-bit RV32I
là kiến trúc tập lệnh cơ bản nhất Với kiến trúc tập lệnh cơ sở này, vi xử lý RISC-V
đã có tat cả những lệnh cơ bản, những lệnh điều khiển luồng, bộ thanh ghi, bộ nhớ,cách đánh địa chỉ bộ nhớ, đủ dé thực hiện một vi xử lý đơn giản dạng tổng quát
hỗ trợ đầy đủ cho phần mềm và trình biên dịch
Từ kiến trúc tập lệnh cơ bản này, nhà phát triển vi xử lý RISC-V có thể linh
hoạt chọn kết hợp với một hay nhiều tập lệnh mở rộng tùy chọn khác cho các ứng
dụng mục tiêu Tập lệnh mở rộng có thể là tập lệnh mở rộng chuẩn của RISC-V hoặctập lệnh mở rộng phi tiêu chuẩn của nhà phát triển vi xử lý RISC-V cho một sản phẩm
mục tiêu nhất định
Bảng 2.1: Bảng các tập lệnh cơ sở và mở rộng của RISC-V
Tên viết tắt Tên đầy đủ Chú thích
RV32I Base Integer Instruction Set, 32-bit
RV32E Base Integer Instruction Set (embedded)
4 tập lệnh cơ bản RV641 Base Integer Instruction Set, 64-bit
RVI28I Base Integer Instruction Set, 128-bit
M Integer Multiplication and Division
Các mở rộng tiêu
A Atomic Instruction l
chuân
F Single-Precision Floating-Point
Trang 18D Double-Precision Floating-Point
Q Quad-Precision Floating-Point
Decimal Floating-Point
Dé hỗ trợ tốt hơn cho việc phát triển hệ sinh thái phần mềm của vi xử lý
RISC-V, RISC-V đã cung cấp sẵn một tập các tập lệnh mở rộng tiêu chuẩn, bao gồm phép
nhân chia số nguyên (M), các toán tử đơn nguyên (A), phép toán với số thực dau phẩy
động độ chính xác đơn (F), phép toán với số thực dấu châm động độ chính xác kép(D) Một kiến trúc tập lệnh hỗ trợ tập lệnh cơ bản RV32I cùng với tat cả các tập lệnh
vừa nêu (M, A, F, D) gọi là kiến trúc tập lệnh đa dụng, viết tắt là tập G, ví dụ nhưRV32G Ngoài ra, RISC-V còn cung cấp một tập lệnh mở rộng tiêu chuẩn hữu ích
nữa là tập lệnh nén dé giảm kích thước của mã máy (C)
2.1.2 Kiến trúc tập lệnh cơ ban
Kiến trúc tập cơ sở đầu tiên và cơ bản nhất được RISC-V định nghĩa là kiến
trúc tập lệnh RV32I, bao gồm 47 lệnh có thé được phân chia dựa trên chức năng và
opcode thành 9 nhóm như trong Bảng 2.2.
Bang 2.2: Phân loại các nl óm lệnh của tập lệnh RV32I
Phân loại Opcode Lệnh
Nhóm lệnh rẽ nhánh | 11_000_1 BEQ, BNE, BLT, BGE, BLTU, BGEU
Trang 19ADDI, SLTI, SLTIU, XORI, ORI, ANDI,
00_100_11
SLLI, SRLI, SRAI
, ADD, SUB, SLL, SLT, SLTU, XOR, Nhóm lệnh sô học va
SRL, SRA, OR, AND, MUL, MULH,
SCALL, SBREAK, RDCYCLE,
RDCYCLEH, EDTIME, RDTIMEH,
Nhóm lệnh hệ thống 11 100 11 RDINSTRET, RDINSTRETH, FRCSR,
FRRM, FRFLAGS, FSCSR, FSRM,
FSFLAGS, FSRMI, FSFLSGSI
Nhóm lệnh đồng bộ 00 011 11 FENCE, FENCE.I
Nhóm lệnh nhảy 11 011 11 JAL, JALR
Nếu xét về định dang của lệnh thực thi RV32I được chia thành 6 nhóm:
R-TYPE, I-R-TYPE, S-R-TYPE, SB-TPYE, U-R-TYPE, UJ-TYPE Trong đó các định dạng
R, I, S, U là bốn nhóm chính, hai nhóm SB-TPYE va UJ-TYPE giống hoàn toàn
S-TYPE và U-S-TYPE ngoại trừ khác nhau về phần toán hạng số tức thời.
10
Trang 20Bảng 2.3 trình bày chỉ tiết về các lệnh thuộc 6 định dạng lệnh và Bảng 2.4trình bày cấu trúc của định dạng lệnh.
Bang 2.3: Định dạng lệnh của các lệnh RV321 ISA
Định dạng lệnh Lệnh
R-TYPE ADD, AND, OR, XOR, SLL, SRL, SLT, SLTU,
SUB, SRA.
ADDI, ANDI, ORI, XORI, SLTI, SLTIU, SLLI,
ray SRLI, SRAI, LB, LH, LW, LBU, LHU, JALR.
funct7 rs2 ml funct3 rd opcode | R-type
imm[11] | imm(10:5] | imml4:1] | imm[0] rsl funet3 rd opcode | Ixype
imm{11] | imm[10:5] n2 ml imm[4:1] | imm[0] | opcode | S-type
imm[12] | imm[10:5] n2 sl imm[4:1] | imm[11] | opcode | SB-type
imm(31] imm[30:20] imm[19:15] | imm[14:12] sả opeode | U-type
imm{20] | imm{10:5] | imm{4:1} | imm[0] | imm[19:15] | imm[14:12] sả opeode | U-type
11
Trang 21Về thanh ghi, RV32I có một thanh ghi PC và 32 thanh ghi trong đó một thanhghi x0 luôn mang giá trị là 0, cộng với 31 thanh ghi đa dụng x1-x31 Tat cả đều có
độ rộng 32-bit Tương tự như kiến trúc tập lệnh RISC, RV32I cũng có kiến trúcLOAD-STORE Điều đó có nghĩa là chỉ có các lệnh Load và Store truy cập vào bộnhớ, còn lại các phép toán số học đều chi sử dung các thanh ghi Ngoài ra RV32I có
nghĩa là không gian địa chỉ là 32-bit và sử dung little endian Tương ứng, RV64I có
nghĩa là không gian địa chỉ là 64-bit và RV128I có không gian địa chỉ là 128-bit.
RV64I và RV128I cũng được xem là những kiến trúc tập lệnh cơ sở Bên cạnh đó,còn một kiến trúc tập lệnh cơ sở nữa là RV32E định nghĩa cho những hệ thống nhúng.RV32E chỉ có 16 thanh ghi 32-bit và những bộ đếm của RV32I được tùy chọn có hay
không.
2.1.3 Kiến trúc tập lệnh mớ rộng
Như danh sách các kiến trúc tập lệnh cơ bản và mở rộng của RISC-V đề cập
ở trên, RISC-V định nghĩa rất nhiều tùy chọn tập lệnh mở rộng Trong số đó, một số
đã hoàn thiện và đặc tả kỹ thuật, còn lại vẫn còn đang phát triển Dưới đây là những
mở rộng hiện có:
M: tập những lệnh nhân chia số nguyên
A: tập những lệnh đơn nguyên Atomic.
F: Single-precision floating point (IEEE 754-2008).
D: Double-precision floating point (IEEE 754-2008).
Q: Quad-precision floating point (IEEE 754-2008).
C: tập những lệnh nén (16-bit) để giảm kích thước của mã lệnh
Những tập lệnh mở rộng đang được phát triển và sẽ có sẵn trong tương lai gần
là tập L (decimal float), B (bit manipulation), J (dynamically translated languages),
T (transactional memory), P (packed SIMD), V (vector operations), N (user-level
interrupts).
12
Trang 222.1.4 RISC-V 321
Khóa luận này, nhóm sẽ sử dung kiến trúc tập lệnh RISC-V 32I (viết tắt là
RV32I) dựa trên ISA Chức năng, ý nghĩa của nhóm lệnh rẽ nhánh được trình bay
trong Bảng 2.5 Bảng 2.6 và Bảng 2.7 lần lượt trình bày chức năng, ý nghĩa của nhóm
lệnh nạp, nhóm lệnh lưu Chức năng, ý nghĩa của nhóm lệnh số học và luận lý, nhómlệnh nhảy được trình bày lần lượt tại Bang 2.8, Bảng 2.9, Bảng 2.10, Bảng 2.11
Nếu thanh ghi | có giá trị nhỏ hơn
thanh ghi 2, thì sẽ nhảy đến PC = PC
+ Immediate.
BGEU BGEU x5, x6, 100
Nếu thanh ghi | có gia tri lớn hơn
hoặc bằng thanh ghi 2, thì sẽ nhảy đến
PC = PC + Immediate.
Trang 23Tính địa chỉ 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.
LH LH x5, 40(x6)
Tinh địa chi memory với base lưu
trong thanh ghi va offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy halfword kế
tiếp lưu vào thanh ghi
LW LW x5, 40(x6)
Tinh địa chi memory với base lưu
trong thanh ghi va offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy word kế tiếp
lưu vào thanh ghi.
LBU LBU x5, 40(x6)
Tính dia chi memory với base lưu
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 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 halfword kếtiếp lưu vào thanh ghi và sẽ mở rộng
bít dựa vào MSB của số đã nạp, chèn
bit 0 vào ở phía bên trai.
LUI LUI x5, 0x12345
Load 20-bit [31:20] của số tức thời,
kết quả lưu vào thanh ghi
14
Trang 24Bảng 2.7: Chức năng của nhóm lệnh lưu
Phân loại Lệnh Ví dụ Ý nghĩa
Nhóm
lệnh lưu
SB SB x5, 40(x6)
Tinh dia chi memory với base lưu
trong thanh ghi va offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy giá trị trong
thanh ghi lưu vào byte tiếp theo
SH SHx5, 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 giá trị trong
thanh ghi lưu vào half word tiếp theo
SW SW x5, 40(x6)
Tính dia chi memory với base lưu
trong thanh ghi va offset lưu ở lệnh,
sau đó đến địa chỉ đó lấy giá trị trong
thanh ghi lưu vào word tiếp theo
15
Trang 25Bang 2.8: Chức năng của nhóm lệnh số học và luận ly 1
Phân loại Lệnh Ví dụ Ý nghĩa
Cộng thanh ghi với giá trị tức thời, kết
quả lưu vào thanh ghi.
XOR thanh ghi với giá trị tức thời, kết
quả lưu vào thanh ghi.
ORI ORI x5, x6, 20
OR thanh ghi với giá tri tức thời, kết
quả lưu vào thanh ghi.
ANDI ANDI x5, x6, 20
AND thanh ghi với giá tri tức thời, kết
quả lưu vào thanh ghi.
SLLI SLLI x5, x6, 20
Shift giá tri của thanh ghi sáng trái n
bit, với n là một giá trị tức thời, kết
quả lưu trong thanh ghi.
16
Trang 26Bảng 2.9: Chức năng của nhóm lệnh số học và luận lý 2
Shift gia tri cua thanh ghi sang phai n
bit, với n là một giá trị tức thời, kết
quả lưu trong thanh ghi.
Shift giá trị của thanh ghi sang phải n
bít, với n là một giá trị tức thời, kết
quả lưu trong thanh ghi và sẽ mở rộng
bit dựa vào MSB của số đã shift
ADD ADD x5, x6, x7
Cộng giá trị thanh ghi thứ nhất và giá
trị thanh ghi thứ, kết quả lưu vào
thanh ghi.
SUB SUB x5, x6, x7
Trừ giá trị thanh ghi thứ nhất và giá
trị thanh ghi thứ, kết quả lưu vào
than! ghi.
SLT SLT x5, x6, x7
Nếu giá trị thanh ghi thứ nhất lớn hơn
giá trị thanh ghi thứ hai thì kết quả lưuvào thanh ghi là 1 Nếu giá trị thanh
ghi thứ nhất nhỏ hơn giá trị thanh ghithứ hai thì kết quả lưu vào thanh ghi
là0.
17
Trang 27Bảng 2.10: Chức năng của nhóm lệnh số học và luận lý 3
vào thanh ghi là 1 Nếu giá trị thanh
ghi thứ nhất nhỏ hơn giá trị thanh ghithứ hai thì kết quả lưu vào thanh ghi
là 0.
XOR XOR x5, x6, x7
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 x5, x6, x7
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 x5, x6, x7
Shift giá tri 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 bít dựa vào
AND giá trị thanh ghi thứ nhất và giá
trị thanh ghi thứ hai, kết quả lưu vào
thanh ghi.
18
Trang 28Bảng 2.11: Chức năng của nhóm lệnh nhảy
Phân loại | Lệnh Ví dụ Ý nghĩa
Nhảy đến PC = PC + Immediate, đã
JAL JAL x1, 100 lưu giá trị của lệnh kế tiếp trước đó
vào thanh ghi.
Hinh 2.1: Hé thống xác minh chức năng bộ xử lý
Trong ISS (Instruction Set Simulation) được sử dụng như làm mô hình tham
chiếu vàng (golden model) và được giả định là sẽ tạo ra các kết quả mong đợi ISS —
Chương trình mô phỏng tập lệnh độc lập phần cứng là một mô hình mô phỏng, thường
19
Trang 29được viết bằng ngôn ngữ lập trình cấp cao ISS dùng dé mô phỏng hành vi của máytính hoặc bộ vi xử lý bằng cách đọc các lệnh và duy trì các biến bên trong đại diện
cho các thanh ghi bộ xử lý và bộ nhớ.
RTL Simulation là bước thiết kế được kiểm chứng về mặt chức năng Có nhiều
phương pháp khác nhau dé tiến hành như OVM, UVM hoặc traditional verification, Đầu ra của RTL Simulation thông thường là waveform, data, hoặc các ràng buộctheo yêu cầu của người dùng Quá trình của simulation kết thúc khi tắt cả các testcases
đều được thực thi và cho kết quả giống như kết quả mong đợi
Bộ chương trình phát sinh kiểm tra ngau nhiên được thực hiện để tao các bộ
chương trình thử nghiệm (testcases) Mỗi chương trình thử nghiệm được thực thi
đồng thời bởi cả hai mô hình bộ xử lý và trang thái của chúng được so sánh sau khi
thực hiện từng lệnh Khối Comp-runner cũng được triển khai như một phần của bộ
điều khiển mô phỏng để ghi lại sự khác biệt trong trạng thái của hai mô hình Việc
triển khai bộ điều khiển mô phỏng cũng bao gồm một module giám sát phạm vi baophủ để đo lường phạm vi xác minh và tạo thống kê về phạm vi bao phủ (coverage)
2.2.1 Random Test Generator
Random Test Generator - Bộ phát sinh chương trình kiểm tra ngẫu nhiên
(thường được viết tắt là RTG hoặc ISG cho Instruction Stream Generator) là một loạiphần mềm máy tính được sử dụng dé xác minh chức năng của bộ vi xử lý Chức năng
chính của RTG là tạo ra các testcases Các testcases được tạo ra là những chương
trình hợp ngữ và sẽ được chuyền đổi sang mã nhị phân thông qua trình biên dich hợp
ngữ (hay còn gọi là Assembler) dùng dé kiểm tra kiến trúc tập lệnh của bộ vi xử lýbằng cách sử dụng ngẫu nhiên hóa dé chọn ra các lệnh, thanh ghi, địa chỉ và dữ liệu
Bộ phát sinh chương trình kiểm tra ngẫu nhiên có phạm vi từ các tập lệnh đơn
giản và macro được tham số hóa có thể được tạo ra trong vài tuần đến các hệ thốngđầy đủ tính năng yêu cầu phát triển phần mềm rỗng rãi và thường được tạo ra bởi các
tô chức thiết kế Để tạo ra bộ phát sinh chương trình kiểm tra ngẫu nhiên thì có thể
sử dụng một hay nhiều các phương pháp sau:
20
Trang 30- Table Based Generators: Bộ phát sinh chương trình kiểm tra ngẫu nhiên dựa
vào bảng Những mẫu thử này là những RTG đơn giản nhất hiện có Ưu điểm của Table Based Generators là có thé tao ra các testcases tương đối nhanh chóng Ngoài ra các yêu cầu về bảo trì thường thấp nên chỉ phí thực hiện cũng thấp Phương pháp này hoạt động bằng cách phụ thuộc vào kiến trúc tập lệnh
của thiết kế và lưu trữ nó trong cơ sở dit liệu quan hệ dé có thé tái sử dụng sau
này Tuy nhiên, có một nhược điểm đối với phương pháp này là việc tạo ra các testcases thường bị hạn chế trong các kiến trúc đơn giản bởi việc sử dụng trên các ISA phức tạp hơn có thê dẫn đến việc không thé kiểm tra hết được các tinh huống phức tạp Đôi khi trình tạo thử nghiệm ngẫu nhiên dựa vào bảng cũng
có thể tạo ra các testcases không hợp lệ.
- Static Generators: Bộ phát sinh chương trình kiểm tra ngẫu nhiên tĩnh Cũng
tương tự như bộ phát sinh chương trình kiểm tra ngẫu nhiên dựa vào bảng với ngoại trừ phần lớn lệnh, toán hạng và lựa chọn dữ liệu năm trong mã thủ tục
phức tạp Ưu điểm về bộ phát sinh chương trình kiểm tra ngẫu nhiên tĩnh thì
có khả năng tạo ra được nhiều testcases hơn so với Bộ phát sinh chương trình
kiêm tra ngẫu nhiên dựa vào bảng Tuy nhiên dé khắc phục nhược điểm không thé kiểm tra hết được các tình huống phức tap thì phương pháp này vẫn chưa thê đáp ứng được.
- Dynamic Generators: Bộ phát sinh chương trình kiểm tra ngẫu nhiên động.
Phương pháp này phải được kết hợp chặt chẽ với những kiến thức quan trọng
về kiến trúc đang được thử nghiệm Ưu điểm của bộ phát sinh chương trình kiểm tra ngẫu nhiên động là nâng cao khả năng tao ra các testcases phức tap,
có thể tạo ra được các testcases trong các trường hợp khó tiếp cận Bộ phát sinh chương trình kiểm tra ngẫu nhiên động này có tính linh hoạt và dễ dàng trong việc sử dung Do đó nhược điểm của phương pháp này là chi phí tạo và bao trì thường lớn hơn nhiều so với phương pháp Table Based Generators hoặc
so với phương pháp Static Generators.
21
Trang 312.2.2 Testbench Controller
Testbench Controller bắt dau bằng cách nap các testcases được tạo ra bởi
RTG vào Instruction Set Simulator (hay còn được viết tắt là ISS) Trình mô phỏng tập lệnh là một phương pháp được sử dụng nhiều vì một trong những lý do sau:
- Mô phỏng mã máy của một thiết bị phần cứng khác hoặc toàn bộ máy tinh dé
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.
- Theo dõi và thực thi các lệnh mã máy (nhưng được coi như là một luồng đầu
vào) trên cùng một phần cứng nhằm kiểm tra và gỡ lỗi.
- Cai thiện hiệu suất tốc độ.
ISS sẽ thực thi từng lệnh trong mỗi một testcase Trong các tình huống bình thường, mô phỏng được hoàn thành sau khi thực hiện lệnh cuối cùng trong bộ phát
sinh chương trình kiểm tra ngẫu nhiên Nếu các bộ phát sinh chương trình ngẫu nhiên
được chạy hàng loạt, quá trình mô phỏng được lặp lại bằng cách tải chương trình tiếp theo Testbench Controller kết thúc sau khi thực hiện chương trình thử nghiệm cuối cùng Trong trường hợp đặc biệt, Testbench Controller sẽ kết thúc khi có báo hiệu từ
khối Comp-runner rằng sỐ lượng chênh lệch vượt quá một số giới hạn tối đa đã định
trong tệp tin cau hình Thiết kế cũng bao gồm một Coverage Monitor được chạy ngoại
tuyến dé đo độ bao phủ của chương trình.
2.2.3 Comp-runner
Comp-runner chịu trách nhiệm so sánh các trạng thái của ISS với mô hình RTL
dé xác định xem hai mô hình của bộ vi xử lý có cùng hoạt động hay không Vì hai
mô hình bộ xử lý chạy ở các mức độ trừu tượng khác nhau nên chúng có thể tạo ra các kết quả khác nhau do hiệu ứng pipeline Thông thường, chỉ có mô hình RTL thực
hiện xử ly pipeline trong khi ISS thì không Ngoài ra, do hai mô hình chạy với cách
thức hoạt động khác nhau về thời gian nên chúng không được đồng bộ hóa hoàn hảo
với nhau Những khác biệt này gây ra các van dé, cụ thé là lệch và va chạm, phải được xử lý bởi khối Comp-runner.
22
Trang 32Mặc dù ISS và RTL chạy song song cùng một chương trình, kết quả của cùng
một lệnh có thé được tạo ra tại các thời điểm khác nhau Cũng trong những khoảng thời gian nhất định của mô phỏng, một mô hình có thé đi trước một chút so với mô hình kia, và do đó tạo ra ít kết quả hon so với mô hình kia Điều này thường xảy ra sau lệnh rẽ nhánh, vì độ trễ nạp day pipeline xảy ra trong mô hình RTL nhưng không xảy ra trong ISS Vì vậy, kết quả từ hai mô hình bị sai lệch trong thời gian mô phỏng.
2.2.4 Coverage Monitor
Coverage Monitor theo dõi độ bao phủ vê phạm vi và chịu trách nhiệm đo lường, xác minh, xây dựng sô liệu thông kê vê phạm vi đó Vê cơ bản, Coverage Monitor chứa một sô bộ đêm phát hiện và đêm sự xuât hiện của các sự kiện nhat định Một sô ví dụ về phạm vi xác minh có thê là:
- Tính toán số lượng lần xuất hiện của mỗi lệnh, định dạng lệnh.
- Tính toán số lượng lần xuất hiện của mỗi thanh ghi.
- Độ bao phủ của nhánh để đo các nhánh có điều kiện được thực hiện.
- 6 bao phủ trong việc truy xuất bộ nhớ.
Số lần một lệnh xuất hiện trong mã chương trình có thể khác với số lần lệnh đã được thực thi Luồng chương trình là không xác định vì có thê lặp lại, phân nhánh có điều kiện, interrupt và các yếu tố phụ thuộc dữ liệu khác Do đó, Coverage Monitor không thé sử dụng mã tĩnh dé tạo thống kê vùng phủ.
23
Trang 33Chương 3 THIẾT KE DE XUẤT
Chương này trình bày chỉ tiết các vấn đề triển khai cho bộ phát sinh chương trình kiểm tra ngẫu nhiên cho thiết kế RISC-V Ngôn ngữ lập trình được sử dụng là
C, một ngôn ngữ bậc trung, cốt lõi và đơn giản Sử dụng những tính chất của ngôn ngữ như tính kế thừa, tính đa hình dé hiện thực khóa luận Nhóm sử dụng phần mềm
Visual Studio đề hiện thực 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 RISC-V RTG.
Binary test program on
disk (.elf files)
Hinh 3.1: Thiét ké hé théng
Bước đầu tiên RISC-V RTG sẽ doc tệp tin cấu hình để nắm được số lượng
testcases muốn tạo ra Sau đó sẽ phát sinh ra số lượng testcases mong muốn Những
testcases này là những chương trình hợp ngữ (.S files) dùng để xác minh chức năng
bộ vi xử lý và dùng dé kiểm tra tính đúng đắn của kiến trúc tập lệnh trong bộ vi xử lý
đó Tép testcases này sau khi được tạo ra sẽ đưa qua ISS dé tính độ bao phủ và thử
24