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: Bộ phát sinh chương trình kiểm tra ngẫu nhiên cho thiết kế RISC-V

77 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 đề Bộ phát sinh chương trình kiểm tra ngẫu nhiên cho thiết kế RISC-V
Tác giả Trương Thị Giang
Người hướng dẫn TS. Đoàn Duy
Trường học Trường Đại học Công nghệ Thông tin - Đạ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 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 77
Dung lượng 22,71 MB

Nội dung

trúc tập lệnh này đem đến rất nhiều lợi ích quan trọng cho nền công nghiệp máy tínhnó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ôikéo được nhiều ý tư

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

TRUONG THI GIANG

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

TRUONG THI GIANG - 16520320

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

TS DOAN DUY

TP HO CHi MINH, 2021

Trang 3

THONG TIN HOI 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ố 70/QD-DHCNTT ngày

27 tháng 01 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

Trang 4

LOI CAM ON

Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến toàn thể quý thay côtrường Đại học Công nghệ Thông tin — Đại học Quốc gia TP.Hồ Chí Minh, đặc

biệt là quý thầy cô khoa Kỹ thuật Máy tính đã tạo điều kiện cho em học hỏi được

nhiều kiến thức và kinh nghiệm trong suốt thời gian học tập

Đặc biệt, em xin chân thành cảm ơn thầy Đoàn Duy và thầy Trần Đại Dương

Hai thay đã hướng dẫn em rat tận tinh trong suốt quá trình thực hiện khóa luận tốt

nghiệp, hỗ trợ và 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 đề tài Đồng thời, em cũng xin chân thành gửi lời cảm ơn đến các anh chị,bạn bè, những người đã giúp đỡ em tìm kiếm thông tin và động viên tinh than, cùng

nhau trao đổi, giải quyết các vấn đề cho em trong suốt quá trình thực hiện khóa luận

Ngoài ra, con xin gửi đến bó mẹ, gia đình lòng biết ơn chân thành vì đã taomọi điều kiện về vật chat, cổ vũ và ủng hộ tinh thần cho con trong suốt quá trình học

tập.

Mặc dù đã rat nỗ lực và có gang nhưng kiến thức cũng như kinh nghiệm vẫn

còn hạn chế, nên báo cáo không thé tránh khỏi nhiều thiếu sót Em rất mong nhậnđược nhiều sự góp ý, nhận xét từ 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 08 tháng 01 năm 2021

Sinh viên thực hiện

Trương Thị Giang

Trang 5

Chương 1 Giới thiệu đề tài.

1.1 Giới thiệu đề tài eo 2222122 tre 31.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+c+c++x+xz++ 5

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ương 2 — Cơ sở lý thuyết ¿-5222+2¿22EEEE+tEEEEEErerrkvrrrrrrkrcree 9

2.1 Sơ lược về kiến trúc tập lệnh RISC-V 2¿¿5222+2ct222Exerrtrrkerrrrrrvee 92.1.1 Tổng qútết £ me VỆ , Ả coi 9

2.1.2 Kiến trúc tập lệnh cơ bản -ccc+22ccvvscccce+rrrx 10

2.2.4 Coverage MONIIOI - ¿5S Street 24

Chương 3 Thiết kế đề xuất :+©22+++22ES++rttEEEvrrrrrrvrrrrrrrrcee 253.1 Thiết kế hệ thống -22¿222+2+2222+22222111222211112221122222111 221 re 253.2 Thiết kế chỉ tiẾt HH 263.2.1 Random Test Cen€TAfOT + +5 xxx it 26

Trang 6

3.2.2 Configuration file s5 St tre 33

Trang 7

DANH MỤC HÌNH

Hình 2.1: Hệ thống xác minh chức năng bộ xử lý -ccccccccccceccsccrccee 20 Hinh 3.1: Thiét KE N6 ng 5NNNẠ7S5ổeaaa Ả ÔÒÔỎ 25

Hình 3.2: Sơ dé thuật toán của bộ phát sinh chương trình kiểm tra ngẫu nhiên 27

