Kết quả mô phỏng để kiểm tra hoạt động, chức năng và thời gian thực thi của
bộ xử lý được thực hiện qua ba giai đoạn chính:
e Giai đoạn mô phỏng pre-synthesis.
e Giai đoạn mô phỏng post-synthesis.
e Giai đoạn hiện thực trên FPGA (DE2 kit).
4.1. Giai đoạn pre-synthesis
Ở giai đoạn pre-synthesis, các chức năng của bộ xử lý sẽ được kiểm tra trên
ModelSim.
Kết quả mô phỏng các tín hiệu điều khiển bao gồm tín hiệu xử lý ngoại lệ, nguyên nhân xảy ra ngoại lệ và chế độ hoạt động hiện tại của bộ xử lý được mô tả cụ thể trong bảng Bảng 4.1.
Bảng 4.1: Kết quả mô phỏng các tín hiệu khối Control Unit khi thực thi các lệnh
Chu Tín hiệu điều khiển khối Control Unit
Lệnh Ƒ
kỳ exc | ano exc | cur mode | addr_rea_cur_exc | addr_rea_low_exc
ECALL UM 2 1 0 1 110 111
sw $5,10($8) 3 1 0 1 111 111
SRET 4 0 0 0 111 111
sw $5,10($8) 5 0 0 0 111 111
Lệnh bat hợp pháp 6 1 0 1 100 111
sw $5,10($8) 7 1 0 1 111 111
SRET 8 0 0 0 111 111
1w 15,10($8) 9 0 0 0 111 111
Software interrupt
10 1 0 1 010 111 UM
sw $5,10($8) 11 1 0 111 111
SRET 12 0 0 111 111
ECALL UM 13 1 0 110 111
sw $5,10($8) 14 1 0 111 111
SRET 15 0 0 111 111
Timer interrupt UM 16 1 0 011 100
ECALL SM 17 1 1 101 111
sw $5,10($8) 18 1 0 1H 111
SRET 19 0 0 111 111
add $4, $3, $1 20 0 0 111 111 xor $5, $6, $2 21 0 0 111 111 and $7, $4, $3 2 0 0 111 111
srli $25, $23, 26 23 0 0 111 111
srl $0, $4, $3 24 0 0 111 111
sll $8, $3, $2 25 0 0 111 111
sub $12, $6, $18 26 0 0 111 111
sb $20, 25($10) 27 0 0 111 111
Ib $23, 0($10) 28 0 0 111 111 csrrs $6, status, $4 29 0 0 1H 111 addi $21, $9, 12 30 0 0 111 111
Software interrupt
SM 31 1 0 000 111
csrrsi $14, sie, $14 32 1 0 111 111
SRET 33 0 0 111 111
slli $18, $7, 11 34 0 0 111 111
or $1, $6, $2 36 0 0 111 111
1h $19, 3($16) 37 0 0 111 111
sh $24, 20($14) 38 0 0 111 111 ori $27, $30,2404 39 0 0 lll 111 andi $20, $24,2720 40 0 0 lil 111 Ihu $31, 6($30) 41 0 0 1H 111 Ibu $28, 21($29) 42 0 0 lil 111
beq $5, $1 43 0 0 111 111
bne $5, $1 44 0 0 111 111
jalr $17, $21,68 45 0 0 lãi 111 bge $7, $0 46 0 0 111 111 bit $7, $1 47 0 0 1H 111 auipc $24,1381 48 0 0 1H 111 lui $26, 90 49 0 0 111 111
jal $30, 3 50 0 0 111 111
slt $13, $22, $10 51 0 0 111 111 slti $16, $20, 10 52 0 0 111 111 srai $9, $12, 20 53 0 0 1H 111 csrrw $3, scause, $10 | 54 0 0 1H 111 csrrc $10, sepc, $15 55 0 0 1H 111 csrrwi $11, sip, $3 56 0 0 1H 111 csrrci $29, stvec, $8 57 0 0 11 111
Software interrupt
SM 58 | 1 0 000 001
Timer interrupt SM
csrrsi $14, sie, $14 60 1 0 1 111 111
xori $22, $12,32 84 61 1 0 1 111 111
SRET 62 0 0 1 111 111
Sau khi thực thi các lệnh trong khối Instruction Memory, một số thanh ghi trong khối Register File và Data Memory sẽ thay đổi như sau:
¢ Các thanh ghi thay đổi giá trị trong khối Register File bao gồm: $1, $2, $3,
$4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19,
$20, $21, $22, $23, $24, $26, $25, $27, $28, $30, $31.
¢ Các thanh ghi thay đổi giá tri trong khối Data Memory: $10, $12, $25.
Bảng 4.2: Giá trị các thanh ghi trong khối Register File khi chưa mô phỏng
Địa chỉ thanh ghi Register File Giá trị trong các thanh ghi
0x00000000 — 0x00000004 0 1 8 6
0x00000004 — 0x00000007 64 32 16 512
0x00000008 — 0x0000000b 128 32 1024 256
0x0000000c — 0x0000000f 18 160 56 1600
0x00000010 — 0x000000013 32 16 160 64
0x00000014 — 0x00000017 320 8192 4096 2048
0x00000018 — 0x0000001b 33024 51200 512 18432
0x000000 1c — 0x0000001f 2112 272 11776 67936
Kết quả giá trị của các thanh ghi trong khối Register File sau khi thực thi các lệnh trong khối Instruction Memory được mô tả trong Bảng 4.3 và được so sánh với giá trị các thanh ghi trong khối Register File trong Bảng 4.2 khi chưa mô phỏng.
Bảng 4.3: Kết quả mô phỏng giá trị các thanh ghi trong khối Register File
Địa chi thanh ghi Register File Giá trị trong các thanh ghi
0x00000000 — 0x00000004 0 32 0 -2147483647
0x00000004 — 0x00000007 7 24 32 6
0x00000008 — 0x0000000b 6 -1 76 34
0x0000000c — 0x0000000f -144 160 294 32
0x00000010 — 0x000000013 32 3200 12288 47
0x00000014 — 0x00000017 32768 44 -176 5
0x00000018 — 0x0000001b 5656720 0 368640 -156
0x0000001c — 0x0000001f 3 33 156 20
Bang 4.4: Giá tri các thanh ghi trong khối Data Memory khi chưa mô phỏng
Địa chỉ thanh ghi Data Memory Giá trị trong các thanh ghi
0x00000000 — 0x00000004 tha 267 12 47
0x00000004 — 0x00000007 3 20
0x00000008 — 0x0000000b
0x0000000c — 0x0000000f
0x00000010 — 0x000000013
0x00000014 — 0x00000017
0x00000018 — 0x0000001b
0x0000001c — 0x000000 If
Kết quả giá trị của các thanh ghi trong khối Data Memory sau khi thực thi các lệnh trong khối Instruction Memory được mô tả trong Bảng 4.5 và được so sánh với giá trị các thanh ghi trong khối Data Memory trong Bảng 4.4 khi chưa mô phỏng.
Bảng 4.5: Kết quả mô phỏng giá trị các thanh ghi trong khối Data Memory
Địa chỉ thanh ghi Data Memory Giá trị trong các thanh ghi
0x00000000 — 0x00000004 5 267 12 47
0x00000004 — 0x00000007 6 3 20
0x00000008 — 0x0000000b 32
0x0000000c — 0x0000000f
0x00000010 — 0x000000013
0x00000014 — 0x00000017 -32512
0x00000018 — 0x0000001b 64
0x0000001c — 0x0000001f
Dựa vào Bảng 4.1, với test case hiện tại, kết quả mô phỏng cho thay bộ xử lý có thể xử lý được các ngoại lệ trong các trường hợp sau:
Lệnh bắt hợp pháp (từ chu kỳ 6 đến chu kỳ 8).
Lệnh gọi môi trường ở UM (từ chu kỳ 2 đến chu kỳ 4 và từ chu kỳ 13 đến
chu kỳ 15).
Software interrupt ở UM (từ chu kỳ 10 đến chu kỳ 12).
Timer interrupt ở UM (từ chu kỳ 16 đến chu kỳ 17).
Lệnh gọi môi trường ở SM (từ chu kỳ 17 đến chu kỳ 19).
Software interrupt ở SM (từ chu kỳ 31 đến chu kỳ 33).
Timer interrupt ở SM (từ chu kỳ 58 đến chu kỳ 62).
Hai ngoại lệ xảy ra trong một chu kỳ(từ chu kỳ 58 đến chu kỳ 62).
Xảy ra ngoại lệ khi đang xử lý một ngoại lệ (từ chu kỳ 17 đến chu kỳ 19).
4.2. Giai đoạn post-synthesis
Sau khi kiểm tra hoạt động và chức năng của bộ xử lý trong giai đoạn pre- synthesis, nhóm thực hiện dé tài đã tiến hành kiểm tra thời gian và tan số tối đa của
bộ xử lý trong giai đoạn post-synthesis với kết quả mô phỏng có chức năng tương tự
như giai đoạn pre-synthesis.
Quá trình kiểm tra thời gian hoạt động của bộ xử lý được thể hiện thông qua hai
giá trị setup slack và hold slack. Trong đó, hai giá trị này có chức năng đánh giá khả
năng truyền và bắt dữ liệu giữa các khối tuần tự trong bộ xử lý và được định nghĩa
như sau:
¢ Setup slack là thời gian chênh lệch giữa thời gian dữ liệu truyền từ thanh ghi
truyền dữ liệu đến thanh ghi bắt dữ liệu trong thực tế (T_data_arrive) và
khoảng thời gian bắt buộc dữ liệu phải được truyền từ thanh ghi truyền dữ liệu đến thanh ghi bắt dữ liệu (T_ data_require_setup)[6].
¢ Hold slack là thời gian chênh lệch giữa thời gian dữ liệu truyền từ thanh ghi
truyền dữ liệu đến thanh ghi bat dữ liệu trong thực tế (T_data_arrive) và khoảng thời gian bắt buộc trước khi dữ liệu được truyền từ thanh ghi truyền
dữ liệu đến thanh ghi bắt dữ liệu (T_data_require_hold) [6].
Kết quả mô phỏng cho thấy các dữ liệu trong khối RF và và khối Data Memory
có kết quả như Bảng 4.3 và Bảng 4.5. Bên cạnh đó, kết quả mô phỏng quá trình xử
lý ngoại lệ cho kết quả tương tự như giai đoạn pre-synthesis và đã sửa được trường
hợp bộ xử lý có hai ngoại lệ xảy ra trong cùng một chu kỳ.
Nguyên nhân bộ xử lý thực thi sai trường hợp hai ngoại lệ xảy ra trong cùng
một chu kỳ là vì quá trình ghi và đọc dữ liệu của khối Stack đều được thực thi tại cạnh xuống xung clk cùng với các tín hiệu điều khiển stack_en, pop_sig và push_sig nên khi dữ liệu trong khối Stack được đọc ra để xử lý các ngoại lệ có độ ưu tiên thấp hơn, khối System Register File không thé bắt được dit liệu đó do cũng thực hiện quá trình ghi dữ liệu tại cạnh xuống xung clk. Chính vì thế, nhóm thực hiện dé tài đã khắc
phục lỗi này bằng cách đọc dữ liệu của khối Stack nhưng chỉ sử dụng các tín hiệu điều khiển stack_en, pop_sig và push_sig, có trạng thái hoạt động như Bảng 3.30.
Thời gian và tần số tối đa của bộ xử lý có kết quả theo Bảng 4.6.
Bảng 4.6: Kết quả mô phỏng thời gian và tần số tối đa của bộ xử lý
Giá trị kiểm tra Kết quả Tan số tối đa 12.94 MHz
Setup Slack 0.001 (met)
Hold Slack 0.391 (met)
Tần số tối đa của bộ xử lý ở Bảng 4.6 được tính dựa theo công thức Fmax = 1/Tmin. Trong đó, Tmin là chu kỳ - là khoảng thời gian nhỏ nhất dé bộ xử lý có thé hoàn thành quá trình thực thi một lệnh hoặc một yêu cầu từ hai chế độ. Giá trị Tmin được xác định dựa trên việc lựa chọn thời gian phù hợp để bộ xử lý có thể thực thi
đúng toàn bộ chức năng thông qua hai giá trị xung clock thật của board DE2 là
CLOCK_50 và CLOCK_27. Cách xác định tần sé tối đa gồm 3 bước:
e Đầu tiên, nhóm thực hiện đề tài sẽ sử dung CLOCK_50 với tần số 50 MHz
và tính được chu kỳ T = 20ns. Sau đó, nhóm thực hiện dé tài sẽ sử dụng giá trị T này dé tiến hành mô phỏng. Nếu toàn bộ chức năng của bộ xử lý đều thực thi đúng như giai đoạn pre-synthesis, nhóm thực hiện đề tài sẽ tiến hành giảm giá trị Tmin xuống đề xác định tần số tối đa là bao nhiêu. Trong quá trình giảm giá trị T, nếu không có giá trị T nào có thể thực thi đúng toàn bộ chức năng của bộ xử lý thì tần số tối đa sẽ là 50 MHz với Tmin = 20ns.
©_ Tiếp theo, nếu giá trị CLOCK_50 không thực thi đúng toàn bộ chức năng
của bộ xử lý thì nhóm thực hiện đề tài sẽ sử dụng giá trị CLOCK_27 với tan
số là 27 MHz và tính được giá trị T = 37.04ns. Tiếp theo, nhóm thực hiện đề tài cũng tiến hành mô phỏng và giảm giá trị T tương tự như ở bước kiểm tra tần số tối đa với giá trị CLOCK_50. Trong quá trình giảm giá trị T, nếu
không có giá trị T nào có thể thực thi đúng toàn bộ chức năng của bộ xử lý thi tần số tối đa sẽ là 27 MHz với Tmin = 37.04 ns.
© Cuối cùng, nếu giá trị CLOCK_27 không thực thi đúng toàn bộ chức năng
của bộ xử lý thì nhóm thực hiện dé tài sẽ tăng giá trị T = 37.04 ns cho đến khi bộ xử lý có thể thực thi đúng các chức năng yêu cầu. Sau khi tăng giá trị
T, nhóm thực hiện đề tài đã xác định được giá trị Tmin = 77.28 ns và tính được tan số tối đa của bộ xử lý là Fmax = 1 / 77.28 ns = 12.94 MHz.
Trong thực tế, độ trễ không những xuất hiện trên các dây mà còn trên các khối thành phần trong phần cứng như Hình 4.1. Điều đó gây ảnh hưởng đến việc truyền
và bắt dữ liệu của toàn bộ hệ thống.
Register | Register 2
Tomb
Hình 4.1: Ví dụ về độ trễ của các thành phần vật lý trong thiết kế Dựa vào Hình 4.1, setup slack va hold slack của hai thanh ghi truyền dữ liệu Register | và thanh ghi bắt dữ liệu Register 2 được tính dựa vào công thức:
e T_setup_slack = T_data_require_setup — T_data_arrive = (Tek — ck B + Tperiod
— Tsetup_R2) - (Tek — ekA + Tak a> Qi + Twi + Tcomp + Tw2) [6].
e T_hold_slack= T_data_arrive - T_data_require_hold = (Tex aka + Taka
Q1 + Twit Tcomb + Tw2) - (Telk + tk A+ Thoa R1) [6].
Trong đó, các giá trị toán hang của hai công thức được mô tả như Bang 4.7.
Bảng 4.7: Mô tả giá trị toán hạng công thức tính setup slack và hold slack
Toán hạng Mô tả
T_setup_slack Setup slack
T_hold_slack Hold slack
Tek + clk B Thời gian từ clk tới chan clk B của thanh
ghi Register 2
TTperod Chu kỳ hoạt động của bộ xử lý
Tsetup_R1, Tsetup_R2 Thời gian cần thiết trước khi bat đữ liệu
lần lượt của thanh ghi Register 1 và Register 2 (giá trị có sẵn trong thư viện)
Thold_R1, Thold_R2 Thời gian giữ gia trị trước khi truyền dữ
liệu lần lượt của thanh ghi Register 1 và Register 2 (giá trị có sẵn trong thư viện)
Tetk clk A Thời gian từ clk tới chân clk A của thanh
ghi Register 1
Totk A QI Thời gian dữ liệu truyền từ input D1 đến
output QI của thanh ghi Register |
Tw Độ trễ day tir output Q1 của thanh ghi
Register 1 đến input của khối
Combination logic
'Tcomb Thời gian thực thi của khối Combination
logic
Two Độ trễ dây từ output của khối
Combination logic đến input D2 của
thanh ghi Register 2
Dựa vào hai công thức tinh setup slack và hold slack ta có thé đánh giá khả năng truyền và bắt dữ liệu giữa các thanh ghi thành phần trong bộ xử lý như sau:
¢ Setup slack < 0, thanh ghi bắt dữ liệu không bắt được dữ liệu cần thiết do
T_data_arrive > T_ data_require_ setup và có kết quả đánh giá là violated.
¢ Hold slack < 0, thanh ghi truyền dé liệu truyền sai dữ liệu cho thanh ghi
Register 2 do T_data_arrive < T_data_require_hold và có kết quả đánh giá
là violated.
¢ Setup slack > 0 hoặc Setup slack = 0, thanh ghi bắt dữ liệu bắt được dữ liệu
cần thiết do T_data_arrive < T_data_require_setup hoặc T_data_arrive = T_data_require_setup và có kết quả trong và có kết qua đánh giá là met.
¢ Hold slack >0 hoặc Hold slack = 0, thanh ghi truyền dữ liệu truyền đúng dữ
liệu cần thiết cho thanh ghi do T_data_arrive > T_data_require_hold hoặc
T_data_arrive = T_data_require_hold và có két quả đánh gia là met.
Ở Hình 4.1, đường truyền dữ liệu từ output Q1 của thanh ghi Register 1 đến input D2 của thanh ghi Register 2 gọi là đường dữ liệu. Trong thực tế, bộ xử lý có rất nhiều đường dữ liệu giữa hai thanh ghi như vậy và số lượng đường dữ liệu có thể lên đến hàng trăm hoặc hàng ngàn đường tùy theo thiết kế. Chính vì thế, nhóm thực hiện
đề tài không thé tính toán thủ công setup slack và hold slack cho từng đường dữ liệu
để đánh giá kết quả.
Để có thể xử lý được van đề này, nhóm thực hiện dé tài sẽ sử dụng tool Quartus. Thông thường, tool Quartus sẽ tính toán và đưa ra kết quả tính toán setup slack và hold slack của đường dữ liệu có kết quả tệ nhất trong tất cả các đường dữ liệu của thiết kế và được thể hiện trong slow model như Hình 4.2.
Table of Contents O88 Slow Model Setup Summary
ES Flow Summary a ‘Clock Slack End Point TNS
E8 Flow Settings 1 d -41.009_ -99575,567
EES Flow Non-Default Global Settings
EES Flow Elapsed Time
E8 Flow OS Summary
B) Flow Log
(J Analysis & Synthesis
ÔI Fitter
(0 Assembler
= (& TimeQuest Timing Analyzer
Eệ summary 5B Parallel Compilation
#8 Clocks
` & Slow Model
ES Fmax Summary E8 Setup Summary
E8 Hold Summary
=] Recovery Summary
=
Hình 4.2: Kết quả tính toán setup slack và hold slack trên tool Quartus Dựa vào Hình 4.2, nếu setup slack, hold slack đều lớn hơn hoặc bằng 0 thì tất
cả đường dữ liệu trong bộ xử lý đều có kết quả là met. Ngược lại, bộ xử lý sẽ có một
số đường dữ liệu hoặc toàn bộ đường dữ liệu có kết quả là violated.
Khi có kết quả là violated, nhóm thực hiện đề tài đã sử dụng phương pháp tăng hoặc giảm tần số tối đa của bộ xử lý như đã giải thích ở trên đề bộ xử lý có thể truyền
và bắt chính xác dữ liệu.
Sau khi đạt được tần số tối đa của bộ xử lý là 12.94 MHz, các giá trị setup slack
và hold slack đều sẽ có giá trị lần lượt là 0.001 và 0.391 và lớn hơn 0 (kết quả được thể hiện trong Bảng 4.6).
4.3. Giai đoạn hiện thực trên FPGA
4.3.1. Kiểm tra test case ở giai đoạn pre-synthesis và post synthesis
Hiện tại, kết quả hiện thực hóa trên DE2 kit thực thi được:
e 37 lệnh thuộc kiến trúc RV32I
e Lệnh SRET.
e Xt lý ngoại lệ lệnh gọi môi trường ở SM và UM.
¢ _ Xử lý ngoại lệ lệnh bat hợp pháp.
e Xử lý ngoại lệ software interrupt 6 SM và UM.
e Xtr lý ngoại lệ timer interrupt ở SM và UM.
e Xw lý ngoại lệ khi đang xử lý một ngoại lệ khác.
e Xt lý thành công ngoại lệ khi có hai ngoại lệ xảy ra trong cùng một chu kỳ.
Xung clock kiểm tra trên kit DE2 hiện tại chỉ sử dụng nút nhắn, không sử dụng
xung clock thực (CLOCK27 và CLOCKS0).
Xuất dữ liệu trong khối RF và Data Memory ra màn hinh máy tính sử dụng
UART.
Tài nguyên sử dụng trên kit DE2 khi hiện thực:
ôỔ Số lượng logic element: 8030 / 33216 (24%)
o Số lượng thanh ghi: 2133.
o_ Số lượng mạch tô hợp: 5897
ôỔ Số lượng pin sử dụng: 165 /475 (35%).
Tài nguyên sử dụng trên kit DE2 dé mô phỏng quá trình thực thi của bộ xử lý được nhóm thực hiện đề tài là hiệu quả do tài nguyên sử dụng có thể mô phỏng được các kết quả cần kiểm tra và đáp ứng được toàn bộ các yêu cầu từ mục tiêu đã đặt ra ban đầu.
4.3.2. Bổ sung test case kiểm tra FPGA
Trong kiến trúc tập lệnh RISC-V, thanh ghi r0 của khối RF lun có giá trị mặc định là 0 [5]. Do đó, nhóm thực hiện dé tai đã bổ sung một đoạn chương trình dé kiểm tra giá trị thanh ghi r0 có thay đổi giá trị hay không bằng cách thực thi các lệnh có
chương trình hợp ngữ như Hình 4.3.
lui, x1, ỉ8x4ỉfe6 addi, x1, x1, Oxeda lui, x2, @x28cb7
addi, x2, x2, 0x557 add, x3, x1, x2
lui, x4, @x69c9d addi, x4, x4, Ox3al bne, x3, x4, CASE1 beq, x@, x@, CASE2 CASE1:
addi, x31, x@, 999 jal, x@, CASE1
CASE2:
addi x31,x0,666 jal x8,CASE2
Hình 4.3: Chương trình hợp ngữ kiểm tra thanh ghi r0 của khối RF
Từ chương trình hợp ngữ, quá trình thực thi các lệnh của bộ xử lý được mô tả như Bảng 4.8.
Bang 4.8: Quá trình thực thi các lệnh kiểm tra thanh ghi r0
PC Lệnh Số tức Quá trình tính toán Kết quả ghi
thời vào khối RE
0 | lui xI,0x40fe6 0x40fe6000 r1 =0x40fe6000
4 | addi x1, x1, Oxe4a | 0xfffffe4a r1 = 0x40fe6000 + 0xffffe4a = tl =0x40fe6e4a
0x40fe6e4a
8 | lui x2, Ox28cb7 0x28cb7000 12 = 0x28cb7000
12 | addi x2, x2, 0x557 | 0x00000557 | r2 = 0x28cb7000 + 0x00000557 | 12 = 0x28cb7557
= 0x28cb7557
16 | add x3, x1, x2 13 = 0x40fe6e4a + 0x28cb7557 = | r3 = 0x69c9d3al
0x69c9d3al
20 | lui x4, 0x69c9d 0x69c9d000 r4 = 0x69c9d000
24 | addi x4, x4, 0x3al | 0x000003a1 | r4 = 0x69c9d000 + 0x000003a1 r4 = 0x69c9d3al
= 0x69c9d3al
28 | bne x3, x4,2 13 =r4 = 0x69c9d3al
32 | beq x0, x0, 3 r0 = r0 =0x00000000
44 | addi x31, x0, 666 | 0x0000029a | r31 = 0x00000000 + 0x0000029a | r31 =
= 0x0000029a 0x0000029a
48 | Jal x0, -1 0xfffffffe r0 =PC +4= 48 +4 = 52 r0 = 0x00000000
Sau khi thực thi các lệnh như Bảng 4.8, nhóm thực hiện để tài sẽ sử dụng UART
để kiểm tra các thanh ghi trong khối RF. Các giá trị trong các thanh ghi $1, $2, $3,
$4 và $31 thay đổi so với ban đầu và được thể hiện trong Bảng 4.9.
Bang 4.9: Kết quả mô phỏng khối RF khi thực thi các lệnh kiểm tra thanh ghi r0
Địa chỉ thanh ghi Register Giá trị trong các thanh ghi
File
0x00000000 — 0x00000004 0 1090412106 | 684422487 | 1774834593 0x00000004 — 0x00000007 1774834593 32 16 512
0x00000008 — 0x0000000b 128 32 1024 256
0x0000000c — 0x0000000f 18 160 56 1600
0x00000010 — 0x000000013 32 16 160 64
0x00000014 — 0x00000017 320 §192 4096 2048
0x00000018 — 0x0000001b 33024 51200 512 18432
0x0000001c — 0x0000001f 2112 272 11776 666
Từ quá trình thực thi va ết quả mô phỏng ở Bảng 4.8 và Bảng 4.9, bộ xử lý của nhóm thực thi đề tài giải quyết được vấn đề thanh ghi r0 = 0 và thực thi đúng các
lệnh trên FPGA.
4.4. So sánh kết quả thực thi ba giai đoạn mô phỏng
Kết quả thực thi của bộ xử lý kiến trúc tập lệnh RISC-V có hỗ trợ chế độ giám
sát trong ba gia đoạn pre-synthesis, post-synthesis và trên FPGA được so sánh dựa
trên những mục tiêu cần đạt được ở đề tài và được mô tả trong Bảng 4.10.
Bảng 4.10: So sánh kết quả ba gian đoạn mô phỏng Mục tiêu Pre-synthesis Post-synthesis FPGA
Số lệnh 37 lệnh thuộc kiến | 37 lệnh thuộc kiến | 37 lệnh thuộc kiến
thuc thi | trúc tập lệnh RV32I | trúc tập lệnh RV32I | trúc tập lệnh RV321
7 lệnh hệ thống 7 lệnh hệ thống 7 lệnh hệ thống
Xử lý 9 ngoại lệ 9 ngoại lệ 9 ngoại lệ
ngoại lệ
Dựa vào mục tiêu thứ nhất và thứ hai ở phần 1.2.2, cả ba giai đoạn kiểm tra quá trình hoạt động của bộ xử lý đều thực thi đúng chức năng của 37 lệnh kiến trúc tập lệnh RV32I, 7 lệnh hệ thống và xử lý được các ngoại lệ ở cả hai chế độ SM và UM.
4.5. So sánh kết quả với các nghiên cứu đã thực hiện
Nhóm thực hiện đề tài sẽ dựa vào kết quả của hai đề tài nghiên cứu được giới thiệu trong phần tổng quan đề tài để so sánh kết quả.
Ở đề tài thứ nhất, Pinto Sandro và Garlati Cecare đã công bé bài báo nghiên cứu
về User Mode Interrupt: A Must for Securing Embedded Systems vào năm 2019. Kết quả so sánh của nhóm thực hiện dé tài và đề tài thứ hai được mô tả cụ thé trong Bang
4.11.
Bảng 4.11: Kết quả so sánh với dé tài nghiên cứu User Mode Interrupt: A Must for
Securing Embedded Systems
Kết quả đánh giá
Bộ xử lý kiến trúc tập lệnh RISC-V hỗ trợ chế
Tiêu chí đánh giá User Mode Interrupt: A
Must for Securing Embedded Systems độ giám sát
Kiến trúc tập lệnh RISC-V RISC-V
Bộ xử lý Không đề cập 32 bit đơn chu kỳ