MO PHONG VÀ ĐÁNH GIÁ 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ế và hiện thực thuật toán mã hóa trên RISC-V (Trang 48 - 58)

4.1. Mô phỏng

Nhóm sử dụng ứng dụng Venus để tạo ra các code assembly của kiến trúc

RV32I, sau đó Venus sẽ tạo ra các mã lệnh ứng với code assembly đã tạo. Nhóm

tiến hành mô phỏng trên công cụ ModelSim và so sánh kết quả mô phỏng với kết

quả chạy assembly trên Venus.

Đối với thuật toán SHA256 nhóm sẽ sánh kết quả với thiết kế phần mềm mà nhóm đã thiết kế.

4.1.1. M6 phỏng các lệnh thuộc kiến trúc RV32I

- Test case 1:

1 add sô, x0, sp 13 bne tô, al, start

2 add sp, x9, x8 1u beq tô, al, end

3 addi sp, sp, 256 15 start2: add t1, x9, xÐ

4 lw ad, 4(sp) 16 add t1, xô, al

5 1w al, 8(sp) 17 start3: add ra, ra, t1

6 lw ra, (sp) 18 addi tô, to, 1

7 add tô, x0, x0 19 bne tô, aô, start3

8 slt t1, al, a0 20 end:

9 addi t2, x9, 1 21 sw ra, (sp)

18 bne t1, t2, start2 22 add sp, x0, sO

11 start: add ra, ra, a0 23 loop: jal zero, loop

12 addi to, to, 1

Hình 4.1: Các lệnh assembly trong Test case 1 (tính tích hai số) Test case 1 là assembly của bài toán tính tích của hai sé. Tiến hành nạp các

lệnh assembly trong Test case | như trong Hình 4.1 vào trong Instruction Memory

để tiến hành mô phỏng.

39

Se bho Dire

ee oF Dewi

Hinh 4.2: Waveform Output cua Test case 1 Sau khi nạp lệnh assembly ở Hình 4.1, tool ModelSim sẽ cho ra waveform như

trong Hình 4.2. Kết quả thu được khi chạy chương trình được mô tả như ở trong

Hình 4.3.

Hình 4.3: Kết quả mô phỏng Test case 1 trên Venus và trên ModelSim Với Test case 1 kết quả mô phỏng trên ModelSim giống với kết quả trên

Venus như trong Hình 4.3 bên trên.

40

- Test case 2:

1 add sô, x0, sp 15 add aQ, xô, ra

2 add sp, x0, x0 16 add al, x9, xO

3 addi sp, sp, 256 17 add al, x0, t1

4 lw a2, (sp) 18 add tô, x9, x6

5 lw ra, sp) 19 add ra, x0, x®

6 add tô, xô, xO 20 start2: add ra, ra, a0

7 addi t1, x9, 1 21 addi to, tô, 1

8 addi ra, xÐ, 1 22 bne tô, al, start2

9 beq tô, a2, end 23 bne t1, a2, startl

18 addi ra, xÐ, 1 2u end:

11 beq t1, a2, end 25 sw ra, 0(sp)

12 start1: 26 add sp, s9, xÐ

13 addi t1, t1, 1 27 loop: jal zero, loop 1u add a0, x0, xÐ

Hình 4.4: Các lệnh assembly trong Test case 2 (tính giai thừa)

Test case 2 là assembly của bài toán tính giai thừa. Tiến hành nap các lệnh

assembly trong Test case 2 như trong Hình 4.4 vào trong Instruction Memory để

tiến hành mô phỏng.

| mới SS —=- ._ SS _ eee

So foe bia.s | srocomss 2

EÈT TH] : Ễ +

> koe isu on | sromto060

Š hore bia a

Ty fave levis — le

> Eeebienven socom

> fee bk Seonm

TS ND.

Šeep Seeome

Šee Ea

San Em

Š=ese

BỀT x73 Ea

Hình 4.5: Waveform Output của Test case 2 Sau khi nạp lệnh assembly ở Hình 4.4, tool ModelSim sẽ cho ra waveform như

trong Hình 4.5. Kết quả thu được khi chạy chương trình được mô tả như ở trong

Hình 4.6.

4I

00000000 [00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 90000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 —

00000014 |D0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000028 |I0000000 00000000 00000000 00000000 09000000, 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000908e 00000000 00000000 00000000 00000000 00000000 00000000 00000000 90000000 00000000 0000000) 00000000 00000000 00000000 09000000 00000000 00400000 00000000 0000000

00000080 |I0000000 00000090 00000000 90000000 00000000 90000090 00000000 00000000 00000000 00000002 00000000 00000000 00000000 00000000 00000000 09000000 00000000 00000000 00000000 00000000

00009064 |I0000000 00000090 00000000 60006000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000900 00000000 00000000 60000000 09000000 00000000 00000000 00000000 00000000