Hình 3.3: Nội dung trong tép COH[ÏSHFđfÏOHH + Skeekkrkterekekekrkekree 34 Hình 3.4: Minh họa nội dung của 1 tescases với thông số “NumSequences Hình 3.5: Minh họa nội dung của 1 tescases với thông số “NumWeights”’ Hình 3.6: Sơ do thuật toán cua Assembler

Hinh 3.7: Quy trinh cua giai doan Pre-Endcoding 38 Hình 3.8: Các bước thực thi chương trình AsseImbÏeF - - - «se Ses++xscscee 39 Hình 3.9: Minh họa cho tệp chương trình MG Há) 5555 S+Sccxsxsesvseee 39 Hình 4.1: Quy trình thực hiện của RISC-V RIG 55+ c++cexsxsxexscee 40 Hình 4.2: Ví dụ minh hoa cho mỘt tép Configuaration 5555 S+5+S+x+x+v+ese+ 42 Hình 4.3: Ví dụ cho chương trình hợp ngữ là chuỗi lệnh có ý nghĩa 44

Hình 4.4: Ví dụ cho chương trình hợp ngữ là chuối lệnh phụ thuộc vào trọng số 44

Hình 4.5: Ví dụ cho nội dung của một tệp chương trình mã Imáy - s- 48 Hình 4.6: Quy trình xác minh tính đúng đắn của RÑTG -: sc -: 49

Hình 4.7: Ví dụ về nội dung tiêu chí tính độ bao phủ cua RISC-V RTG 50

Hình 4.8: Ví dụ về nội dung tệp kết quả tính độ bao phú của RISC-V RTG 51

Hình 4.9: Biểu đồ thống kê phạm vi số lượng lệnh được tạo ra theo nhóm lệnh 5.3 Hình 4.10: Biểu đô thông kê chỉ tiết vé số lượng lệnh thuộc nhóm ALU được tạo 53

Hình 4.11: Biểu đô dé xác minh được tính ngẫu nhiên của RISC-V RTG 54

Hình 4.12: Biéu đô thống kê số lan sử dung thanh ghi của ba tệp tesfcases 35

Hình 4.13: Sơ đô thuật toán tính độ bao phủ của tiêu chí InstNuim - 59

Hình 4.14: Nội dung của một mẫu thử nghiệm được tạo ra ngẫu nhiên - 60

Hình 4.15: Biểu đô độ bao phủ của RISC-V RIG -©2cccccscccvsccscrrssee 61

Hình 5.1: Sơ đô hệ thống hướng phát triỄn -cccccc5555ccccccvvxrsecrvverrrrreee 67

Trang 8

DANH MỤC BANG

Bang 1.1: Những CPU RISC-V tiêu biểu [1] csscccsssssscsssssssesssssssessssssssssssssesssssssesesssvees 4

Bang 2.1: Bang các tập lệnh cơ sở và mở rộng của RISC-V -.-c~s=+<+<«+ 9 Bang 2.2: Phân loại các nhóm lệnh của tập lệnh RV32Ì - «s5 x5x+x<++ 10

Bang 2.3: Dinh dạng lệnh của các lệnh RV321 ÏSA 5+ cc5+c+csxsxeexcee 12

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 „l5

Bảng 2.7: Chức năng của nhóm lệnh lưu 16

Bang 2.8: Chức năng cua nhóm lệnh số học và luận n1 17

Bang 2.9: Chức năng của nhóm lệnh số học và luận lý 2oeccsssssssssssseessssssesssssseesesssees 18

Bảng 2.10: Chức năng của nhóm lệnh số học và luận Ìý Ÿ «-x<«=«+ ¡9

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

Bảng 3.2: Biểu diễn minh họa cho một nội dung tệp báo CáO -‹ -«-ec-<=+ 31

Bang 4.1: Vi dụ cho nội dung của một tệp DAO CAO .- + + ++sc+c+x+x+v+eeee 46

Bang 4.2: So sánh kết qua đạt được với hai công trình nghiên cứu đã có 62

Trang 9

DANH MỤC TU VIET TAT

Từ viết tắt Từ đầy đủ

CPU Central Processing Unit

ISA Instruction Set Architecture

ISS Instruction Set Simulator

RISC Reduced Instruction Set Computer

RISC-V RTG RISC-V Random Test Generator

SoC System on Chips

Trang 10

trúc tập lệnh này đ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ôiké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 lại, nhưng nhóm tìmhiểu thì nó lại rất mới tại Việt Nam và hiện nay chưa ghi nhận được công trình nghiên

