Các testcases được tạo ra là những chương trình hợp ngữ 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áclệnh, thanh ghi, địa chỉ và dữ
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
NGUYEN VAN HANH
KHOA LUAN TOT NGHIEP
NGHIEN CUU THIET KE BO MO PHONG TAP LENH
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
NGUYEN VAN HANH - 17520442
KHOA LUAN TOT NGHIEP
NGHIEN CUU THIET KE BO MO PHONG TAP LENH
RISC-V
RESEARCH DESIGN RISC-V INSTRUCTION SET
SIMULATOR
KY SU NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN ThS PHAM MINH QUAN
KS TRAN DAI DUONG
TP HO CHÍ MINH, 2022
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 62/QD-DHCNTT
ngày 14 tháng 02 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến toàn thể 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,
đặ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 Phạm Minh Quân và thầy Trần Đại
Dương Hai thầy đã hướng dẫn em rất tận tình 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 thật sự quýbáu dé 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è và những người đã giúp em tìm kiếm thông tin và động
viên tỉnh thần cùng nhau trao đổi, giải quyết các vấn đề cho em trong suốt quá trìnhthực hiện khóa luận.
Ngoài ra, con xin gửi đến bé mẹ, gia đình lời cảm ơn vì đã tạo mọi điều kiện
cho con được học tap, luôn bên cạnh tin tưởng và ủng hộ tinh thần cho con trong suốt
quá trình học tập.
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 lan nữa em xin chân thành cảm ơn!
TP Hồ Chí Minh, ngày 14 tháng 2 năm 2022
Sinh viên thực hiện
Nguyễn Văn Hạnh
Trang 5MỤC LỤC
CHUONG I GIỚI THIỆU DE TÀI
1.1 Thơng tin tổng quan của đề tài -22¿-22222+c2222vvceEEEEvvrtrrkkrrrsrrkrcree 21.2 Một số nghiên cứu liên quan
1.2.1 Tình hình nghiên cứu ngồi nước -.-. ¿ «+ =+=+++++ 4
1.3 Mục tiêu để tài - 22222222212 222111 2222111222111 222012 2.2 c1 re 5
1.3.1 Mục tiêu tổng quan c-¿+222++ccsccrxererrkserrrrrreccrrrveeÕ13.2 Mục tiêu chỉ tiết 222cc 6
1.4 Phương pháp nghiên CỨU ¿- ee + ©+++E2££E£EE£k£keEEEErkrkrkekerkrkrkekrke 6
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT -2222¿£2222V2222++t2EEEEEEvrrrrtrrrrrrrrree §2.1 Sơ lược về kiến trúc tập lệnh RISC-V -.¿¿522++z+222vvvretcvvvrrrrrrvee §
2.2.2 Testbench ContrỌÏT- - ¿6 2 +22 33218333331 3£E£#£eEEexeeeeeeseeeseex 7
Trang 63.2.1 Assembler -c th HH re 21 3.2.2 Configuration file.
3.2.3 Instruction Set SimuÏafOT ees S*S*£‡+sEkekeerrsrrrrkekek 23
CHƯƠNG 4 MO PHONG VÀ ĐÁNH GIA KET QUA
4.1 Quy trình mô phỏng eeneeeseseseeeeeneseseseeseeeseseseeeesessseseeeeneee 26
4.2 So sánh kết quả
CHƯƠNG 5 KET LUẬN VÀ HƯỚNG PHAT TRIÊN - 415.1 Kết luận
5.2 Hướng phát triền -+++22+++++2E++++tEEEE+rtrtEEEvrtttrrkrrrrrrkrrrrrrkev 41
Trang 7DANH MỤC HÌNH
Hình 1.1: Hệ thống xác minh chức năng bộ xử lý - s-.seeersereeeeÖ
Hình 3.1: Thiết kế kiến trúc hệ thống s eerreeeerrsrrereereesee.ee 20Hình 3.2: So đồ thuật toán của Assembler we 22
Hình 3.3: Ví dụ về một chương trình hợp ngữ s-eeeeeeeeeeeee 22
Hình 3.4: Minh hoa cho tệp chương trình mã máy, -c-ccccccccceccex DD
Hình 3.5: Thiết kế sơ đồ tổng quát -. .st.eteereeeerreeeereereereeeeee 24Hình 4.1: Quy trình thực hiện của ISS -ccsecseseeerieereriiirrrrrirrririeisee 20)
Hình 4.2: Tệp chương trình thực thi wissen 2 Hình 4.3: Thực thi từng dòng lệnh mã máy - e-c -c5cvscvvsevsreerrvevvveeaerer 29
Hình 4.4: Kết quả của tính toán độ bao phủ coverage - . ee 30Hình 4.5: Thể hiện ví dụ giá trị lưu trong bộ nhớ wee 3
Hình 4.6: Thể hiện ví dụ về giá trị của thanh ghi .-. -.se.eeee.eeee 3 2
.33
.33
Hình 4.7: Ví dụ về chạy Debug với thiết lập breakpoint
Hình 4.8: Ví dụ chạy chế độ Debug với step-by-step
Hình 4.9: Tệp đầu vào đề cho bộ mô phỏng ISS và các nhóm phần cứng 36
Hình 4.10: Kết quả giá trị thanh ghi trong tệp tin sau khi chạy ISS 37Hình 4.11: Kết quả giá trị thanh ghi của nhóm phần cứng multi-thread sau khi mô
Trang 8DANH MUC BANG
Những CPU RISC-V tiêu biểu
Các lệnh cơ bản của bản thuộc kiến trúc tập lệnh RV321
Bảng các tập lệnh cơ sở và mở rộng của RISC-V Phân loại các nhóm lệnh của tập lệnh RV321 -c :-e-ccce+
Cấu trúc các định dạng lệnh RV321 s.scrrestrrrerrrre
Chức năng của nhóm lệnh rẽ nhánh -.‹esese«ecccrvevvvseversrrrrr
Chức năng của nhóm lệnh nạp -c-c-ccc-cccceececeeeeeceeecceeccceeeee
Chức năng của nhóm lệnh lưu
Chức năng của nhóm lệnh số học và luận lý -e
Chức năng của nhóm lệnh số học và luận lý 2 - -.-.-eChức năng của nhóm lệnh số học và luận l//5À, Hee
Nội dung của configuration file
So sánh với 2 bộ mô phỏng khác
Trang 9DANH MỤC TU VIET TAT
Từ viết tắt Mô tả
RISC Reduced Instruction Set Computer
ISS Instruction Set Simulator
RTG Random Test Generation
ALU Arithmetic Logic Unit
RV32I RISC-V 32 Integer
PC Program Counter
OVM Open Verification Methodology
UVM Universal Verification Methodology
ISG Instruction Stream Generator
ISA Instruction Set Architecture
RTL Register Tranfer Level
Trang 10TÓM TÁT KHÓA LUẬN
RISC-V là một kiến trúc tập lệnh mở (Open-sourse ISA) được xây dựng dựatrên những nguyên tắc của kiến trúc tập lệnh RISC (được viết tắt từ ReducedInstruction Set Computer) Hiện RISC-V là bộ kién tric tập lệnh mới (chi vừa đượcphát hành chính thức vào tháng 03/2019) cho phép mở ra một kỷ nguyên mới về sựđổi mới của bộ vi xử lý thông qua việc cộng tác tiêu chuẩn mở (open standardcollaboration) Kiến trúc tập lệnh RISC-V có khả năng mở rộng cả về phần cứng lẫn
phần mềm mà không có bat kỳ ràng buộc gì về kiến trúc
Do đó, mục tiêu của để tài là tạo ra một bộ mô phỏng tập lệnh RISC-V, được
đặt tên là ISS ISS là một chương trình phần mềm có chức năng mô phỏng hành vicủa một bộ xử lý mà không phụ thuộc vào phần cứng Cho phép người dùng xác minhđược độ chính xác của câu lệnh từ đó phát hiện lỗi sai Ngoài việc phát hiện lỗi, ISScòn thống kê độ bao phủ dựa trên cấu hình của người dùng mong muốn như lệnh,thanh ghi, Từ đó cho phép người dùng có thé so sánh và đánh giá với mục tiêu đề
Ta.
Ngoài ra khóa luận này, kết quả của thiết kế được so sánh với kết quả mô
phỏng tạo được với bộ mô phỏng Mars dành cho tập lệnh MIPS [1] và RISC-V
Interpreter [2].
Trang 11CHƯƠNG1 GIỚI THIỆU DE TÀI
1.1 Thông tin tổng quan của đề tài
Động lực thực hiện đề tài:
Hiện nay đề sử dụng các kiến trúc khác như Arm hay Intel thì phải trả những
chỉ phí khá đắt đỏ nên rất khó để các nhà phát triển có thể sở hữu bản quyền và thựchiện nghiên cứu Đối với RISC-V, mọi thứ hầu như là 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 quantrong 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 mach
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
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 dich ứng dụng và phân khúc khác nhau Bảng 1.1 trìnhbày một số sản phẩm CPU RISC-V tiêu biéu
Bang 1.1: Những CPU RISC-V tiêu biểu
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 | Dai học California | RV64G
nhan
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 ` RISCY RV32IMC[F]X Vi điều khiển/IoT
học Bologna
Trang 12Bộ mô phỏng tập lệnh RISC-V còn mới ở Việt Nam cho nên nhóm cũng lấy
đó làm động lực dé làm khóa luận này nhằm góp phần vào nghiên cứu bộ tập lệnhRISC-V ở nước ta cũng như cộng đồng RISC-V Nghiên cứu thiết kế RISC-V ISStrong khóa luận này nhóm cũng tiếp bước dé hoàn thành hệ thống xác minh bộ xử lý
RISC-V theo Hình 1.1 mà nhóm nghiên cứu thực hiện Hệ thống bao gồm: RISC-VRTG, Testbench Controller, RTL Simulation, Comp-runner và Coverage Monitor.
RTG là một phần mềm máy tính được sử dụng dé xác minh chức năng của
bộ 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ữ 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áclệnh, thanh ghi, địa chỉ và dữ liệu.
Testbench Controller: là khói điều khiển ISS và RTL simulation, bat đầubằng cách nạp các testcases được tạo ra bởi RTG vào ISS
ISS (Instruction Set Simulation) là nội dung dé tài khóa luận mà nhóm
thực hiện Bộ mô phỏng ISS được sử dụng như là mô hình tham chiếuvàng 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 được viết bằng ngôn ngữ lập trình cấp cao ISS dùng để mô phỏng
Trang 13hà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 mô phỏng chức năng của thiết kế Có nhiềuphương pháp khác nhau để tiến hành như OVM, UVM bằng xác minh
truyền thống, Đầu ra của RTL Simulation thông thường là dạng sóng,
dữ liệu, hoặc các ràng buộc theo yêu cầu của người dùng Quá trình của
mô phỏng kết thúc khi tất cả các mẫu thử nghiệm đều được thực thi và chokết quả giống như kết quả mong đợi
Comp-runner: mục tiêu dùng để so sánh trạng thái của ISS với mô hình
RTL nhằm xác định xem hai mô hình của bộ vi xử lý có hoạt động giống
nhau hay 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 Việc triển khai bộ điều khiển mô phỏng Comp-runner cũng bao gồmmột module giám sát độ bao phủ dé đo lường phạm vi xác minh và tạo
thống kê về độ bao phủ (coverage)
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, S.Karandikar công bố FireSim là một bộ mô phỏng tập lệnh cho
phép mô tả chính xác phần cứng theo chu kỳ bằng việc kết hợp việc tăng tốc dựa trênFPGA và nền tảng điện toán đám mây [3] với các ưu nhược điểm sau:
Trang 14o Không có giao diện người dùng
Victor Miguel de Morais Costa đã phát triển một bộ mô phỏng tập lệnh
RISC-V là RISC-Vulcan dành cho giáo dục trên nền web RISC-Vulcan hỗ trợ các tập lệnh mở rộng A,
F, M vaI [4] Sau đây là các ưu nhược điểm của Vulcan:
phỏng kiến trúc [5] Qua quá trình tìm hiểu HybridVerifier có những ưu nhược điểm
sau:
se Uudiém:
o Phát hiện lỗi tiềm an cũng như những lỗi trước đó từ đầu ra của bộ mô
phỏng bao gồm: vị trí lỗi và các nguyên nhân có thê xảy ra
o Chạy trên các kiến trúc khác nhau
Mục tiêu của đề tài nghiên cứu là bộ mô phỏng có thé thực thi các chương
trình hợp ngữ theo tập lệnh kiến trúc RISC-V Bộ mô phỏng (được gọi là ISS) cho
phép tính toán độ bao phủ dựa trên tiêu chí của người dùng đề ra
Trang 151.3.2 Mục tiêu chỉ tiếtMục tiêu đề tài nghiên cứu chỉ tiết như sau:
e _ Tìm hiểu kiến trúc tập lệnh RISC-V Cu thé, thiết kế bộ mô phỏng có thé
thực thi 39 lệnh (gồm: 37 lệnh cơ bản của kiến trúc tập lệnh RISC-V và 2
lệnh LR.W và SC.W) Từ đó nghiên cứu thiết kế bộ mô phỏng tập lệnh
RISC-V Cụ thể hơn là các loại định dạng: R-type, I-type, S-type, UJ-type,
U-type, SB-type được trìnnh bày ở Bảng 1.2
Bảng 1.2: Các lệnh cơ bản của bản thuộc kiến trúc tập lệnh RV32I
Định dạng lệnh Lệnh
R-type ADD, AND, OR, XOR, SLL,
SRL, SLTU, SUB, SRA, SLT,
LR.W, SW.C
I-type ADDI, SLTI, SLTIU, XORI,
ORI, ANDI, SLLI, SRLI, SRAI,
LB, LH, LW, LBU, LHU
S-type SB, SH, SW SB-type BEQ, BNE, BLT, BGE, BLTU,
BGEU
UJ-type JAL, JALR
U-type AUIPC, LUI
e H6 trợ thực thi từng lệnh có thé phát hiện được lỗi sai
© C6 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 RISC-V RTG
© Bộ mô phỏng độc lập phần cứng
1.4 Phương pháp nghiên cứu
Từ những mục tiêu tổng quát cũng như chỉ tiết nhóm đã thảo luận và đưa ra
phương pháp nghiên cứu như sau:
Trang 16e Phuong pháp nghiên cứu tài liệu:
o Tìm hiểu lý thuyết về kiến trúc tập lệnh RISC-V
o Quá trình thực thi các lệnh của bộ xử lý.
e Phuong pháp thực thiện: sử dụng quy trình phát triển phần mềm 5 bước:
o Phân tích yêu cầu
o So sánh kết quả với 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 [6] và RISC-V Interpreter [2]
o So sánh với kết quả mô phỏng của các nhóm phan cứng khác đã được
chứng minh tinh đúng đắn nhằm đánh giá khả năng độc lập phần cứng
của ISS Các đề tài khóa luận trước đó dùng dé so sánh là: Nghiên cứuthiết kế bộ vi xử lý RISC-V theo vi kiến trúc multithread [7] Nghiên cứuthiết kế bộ vi xử lý da lõi dựa trên kiến trúc tập lệnh RISC-V [8] Thiết
kế bộ xử lý kiến trúc RISC-V ho trợ chế độ giám sát [9]
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átKiế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ọ 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ó tất cả những lệnh cơ bản, những lệnh điều khiển
ludng bộ thanh ghi, bộ nhớ, cách đánh địa chỉ bộ nhớ, đủ đề 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ể linhhoạ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ặc
tậ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ẩmmục tiêu nhất định Nhằm dé hỗ trợ phát trién phần mềm tổng quát hơn, một tập hợp
các tập lệnh mở rộng được trình bày trong Bảng 2.1 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 phay động độ
chính xác đơn (F), phép toán với số thực dau chấm động độ chính xác kép (D) Mộtkiến trúc tập lệnh hỗ trợ tập lệnh co ban I 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
để giảm kích thước của mã máy (C) Cùng các lệnh mở rộng là những tập lệnh cơ bản
của RISC-V.
Bang 2.1: Bang 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 du Chú thích
RV32I Base Integer Instruction Set, 32-bit RV32E Base Integer Instruction Set (embedded) | 4 tập lệnh cơ bản RV64I Base Integer Instruction Set, 64-bit
Trang 18RVI28I Base Integer Instruction Set, 128-bit
M Integer Multiplication and Division
A Atomic Instruction
F Sigle-Precision Floating-Point Cac mo rong tiéu
D Double-Precision Floating-Point chuan
Q Quad-Precision Floating-Point
L Decimal Floating-Point
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 phân chia dựa trên chức năng và
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 nạp 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
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,
luận lý 01_100_11
MULHSU, MULHU, DIV, DIVU, REM, REMU
00_101_11 AUIPC
Trang 19Nhóm lệnh nhảy 1101111 JAL, JALR
Như trình bày tại Bang 1.2, các lệnh thực thi RV32I được chia thành 6 nhóm: R-TYPE, I-TYPE, S-TYPE, SB-TYPE, U-TYPE, UJ-TYPE Trong đó các định dang
R, L, S, U là bốn nhóm chính, hai nhóm SB-TYPE 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
Bảng 2.3 trình bày chỉ tiết cấu trúc của định dạng lệnh
imm imm | imm
imm[10:5] rs2, tsl funct3 opcode Ss
(1) [4:1] | [0]
10
Trang 20imm imm | imm
imm|{ 10:5] TS2 ts funct3 opcode SB
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 da 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 là kiến trúcLOAD-STORE Điều đó có nghĩa là chỉ có các lệnh nạp và lưu truy cập vào bộ nhớ,
còn lại các phép toán sé học đều chỉ sử dụng các thanh ghi
2.1.3 Kiến trúc tập lệnh mở rộngNhư 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
tai Bảng 2.1, 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
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 321
Trong khóa luận này, nhóm sẽ sử dung kiến trúc tập lệnh RISC-V 321 (viết tắt
là RV32I) là một tập lệnh con của RISC-V ISA Chức năng, ý nghĩa va ví dụ của
nhóm lệnh rẽ nhánh được trình bày tại Bảng 2.4 Tiếp theo là nhóm lệnh nạp tại Bảng2.5 Nhóm lệnh lưu tại Bảng 2.6 Nhóm lệnh số học và luận lý được trình bày tại Bảng
2.8 và Bảng 2.9 Cuối cùng là nhóm lệnh nhảy được trình bày tại Bảng 2.10
ll
Trang 21Bảng 2.4: Chức năng của nhóm lệnh rẽ nhánh
Phân loại | Lệnh Ví dụ Ý nghĩa
BEQ | BEQ x5, x6, 100 | Nếu hai thanh ghi có giá trị bằng nhau,
thì sẽ nhảy đến PC = PC + Immediate
BNE BNE x5, x6, I00_ | Nếu hai thanh ghi có giá trị không bằng
nhau, thì sẽ nhảy đến PC = PC +
Immediate.
Nhom BLT BLT x5, x6, 100 Nếu thanh ghi 1 có gid tri nhỏ hơn
lệnh rẽ thanh ghi 2, thì sẽ nhảy đên PC = PC +
nhánh Immediate.
BGE | BGEx5, x6, I00 | Nêu thanh ghi 1 có giá tri 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á tri 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 hon hoặc
bằng thanh ghi 2, thì sẽ nhảy đến PC =
PC + Immediate.
Bảng 2.5: Chức năng của nhóm lệnh nạp
Phân loại | Lệnh Ví dụ Ý nghĩa
LB LB x5, 40(x6) Tính địa chi memory với base lưu
trong thanh ghi và offset lưu ở lệnh,
Nhóm sau đó đến địa chỉ đó lấy byte kế tiếp
lệnh nạp lưu vào thanh ghi.
LH LH x5, 40(x6) Tính địa chỉ memory với base lưu
trong thanh ghi và offset lưu ở lệnh,
12
Trang 22sau đó đến địa chỉ đó lấy half word 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 đị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ếplư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,
kết quả lưu vào thanh ghi
Bảng 2.6: 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 đị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 byte tiếp theo
SH SH x5, 40(x6) Tính địa chỉ memory với base lưu
trong thanh ghi và offset lưu ở lệnh,
13
Trang 23sau đó đế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ị trongthanh ghi lưu vào word tiếp theo
Bảng 2.7: Chức năng của nhóm lệnh số học và luận lý 1
Phân loại Lệnh Ví dụ Y nghia
Nhom
lệnh số
học và
luận lý
ADDI ADDI x5, x6, 20 Cộng thanh ghi với giá trị tức thời, kết
quả lưu vào thanh ghi.
SLTI SLTI x5, x6, 20 Nếu giá trị thanh ghi lớn hơn giá trị
tức thời thì kết quả lưu vào thanh ghi
là 1 Nếu giá trị thanh ghi nhỏ hơn giá
trị tức thời thì kết quả lưu vào thanh
ghỉ là 0.
SLTIU SLTIU x5, x6, 20 Nếu giá trị thanh ghi lớn hơn giá trị
tức thời thì kết quả lưu vào thanh ghi
là 1 Nếu giá trị thanh ghi nhỏ hơn giatrị tức thời thì kết quả lưu vào thanh
ghỉ 0.
XORI XORI x5, x6, 20 XOR thanh ghi với giá trị tire thời, kết
quả lưu vào thanh ghi.
ORI ORI x5, x6, 20 OR thanh ghi với giá trị tức thời, kết
quả lưu vào thanh ghi.
ANDI ANDI x5, x6, 20 AND thanh ghi với giá trị tức thời, kết
quả lưu vào thanh ghi.
14
Trang 24SLLI SLLI x5, x6, 20 Shift giá tri của thanh ghi sang trái n
bít, với n là một giá trị tức thời, kết
quả lưu trong thanh ghi.
Bảng 2.8: Chức năng của nhóm lệnh số học và luận lý 2
Phân loại Lệnh Ví dụ Ý nghĩa
Nhóm
lệnh số
học và
luận lý
SRLI SRLI x7, x8, 20 Shift gia tri cua thanh ghi sang phai
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ời
công với giá trị của PC, kết quả lưuvào thanh ghi.
SRAI SRAI x7, x8, 20 Shift giá trị của thanh ghi sang phải
n bít, với n là một giá tri tức thời, kết
quả lưu trong thanh ghi và sẽ mở
rộng bít dựa vào MSB của số đã
shift.
ADD ADD x7, x8, x9 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 x7, x8, x9 Trừ giá trị thanh ghi thứ nhất va giá
trị thanh ghi thứ, kết quả lưu vào
thanh ghi.
SLT SLT x7, x8, x9 Nếu giá trị thanh ghi thứ nhất lớn
hon 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.
15
Trang 25Bảng 2.9: Chức năng của nhóm lệnh số học và luận lý 3
Phân loại Lệnh Ví dụ Ý nghĩa
Nhóm
lệnh số
học và
luận lý
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ết
quả 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àothanh ghi là 0.
XOR XOR x9, x10, x11 XOR giá trị thanh ghi thứ nhất và giá
trị thanh ghi thứ hai, kết qua lưu vào
thanh ghi.
SRL SRL x9, x10, x11 Shift gid tri cua thanh ghi thir nhat
sang phải n bit, với n là một giá trị
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
OR OR x9, x10, x11 OR giá trị thanh ghi thứ nhất va giá
trị thanh ghi thứ hai, kết quả lưu vàothanh ghi.
AND AND x9, x10, x11 AND giá trị thanh ghi thứ nhất và giá
trị thanh ghi thứ hai, kết qua lưu vào
thanh ghi.
16