00000018 |D000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

Hình 4.6: Kết quả mô phỏng Test case 2 trên Venus và trên ModelSim Với Test case 2 kết quả mô phỏng trên ModelSim giống với kết quả trên

Venus như trong Hình 4.6 bên trên.

- Test case 3:

1 add sô, x9, sp 19 add au, x0, al

2 add sp, x9, x8 20 add tô, x®, x0

3 addi sp, sp, 256 21 add ra, x0, xô

4 lw a9, 4(sp) 22 start2: add ra,ra, a3

5 1w al, 8(sp) 23 addi tô, to, 1

6 lw a2, 12(sp) 2u bne tô, ad, start2

7 add ra, xô, xô 25 bne t1, a2, startl

8 add tô, xô, x0 26 add al, xô, ra

9 addi t1, x9, 1 27 add ra, xô, x0

10 add ra, xô, a0 28 add tô, x9, x®

11 beq t1, a2,end 29 start: add ra, ra, al

12 sub a2, a2, t1 30 addi to, to, 1

13 add ra, xO, al 31 bne tô, aô, start

14 start1: 32 end:

15 addi t1, t1, 1 33 sw ra, 6(sp)

16 add a3, xô, xO 34 add sp, s®, x0

17 add a3, xô, ra 35 loop: jal zero, loop

18 add ad, x0, x0

Hình 4.7: Các lệnh assembly trong Test case 3 (Tinh cap số nhân) Tiến hành nap các lệnh assembly trong Test case 3 như trong Hình 4.4 vào trong Instruction Memory đề tiễn hành mô phỏng.

42

| Hị ID) Dis J >mm

Hinh 4.8: Waveform Output cua Test case 3

Sau khi nạp lệnh assembly ở Hình 4.7, tool ModelSim sẽ cho ra kết quả mô phỏng waveform như trong Hình 4.8. Kết quả thu được khi chạy chương trình được

mô tả như ở trong Hình 4.6.

a0 7 a1 2 (x10) (x11)

a2 ra 112 (x12) (x1)

5: dix

0 00000000 00000000 00000000 00000000 00000090 09000000 0000000 +

00000000 00000000 00000000 00000000 00000000 00000000 0

20 0000000 00000600 00000000 00000000 00000000 09090090 0901

0000000 00000000 00900090 00000090 000 000 000

20000 00000000 00000000 00000000 00000000 00: 00000 00000000

10000000 00000000 00000000 00000000 00000000 00000000 00000000 0000000.

0000000 00000000 00000000 00000000 00000000 0000000 90000000 09000000

10000078 |D000000 00000000 00000000 00000000 00009000 00000000 0000000

Hình 4.9: Kết quả mô phỏng Test case 3 Với Test case 3 kết quả mô phỏng trên ModelSim giống với kết quả trên Venus như trong Hình 4.6 bên trên. Trong đó, ra = a0 * a1@?-Y, với a0 là số

hang đầu tiên, al là công bội, a2 là số hang của cấp số nhân.

4.1.2. Mô phỏng thuật toán SHA256

Khởi tạo các giá trị cho việc tính toán thuật toán SHA256 lưu vào Data Memory của bộ vi xử lý.

rv32i.data_memory.mem[0] = 32'h6a09e667;

rv32i.data_memory.mem[1] = 32'hbb67ae85;

rv32i.data_memory.mem[2] 32'h3c6ef372;

rv32i.data_memory.mem[3] = 32"ha54ff53a;

xrv32i.data_memory.mem[4] = 32'h510e527f;

rv32i.data_memory.mem[5] = 32"h9b05688c;

rv32i.data_memory.mem[6] 32'h1f83d9ab;

rv32i.data_memory.mem[7] = 32'"h5be0cd19;

Hình 4.10: Giá trị băm ban đầu (Ho,..., H;)

Các giá trị băn ban đầu là Họ,..., H; mỗi giá trị có độ dài 32 bit được biểu diễn dưới dạng hexa lưu vào trong Data Memory chuẩn bị cho quá trình thực hiện thuật

toán SHA256 như trong Hình 4.9.