cứu nào liên quan đến Bộ phát sinh chương trình kiểm tra ngẫu nhiên Đây cũng là lý

do mà nhóm muốn thực hiện đề tài: “B6 phát sinh chương trình kiểm tra ngẫu nhiêncho thiết kế RISC-V” Thực hiện đề tại này nhóm mong muốn công trình nghiên cứu

có thể góp một phần giúp Việt Nam bắt 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ế vi mạch nói chung và thiết kế bộ vi xử lý RISC-V nói riêng

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 thứ nhất là những chương trình hợp ngữ với những chuỗi lệnh có

nghĩa dùng dé kiểm tra tính đúng đắn của bộ vi xử lý cho thiết RISC-V Tệp thử

nghiệm thứ hai 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ùngmong muốn Ngoài ra nhóm đặt mục tiêu sẽ đạt được 90% độ bao phủ với những tiêuchí 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) Đồng thờ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

Trang 11

Ngoài ra ở khóa luận này, nhóm sẽ so sánh kết quả tạo được với hai công trìnhnghiê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.

Trang 12

Chương 1 Giới thiệu đề tài

1.1 Giới thiệu đề tài

Tên đề tài: Bộ phát 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:

RISC-V (phát âm là “risk-five”, 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, đã và đang thu hút được sự phát triển và ứng dụng

từ các nhà khoa học cũng như các công ty sử dụng vi xử lý trên thế giới Tráingượ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 bắt 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áttriể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 chi phí của bộ vi xử lý trở nên rẻ hơn và phù hợp vớinhiều ứng dụng khác nhau

Ngoài ra, RISC-V còn có những mong muốn khác là tạo ra một kiến trúc tậplệnh tiêu chuẩn chung để có thể thống nhất và tái sử dụng phần mềm trên nhiều hệ

thống khác nhau và 6n định trong vài chục năm thay vì sử dụng nhiều kiến trúc tậplệnh khác nhau trên cùng một hệ thống System on Chip (SoC) như trước đây Dé thực

hiện điều đó, RISC-V cho phép mở rộng tập lệnh theo hướng phù hợp cho từng ứng

dụng cụ thể, thông qua phân tập lệnh mở rộng (tiêu chuẩn hoặc do người thiết kế CPU

tự định nghĩa).

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ậplệ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

Trang 13

Bảng 1.1: Những CPU RISC-V tiêu biểu [1]

RISC-V CPU | Nhà pháttriển | Kiến trúc tập lệnh | Sản phẩm mục tiêu

Máy tính, thiết bị cá

Rocket/BOOM | Đại học California | RV64G

nhân ORCA Vector Blox RV32IM FGPA

Sodor Dai hoc California | RV32I Education

SCRI Syntacore RV32I/E[MC] Vi điều khiển/IoT

PICORV32 Clifford Wolf RV32IMC Vi điều khiên/IoT

Z-Scale Đại học Berkeley | RV32IM Vi điều khiển/IoT

ETH Zurich & Đại 5 RISCY RV32IMC[F]X Vi điều khiển/IoT

học Bologna

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àichính để làm việ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ụ đề 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áccô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, 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, ) để đứng ra xây dựng kiến trúc tập lệnh mới như

RISC-V Do đó việc đóng góp của rất nhiều thành viên đến từ cộng đồng sử dụngRISC-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 ý nghĩa mà Khóa luận này muốn hướng đến, đó là tham

gia vào tìm biể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 Do đó, khóa luận này muốn thiết kế ra bộ phát sinh chương

Trang 14

trình kiểm tra ngẫu nhiên cho thiết kế RISC-V (viết tắt là RISC-V RTG) với mục đíchtạ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ý.

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:

= Tạo 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 va 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ằm

trong 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

" D6 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).

Trang 15

Nghiên cứu sử dụng GRIFT (Galois RISC-V ISA Formal Tools) dé đ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ện 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 chưa ghi nhận được công trình

nghiên cứu nao liên quan đến bộ phát sinh chương trình kiểm tra thiết kế cho bat kỳ

bộ xử lý nào tại Việt Nam.

1.3 Mục tiêu đề tài

Mục tiêu đề tài 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 đầu tiên tại Việt Nam

- Độ bao phủ (coverage) đạt 90% 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 dang 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, có nhảy và không nhảy.

= Đố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:

© Ghi giá trị tới 32 thanh ghi.

