MÔ PHONG VÀ ĐÁNH GIA KET QUA

Một phần của tài liệu Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế bộ xử lý kiến trúc RISC-V hỗ trợ chế độ giám sát (Trang 90 - 108)

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ỳ

Một phần của tài liệu Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế bộ xử lý kiến trúc RISC-V hỗ trợ chế độ giám sát (Trang 90 - 108)

Tải bản đầy đủ (PDF)

(110 trang)