rv32i.data_memory.mem[10] = 32'h428a2f98; rv32i.data_memory.mem[65] = 32'h682e6ff3; rv32i.data_memory.mem[11] = 32'h71374491; rv32i.data_memory.mem[66] = 32'h748f82ee; rv32i.data_memory.mem[{12} = 32'hb5c0fbcf; rv32i.data_memory.mem[67] 32'h78a5636f; zv321.data_memory.mem(13]

zv321.data_memory.mem[14]

rv32i.data_memory.mem[15}

+v321.data_memory .mem[ 16}

+v321.data_memory.mem( 17]

rv32i.data_memory.mem[18]

rv32i.data_memory.mem[19]

rv32i.data_memory.mem[20] = 32'h24318Sbe;

rv32i.data_memory.mem[21] = 32'h550c7dc3;

rv32i.data memory.mem[22] = 32"h72be5d74;

"he9bS5dbaS; rv32i.data_memory.mem[68]

32'h3956c25b; rv32i.data_memory.mem[69]

2 'h59f111f1; xv32i.data_memory .mem[70]

32'h923f02a4; xv321.data_memozy.mem[71]

32*hablcSed5; rv32i.data_memory.mem(72]

32'hd807aa98; zv321.data_memory.mem[73]

32'h12835b01; 7

32'h84C87814; 32"h8cc7020 32'h90beff£,

32 "ha4506ceb; 32'hbef9a3f7; 32'hc67178£2;

Hình 4.11: các giá trị hằng số (Ko,..., Kes)

64 giá trị hằng số Ko,..., Kes mỗi giá trị có độ dai 32 bit được biểu diễn dưới

dạng hexa và lưu vào trong Data Memory phục vụ cho quá trình thực thi thuật toán SHA256

Nhóm tiến hành viết script bằng ngôn ngữ lập trình Perl dé tạo ra các thông điệp input được chia thành các khối và lưu vào dmem. Ví dụ thông điệp “hello world” sẽ được đổi ra binary đệm và chia thành 16 khối (Mo,...,Mis) mỗi khối 32

bit như Hình 4.11.

“hello world"

WO = 68 65 6c 6C

W1 = 6f 20 77 6f W3 = 72 6c 64 80 W4 = 0@ 99 99 20 W5 = 09 99 00 96 W6 = 89 99 00 20 W7 = 99 99 90 96 W8 = 09 90 00 00

WO = 09 99 09 20 W1ô = 89 99 09 96 W11 = 89 99 90 99 W12 = 99 99 90 90 W13 = 99 99 00 09 W14 = 09 99 09 96 W15 = 89 99 00 58

Hình 4.12: Input được chia thành các khối

Vậy theo như Hình 4.11 thông điệp “hello world” được lưu vào Data Memory như Hình 4.12.

Hình 4.13: Thông điệp được lưu vào Data Memory

Script sẽ có nhiệm vụ chuyền đổi thông điệp, đệm thông điệp, và chia thông điệp thành các khối để lưu vào dmem thực hiện cho quá trình tính toán thuật toán SHA256. Kết quả tạo ra bằng script với thông điệp input “hello world” như mô ta

trong Hình 4.13.

Nhóm tiến hành viết assembly cho thuật toán SHA256, assembly sẽ được chuyền đổi thành mã máy đề đưa vào bộ nhớ lệnh IMEM của hệ thống:

45

@ 0 xì NA Ơ EU Ba

WUWWUWUWWWYNNYNNVYNYNVE RPE PPP ee eeIAHEBNFSOHDIAHEYVNFPSOHRIATDEWNFOS

message_scheduling_init: 38 addi a®, x0, 464 39 addi al, xô, 456 40 addi a2, xô, 436 H1 addi a3, x9, 404 42 addi a4, x@, 400 43 jal x1, message_schedule a4 addi sô, x8, 17 us addi s1, x0, 64 ue message_Loop : uy addi a9, a0, 4 ae addi al, al, 4 nọ addi a2, a2, 4 so addi a3, a3, 4 "

addi ad, ad, 4 52 jal x1, message_schedule sẽ addi sÐ, s0, 1 sử beq sÐ, s1, message_schedule_finish ;;

j message_loop 56

message_schedule: eo

addi t0, x6, 9 sẽ

lw t1, 6(a1) 59 sha256sig1 t1, t1 &

add to, to, t1 đã

Iw t1, @(a2) 62

add tô, to, t1 sẽ

lw t1, 0(a3) 64 sha256sig9 t1, t1

add tô, to, t1

lw t1, 6(a4) = add t6, to, t1 i:

su t8, 9(a8) "

ret 69

message_schedule_finish: =

addi te, x9, © 7 addi t1, x9, 0 T¿

addi a9, x6, 9 7

74

Hình 4.15: Assembly mô

addi al, x9, addi a2, x9, addi a3, x6 addi a4, x6 initial_hash:

addi t6, x9, 0 Ww

lw lw lw lw lw lw lw addi addi addi addi hash.

a8, al a2 a3 ad a5 a6 a7

Ũ

Ũ

sO s1 s2 s3

loop:

9(t6) 4(t6) 8(t6) 12(t6) 16(t6) 20(t6) 24(t6) 28(t6)

xe xd xd x8

, xO,

r8,

1 x0, gene

lw s4, 6(s2)

lw s5, 0(s3) jal x1, calculate_ch jal x1, calculate_maj sha256sun6 t2, a8

sha256suml t3, a4 add t4, a7, t3 add td,

add t4, add t4, add t5,

ta ta ta t1

tO sa s5 t2

mv a7, a6

mv a6, aS

mv a5, a4 add a4, a3, tử

mv a3, a2

mv a2, al

m al, a8

75 T6

T8 79 86 al 82 83 8u 85 86 87 88 89 98 91 92 93 sử 95 96 97 98 99 199 191 192 193 194 195 196 107 198 199 119 111 112

phỏng thuật toán SHA256

add a9, tủ, t5 addi s2, s2, 4 addi s3, s3, d addi s8, sÐ, 1 beq sO, s1, hash_finish

j hash_Loop calculate_ch:

and t9, ad, a5 not t6, ad

and t6, t6, a6 xor t0, t9, t6 ret

calculate_maj:

and t1, a9, al and t6, a9, a2 xor t1, tl, t6 and t6, al, a2 xor t1, tl, t6 ret

hash_finish:

lw t6, (x9) #a add a9, a9, t6

lw t6, 4(x8) #b add al, al, t6

lw t6, 8(x8) #c add a2, a2, t6

lw t6, 12(x8) #d add a3, a3, t6

‘lw t6, 16(x8) #e add ad, a4, t6

lw t6, 20(x0) #f add a5, a5, t6

lw t6, 24(x8) #g add a6, a6, t6

lw t6, 28(x8) #h add a7, a7, t6 end_loop:

jal x9, end_loop

Tiến hành map các lệnh Assembly trong hình 4.14 vào trong khối Instruction Memory để tiến hành mô phỏng thuật toán SHA256. Thực hiện chạy thuật toán SHA256 trên hệ thống và so sánh kết quả với kết quả SHA256 được hiện thực trên phần mềm mà nhóm đã thiết kế.

46

Hình 4.16: Output thuật toán SHA256 mô phỏng trên ModelSim

Kết quả mô phỏng phần mềm với thông điệp: “hello world”:

toán SHA256 hoàn toàn đúng giống nhau.

4.2. Đánh giá kết quả

4.2.1. Kết quả tần số của IP

Nhóm tiến hành do tần số của IP trên phần mềm vivado với xung clock được cấp tan số là 90MHz

Name Waveform Period (ns) Frequency (MHz) clk {0.000 5.500} 11.111 90.001

Setup Hold Pulse Width

Worst Negative Slack (WNS): 0.054 ns Worst Hold Slack (WHS): 0.122 ns Worst Pulse Width Slack (WPWS): 5.150 ns Total Negative Slack (TNS): 0,000 ns. Total Hold Slack (THS) 0.000 ns Total Pulse Width Negative Slack (TPWS): 0,000 ns Number of Failing Endpoints: 0 Number of Failing Endpoints: 0 Number of Failing Endpoints: 0

Total Number of Endpoints: 14846 Total Number of Endpoints: 14846 Total Number of Endpoints: 7492

All user specified timing constraints are met.

Hình 4.18: Tan số IP Trong quá trình Synthesis va Implementation, phần mềm Vivado đã tinh toán

và phân tích thời gian các path có trong thiết kế của IP. Hình 4.17 là kết quả phân tích của tool, kết quả cho thấy IP thỏa mãn các điều kiện về Worst Negative Slack, Worst Hold Slack và Worst Pulse Width Slack. IP hoạt động tốt ở tan só 90MHz.

47

4.2.2. So sánh kết quả với các bài báo khác

Bang 4.1: So sánh clock cycle count

Thực hiện thuật toán SHA256 Thiết kế của [3]

nhóm

Trên kiến trúc RISC-V cơ bản 5337 4155 Trên kiến trúc RISC-V đã thêm lệnh hỗ trợ 3329 2708

Số clock cycle count được rút ngắn 2048 2047

Nhóm đã thực hiện đo clock cycle count của hệ thống khi thực hiện thuật toán SHA256 trên IP và so sánh với bai báo số [3] thì thay rằng số clock cycle count của nhóm gần ngang bằng với số clock cycle count của bài báo theo như mô tả trong

Bảng 4.1.

Bảng 4.2: So sánh tần số và thiết kế

Thiết kế của nhóm [4]

Tần số 90 MHz 83.333MHz

LUTS 12026 763 Flip Flops 12781 568

Ở bài báo số [4] nhóm tác giả thực hiện thiết kế ASIC cho thuật toán SHA256 và có kết quả tan số hoạt động của IP là 83.333MHz. So sánh tần số thiết

kế của nhóm thì tần số thiết kế của nhóm tối ưu hơn. Còn về mặt thiết kế do nhóm

thực hiện vi xử lý RISC-V và tích hợp thêm các lệnh của SHA256 nên sử dụng

nhiều tài nguyên hơn.

48

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ế và hiện thực thuật toán mã hóa trên RISC-V (Trang 48 - 58)

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

(69 trang)