e Đọc 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

Trang 16

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ớ:

© _ Truy xuất địa chỉ bộ nhớ liên tiếp (cho truy xuất mảng)

© Đọc và ghi một dia chỉ bộ nhớ nhiêu lần

1.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 đầu tiên giới thiệu về

đề tài khóa luận và một số nghiên cứu liên quan Các chương tiếp theo sắp xếp theo

bố Cục sau:

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 dé tài như tim 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ăng trong sơ dé hệ thống đó bao gồm cáckhối: Random Test Generator, Testbench Controller, Comp-runner và Coverage

Monitor.

Chương 3: Thiết kế đề xuất

Dựa vào những kiến thức về cơ sở lý thuyết đã tìm 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 ranhó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 dé hiện thực khóa luận

Chương 4: Mô phỏng và Đánh giá kết quả

Trang 17

Ở 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ươngtrì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 5 là chương dé đú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àynhóm thực hiện sẽ đưa ra đề xuất cho hướng phát triển tiếp theo của đề tài trong tương

lai.

Trang 18

Chương 2 Cơ sở lý thuyết

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 tap lénh co ban RV64I Base Integer Instruction Set, 64-bit

RVI28I Base Integer Instruction Set, 128-bit

M Integer Multiplication and Division

A Atomic Instruction Các mở rộng tiêu

F Sigle-Precision Floating-Point chuẩn

D Double-Precision Floating-Point

Trang 19

Q Quad-Precision Floating-Point

L Decimal Floating-Point

Dé hỗ trợ tốt hon 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 dấu phẩy

động độ chính xác đơn (F), phép toán với số thực dấu cham độ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 I cùng với tất 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ơ bản

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 phan chia dựa trên chức năng va

opcode thành 9 nhóm như trong Bảng 2.2.

Bảng 2.2: Phân loại các nhó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_11 BEQ, BNE, BLT, BGE, BLTU, BGEU

00_000_11 LB, LH, LW, LBU, LHU

Nhóm lệnh nap 00 001_11 FLW, FLD

01_101_11 LUI

01_000_11 SB, SH, SW Nhóm lệnh lưu

01_001_11 FSW, FSD

10

Trang 20

ADDI, 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 và 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 Bả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.4 trình bày cấu trúc của

định dạng lệnh.

lãi

Trang 21

Bang 2.3: Dinh dạng lệnh của các lệnh RV32I 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,

ETYPE SRLI, SRAI, LB, LH, LW, LBU, LHU, JALR.

S-TYPE SB, SH, SW.

SB-TYPE BEQ, BNE, BLT, BGE, BLTU, BGEU.

UJ-TYPE JAL.

U-TYPE AUIPC, LUI.

Bang 2.4: Cấu trúc của định dạng lệnh

Cấu trúc lệnh Lệnh

funct7 rs2 rsl funct3 rd opcode | R-type

imm[I1] | imm[10:5] | imm[4:1] | imm[0] rsl funct3 rd opcode |_ L-type

imm[11] | imm[10:5] rs2 LAI imm[4:1] | imm[0] | opcode S-type

imm[12] | imm[10:5] rs2 rsl imm[4:1] | imm[11] | opcode | SB-type

imm[31] 1mm[30:20] imm[19:15] | imm[14:12] rd opcode U-type

imm[20] | imm[10:5] | imm[4:1] | imm[0] | imm[19:15] | imm[14:12] rd opcode | UJ-type

Về thanh ghi, RV32I có một thanh ghi PC và 32 thanh ghi trong đó một thanh ghi 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úc LOAD-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ó

12

Trang 22

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 dia chỉ là 64-bit và RV128I có không gian dia 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 R V321 đượ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) dé 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).

2.1.4 RISC-V 32I

Khóa luận này, nhóm sẽ sử dụng kiến trúc tập lệnh RISC-V 32I (viết tắt là

RV32D dựa trên ISA Chức năng, ý nghĩa của nhóm lệnh rẽ nhánh được trình bày

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óm lệnh nhảy được trình bày lần lượt tại Bảng 2.8, Bảng 2.9, Bảng 2.10, Bảng 2.11.

13

Trang 23

Bang 2.5: Chức năng của nhóm lệnh rẽ nhánh

Phân loại Lệnh Ví dụ Y nghia

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.

Nếu thanh ghi 1 có giá trị nhỏ hon

thanh ghi 2, thì sẽ nhảy đến PC = PC

Trang 24

Tính địa chỉ memory với base lưu

trong thanh ghi va offset lưu ở lệnh,

sau đó đến địa chỉ đó lay byte kế tiếp

lưu vào thanh ghi.

Tinh địa chi memory với base lưu

trong thanh ghi va offset lưu ở lệnh,

sau đó đến địa chỉ đó lay half word kế tiếp lưu vào thanh ghi.

LW LW 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ỉ đó lay word kế tiếp

lưu vào thanh ghi.

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 byte 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 trái.

Tinh địa chi memory với base lưu

trong thanh ghi va 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ộng

bit dựa vào MSB của số đã nạp, chén

bit 0 vào ở phía bên trái.

Load 20-bit [31:20] của số tức thời,

kết quả lưu vào thanh ghi.

15

Trang 25

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

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 giá trị trong thanh ghi lưu vào byte tiếp theo.

Tinh địa 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 half word tiếp theo.

SW SW 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 giá trị trong thanh ghi lưu vào word tiếp theo.

16

Trang 26

Bảng 2.8: Chức năng của nhóm lệnh số học và luận lý 1

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á tri tức thời, kết

quả lưu vao thanh ghi.

ORI ORI x5, xó, 20

OR thanh ghi với giá trị tức thời, kết

quả lưu vao thanh ghi.

ANDI ANDI x5, x6, 20

AND thanh ghi với giá trị tức thời, kết

quả lưu vao thanh ghi.

SLLI SLLI x5, x6, 20

Shift gia tri cua thanh ghi sang trai n

bit, với n là một giá trị tức thời, kết

quả lưu trong thanh ghi.

17

Trang 27

Bảng 2.9: Chức năng của nhóm lệnh số học và luận lý 2

Shift giá tri của thanh ghi sang phải 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

bit, 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.

Cộng giá trị thanh ghi thứ nhất và giá

trị thanh ghi thứ, kết quả lưu vào

là 0.

18

Trang 28

Bảng 2.10: Chức năng của nhóm lệnh số học và luận lý 3

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ị thanhghi thứ nhất nhỏ hơn giá trị thanh ghi

thứ hai thì kết quả lưu vào thanh ghi

Shift giá tri của thanh ghi thứ nhất

sang phải n bít, với n là một giá trị

thanh ghi thứ hai, kết quả lưu trong

thanh ghi.

SRA SRA x5, x6, x7

Shift giá trị của thanh ghi thứ nhất

sang phải n bít, với n là một giá trị

thanh ghi thứ hai, kết quả lưu trong

thanh ghi va sẽ mở rộng bit dựa vào

AND gia trị thanh ghi thứ nhất va giá

trị thanh ghi thứ hai, kết quả lưu vào

thanh ghi.

19

Trang 29

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

lưu giá trị của lệnh kế tiếp trước đó

vào thanh ghi.

Trong Hình 2.1, 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

20

Trang 30

đợ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 được viết bằng ngôn ngữ lập trình cấp cao ISS dùng để mô phỏnghành vi của máy tí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ềuphương pháp khác nhau để 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ộc

theo 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 mẫuthử nghiệm đề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 ngẫu nhiên được thực hiện để tạo 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à trạng 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ệctriể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ại

phần mềm máy tính được sử dụng để 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ợpngữ (hay còn gọi là Assembler) dùng đề 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

có đầy đủ tính năng và thường được tạo ra bởi các tổ chức thiết kế Dé tạo ra bộ phát

21

Trang 31

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:

- Table Based Generators: Bộ phat 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ể tạo ra các testcases tương đối nhanhchó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ũngthấ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ở đữ liệu quan hệ đề 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áctestcases 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 tình

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 là

những mẫu thir nghiệm được tạo ra sẽ phần lớn kiểm tra lệnh, toán hạng vàlựa chọn dữ liệu Ư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 để 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 tạp thì phương pháp này vẫnchư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ìnhkiểm tra ngẫu nhiên động là nâng cao khả năng tạo ra các testcases phức tạp,

có thể tạo ra được các mẫu thử nghiệm 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ử dụng Do đó nhược điểm của phương pháp này là chỉ phítạo và bảo 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.

22

Trang 32

2.2.2 Testbench Controller

Testbench Controller bat đầu bằng cách nạp các testcases được tao ra bởiRTG vào Instruction Set Simualator (hay còn được viết tắt là ISS) Trình mô phỏngtậ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 baogồ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

- Cải 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ìnhthườ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 đã địnhtrong tệp configuration Thiết kế cũng bao gồm một Coverage Monitor được chạyngoại tuyến để đ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

để 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ử lý 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 vấn đề, cụ thé là lệch và va chạm, phảiđược xử lý bởi khối Comp-runner

Trang 33

Mặc dù ISS và RTL chạy song song cùng một chương trình, kết quả của cùngmột lệnh có thé được tao ra tại các thời điểm khác nhau Cũng trong những khoảngthờ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ả hơn so với mô hình kia Điều này thường xảy rasau lệnh rẽ nhánh, vì độ trễ nạp đầy 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

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

Độ 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 lai, 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 đề tạo thống kê vùng phủ

24

Trang 34

Chương 3 Thiết kế đề xuất

Chương này trình bày chỉ tiết các vấn dé 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ữ lập trình hướng đối tượng (OOP — Object OrientedProgramming) 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

để hiện thực khóa luận Nhóm sử dụng phần mềm Visual Studio để hiện thực khóaluậ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.

3.1 Thiết kế hệ thống

Khóa luận này chỉ dừng lại ở việc tạo ra bộ phát sinh chương trình kiểm tra ngẫu

nhiên cho thiết kế RISC-V Hình 3.1 trình bày kiến trúc hệ thống của RISC-V RTG

Tép báo cáo Random Test

(.txt files) Generator

Assembly test program

on disk (.S files) Configuration

file

Assembler

test program on

disk (.elf files)

Hinh 3.1: Thiét ké hé thong

Bước đầu tiên RISC-V RTG sé doc tép configuration để nắm được số lượngtestcases 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 dé xác minh chức năng

bộ vi xử lý và dùng để 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 đề tính độ bao phủ và thử

25

Trang 35

nghiệm chương trình Hơn nữa, sau khi sau khi chạy bộ phát sinh chương trình kiểm

tra ngẫu nhiên sẽ tạo ra những tệp báo cáo tương ứng với những testcases được tạo

ra Các tệp báo cáo này là những thống kê về số lượng thanh ghi và tên lệnh đã sửdụng trong testcases đó Bước tiếp theo thông qua Assembler để chuyển những

testcases là các chương trình hợp ngữ thành ngôn ngữ mã máy (.elf files) Những

testcases là những chương trình mã máy sẽ đưa cho các nhóm thiết kế phần cứng để

họ tự kiểm tra

3.2 Thiết kế chỉ tiết

3.2.1 Random Test Generator

Nhóm dựa vào những cơ sở lý thuyết được tìm hiểu, và những ưu nhược điểm

từng phương pháp của RTG Nhóm quyết định thực hiện khóa luận dựa trên phươngpháp “Table Based Generators” [4]: Bộ phát sinh chương trình kiểm tra ngẫu nhiên

dựa vào bảng Ngoài những ưu điểm của phương pháp này như dễ thực hiện, xác xuất

thành công cao, hay chỉ phí bảo trì thấp thì những nhược điểm của phương pháp nàynhóm sẽ khắc phục bằng phương pháp “Weighted Randomness” [5]

Weighted Randomness: Bộ phát sinh chương trình kiểm tra ngẫu nhiên dựa

vào trọng SỐ Trong cơ chế này, mỗi lệnh được liên kết với một trọng số, cho biết xác

suất được chọn bởi bộ tạo Trọng số cao có nghĩa là xác suất cao và do đó sẽ có nhiều

trường hợp của lệnh được tạo ra trong một chương trình Trọng số thấp có nghĩa là

xác suất thấp va do đó dẫn đến một vai trường hợp của lệnh có thé được tạo ra ít hoặc

thậm chí là không được tạo Tất cả các trọng số cùng nhau tạo thành một hàm phânphối xác suất cho tập lệnh Nếu một chương trình thử nghiệm chỉ chứa một số loại

lệnh đã chọn sẽ được tạo, trọng số tương ứng được đặt thành một số lớn hơn 0 vàtrọng số của tất cả các lệnh khác được đặt thành 0

Việc thực thi bộ phát sinh chương trình kiểm tra ngẫu nhiên bắt đầu bằng cáchphân tích cú pháp các đầu vào do người dùng cung cấp và đọc tệp configuration Hình

3.2 trình bày sơ đồ thuật toán của RISC-V RTG

26

Trang 36

TẾ (1) read the number If (2) read the number

testcases of sequences testcases of weights

Vv Ỷ Random functions to generate (F) Initialize Registers and Data

Memoi

set =0 z

f++

Ỷ Ỷ

Select a Random Instruction Class Random Instruction based on

and Pick Random Instruction weights

Class from selected class

Trang 37

Tương đương với hai thông số “NumSequences” và “NumWeights” của tệpconfiguration thì RISC-V RTG sẽ tạo ra hai kiểu đầu ra khác nhau:

- Với thông số “NumSequences” thi đầu ra sẽ là những mẫu thử nghiệm được

dựa trên phương pháp Table Based Generators Ở những mẫu thử nghiệm này,

RISC-V RTG sẽ được tạo thành từ một chức năng chính và các chức năng

khác được tạo ngẫu nhiên Các mẫu thử nghiệm được tạo ra có độ dài chuỗi lệnh tùy ý và được đặt ở các vị trí ngẫu nhiên Dựa vào phương pháp này,những mẫu thử nghiệm sẽ đảm bảo được việc triển khai ngăn chặn đệ quy vàtránh các vòng lặp vô hạn gây ra bởi các lệnh gọi hàm ngau nhiên Hon nữa là

đảm bảo rằng địa chỉ đích của một lệnh rẽ nhánh luôn là một vị trí chương

trình hợp lệ.

- Với thông số “NumWeights” thì đầu ra sẽ là những mẫu thử nghiệm được dựa

trên phương pháp Weighted Randomness Ở đầu ra dựa vào phương pháp này

thì các RISC-V RTG sẽ tạo ra những mẫu thử nghiệm là các chuỗi lệnh màcác lệnh được tạo ra sẽ phải phụ thuộc vào trọng số của nhóm lệnh Nhữngtrọng số này sẽ được người dùng định nghĩa tại tệp configuration Với các

nhóm lệnh có trọng số cao, các lệnh trong nhóm đó sẽ được tạo ra nhiều, ngược

lại nếu nhóm lệnh nào có trọng số thấp thì các lệnh trong nhóm đó sẽ được tạo

ra ít Mỗi lệnh có thể tạo ra nhiều lần hoặc thậm chí có lệnh sẽ không được tạo

Ta.

Trong khóa luận, dựa vào sơ đồ thuật toán của RTG được mô tả ở Hình 3.2,

nhóm đã sử dụng một số cấu trúc dữ liệu và giải thuật, phương thức và hàm trong

ngôn ngữ lập C++ Bảng 3.1 trình bày chỉ tiết về cấu trúc dữ liêu, hàm và thư viện

chính được nhóm sử dụng trong khóa luận.

28

Trang 38

Bảng 3.1: Cấu trúc dữ liêu, hàm và thư viện được sử dụng

Con trỏ hàm <iterator> Con trỏ hàm hay còn được gọi là function pointers

thường được sử dụng khi các hàm có cùng kiều trả về

và danh sách tham số hoặc khi cần truyền một hàmcho hàm khác.

map <map> Có kiểu cấu trúc liên kết Mỗi phần tử của map là sự

kết hợp của khóa (key value) và ánh xạ của nó

(mapped value) Dữ liệu trong map không chứa các

khóa giống nhau

Vector <vector> Là một class trong thư viện STL của C++ Nó được

sử dụng để lưu trữ tập hợp phan tử cùng kiểu dữ liệu

Nó tự quản lý việc cấp phát thêm không gian lưu trữ

khi thêm một phan tử vào trong vector Có thể hiểuđơn giản nó có thể sử dụng thay cho mảng nhưngthuận tiện hơn vì không cần quan tâm việc quản lý

vùng nhớ thủ công nếu số lượng phan tử vượt quá

Để tạo ra một số ngau nhiên cstdlib hd trợ

ham rand() Hàm này trả về cho kết quả là một giá trịnguyên có giá trị từ0 đến RAND MAX,

với RAND_MAX là một hằng số được định nghĩa

trong thư viện <cstdlib>.

29

Ngày đăng: 02/10/2024, 03:13

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w