Mô phỏng và đánh giá kết quả

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í theo vi kiến trúc OoO (Trang 52 - 66)

TOM TAT KHÓA LUẬN

Chương 5. Mô phỏng và đánh giá kết quả

5.1. Mô phỏng bộ xử lý RISC-V

3.1.1. Tập lệnh

37 lệnh của tập lệnh RV32I và 4 lệnh Floating point trong tập lệnh RVF được thực hiện như trong bảng dưới.

Bảng 5.1: Tập lệnh được thực hiện trên thiết kế

Nhóm lệnh Loại lệnh Lệnh

Arithmetic R add, sub, sll, slt, sltu, xor, srl, sra,

or, and

Imm I addi, slti, sltiu, xori, ori, andi, slli,

srli, srai

Load I Ib, lh, lw, Ibu, Thu

Store S sb, sh, sw Branch B beq, bne, blt, bge, bltu, bgeu

Lui U

Auipc U

JAL J

JALR I

Float F fadd, fsub, fmul, fdiv

5.1.2. Tap lệnh mô phỏng

Ta khởi tao giá trị ban đầu:

o Dé thuận tiện cho việc thực hiện cũng như kiêm tra các lệnh, nhóm

thực hiện gán các giá trị ban đầu cho 32 thanh ghi như bảng 5.2.

41

Bảng 5.2: Khởi tạo giá trị ban đầu cho các thanh ghi

Tên thanh ghi Chỉ số thanh ghi Giá trị Hex

Zero 0 00000000

ra 1 00000001

sp 2 00000002

gp 3 00000003

tp 4 00000004 t0 5 00000005

tl 6 00000006

2 7 00000007 s0 8 00000008

sl 9 00000009 a0 10 0000000a

al 11 0000000b a2 12 0000000c a3 13 0000000d a4 14 0000000e a5 15 0000000f a6 16 00000010 a7 17 00000011 s2 18 00000012 s3 19 00000013 s4 20 00000014

số 21 00000015 s6 22 00000016 s7 23 00000017

38 24 00000018 s0 25 00000019 s10 26 42153524 sll 27 42c8§e993 t3 28 0000001c t4 29 0000001d t5 30 0000001e t6 31 0000001f

42

© Đoạn lệnh mô phỏng được thé hiện như bảng 5.3.

Bảng 5.3: Bảng mã khởi tạo giá trị ban đầu cho các thanh ghi

Lệnh Mã lệnh Binary

addi ra,zero, 1 00000000000100000000000010010011 addi sp,zero,2 00000000001000000000000100010011 addi gp,zero,3 00000000001 1000000000001 10010011 addi tp,zero,4 000000000 10000000000001000010011 addi t0,zero,5 00000000010100000000001010010011 addi t1,zero,6 0000000001 1000000000001 100010011 addi t2,zero,7 0000000001 1 100000000001110010011 addi sO,zero,8 00000000 100000000000010000010011 addi s1,zero,9 00000000100100000000010010010011 addi a0,zero,10 00000000101000000000010100010011 addi al,zero,11 00000000101 100000000010110010011 addi a2,zero, 12 000000001 1000000000001 1000010011 addi a3,zero, 13 000000001 10100000000011010010011 addi a4,zero, 14 000000001 1 1000000000011100010011 addi a5,zero, 15 000000001 11100000000011110010011 addi a6,zero, 16 0000000 1000000000000100000010011 addi a7,zero,17 00000001000100000000100010010011 addi s2,zero,18 00000001001000000000100100010011 addi s3,zero,19 00000001001 100000000100110010011 addi s4,zero,20 00000001010000000000101000010011 addi s5,zero,21 00000001010100000000101010010011 addi s6,zero,22 0000000101 1000000000101100010011 addi s7,zero,23 00000001011100000000101110010011 addi s8,zero,24 00000001 1000000000001 10000010011

43

addi s9,zero,25 00000001 1001000000001 10010010011

Iw s10,0(zero) 00000001 10100000001000000010001 1

Iw s11,1(zero) 00000001 10110000001000001010001 1 addi t3,zero,28 00000001 1 1000000000011 1000010011 addi t4,zero,29 00000001 110100000000111010010011 addi t5,zero,30 00000001 111000000000111100010011 addi t6,zero,31 00000001 111100000000111110010011 addi ra,zero, | 0000000000010000000000001001001 1 addi sp,zero,2 0000000000100000000000010001001 1 addi gp,zero,3 00000000001 1000000000001 10010011 addi tp,zero,4 00000000010000000000001000010011 addi t0,zero,5 00000000010100000000001010010011 addi t1,zero,6 0000000001 1000000000001 100010011 addi t2,zero,7 0000000001 1 100000000001 110010011 addi s0,zero,8 00000000100000000000010000010011 addi s1,zero,9 00000000100100000000010010010011

addi a0,zero, 10 00000000101000000000010100010011

o Kết quả chạy trên phần mềm RARS 1.5 như hình 5.1.

“Edit | Execute j( Registers | Floating Point / Control and Status

Blpt| Address | Code Basic ra F 0x00000001|zero

| TL | 0x00400044| 0x01200913jađđi x1ê,x0,0x00000012 18: ),Zero, 18 l Isp 2 ‘oxoo000002|

LÍ | 0300400043] 001300988.ađđ1 x19, x0, 0x00000013 a 3 000000003

By | 0x0040004e| 0x01400a13Ìađ4i x20, x0, 0x00000014 20: 2650) m 4 ‘ox00000008

[| 000400050 oxo1s00893|addi_x21, x0, 0x00000015 2219, tô 3 0x00000008|

Cy | 000400054 0z01690513lađđi x22,x0,0x09000016 ,5EO, ie § ‘0x00000006|

L] | 0x00400059 0x01700b93|addi x23, x0, 0x00000017 ),zero, v2 7 0x00000007}

(| 040040005c| 0x01800c13.ađồ: x24, x0, 0x0000001 2820, ao a ‘ox00000008|

Lj | 0x0040000| Ox01800¢93|addi_x25, x0, 0200000019 1, 2€20, al 9) 0x00000009|

Ly | 000400064 0x01c00e13lađđ+ x28, x0, 0x0000001¢ 8 lao io] 0x0000000a|

L] | 09040069) 0x01đ00e93jadđi x29,x0,0x00000014, i 7 m | 0x00000000|

Ly | 0z0040006c| 0x01e00f13laddi x30, x0, 0x0000001e |29: a a2 12 .0x0000000c| L] | 0400490770 0g01£00f93|addi x31,x0,0x0000001f |29: addi té, zero, 31 a3 13| .0x0000000d|

5 15) 0x0000000f|

= la 16 0x00000010|

E pata segment oe far Ty 0x00000011|

Address Value (+0) Value (+4) Value (+8) Value (xe) Value (+10) Value (+14) Value (+18) Value (+1c) 32 18) 0400000012]

010010000) 000000000 0x00000000| 0x00000000) 0x00000000| 000000000, 000000000) 0x00000000| 000000000) s3 18 409009013) 0x10010020) .0x00000000)| 000000000) 0x00000000' 000000000] 0x00000000) .0x00000000| 000000000] 0z00000000| sd 20 2509909014 0x10010040) .0x00000000/ 0x00000000| 0x00000000) 0x00000000| 0x00000000) .0x00000000)| 0z00000000| 0z00090000| iss 21 289959015)

0z10010060 0x00000000) 000000000 000000000) 000000000 0z00000000) 0x00000000) 000000000 0x00000000| _ | |s6 2 9400089016

010010080] 00000000 0500000000 000000000) 0500000000 0500000000. 000000000 0500000000 oxo0000000) || |=? 23 0x00000017

010010040) 000000000) 0x00000000] ‘ox00000000) 0x00000000| 000000000) 000000000) 0x00000000| 000000000)| sẽ 24 0400009018 0x100100c0) .0x00000000/ 000000000 0x00000000. 0x00000000| 000000000. .0x00000000| 000000000 0z00000000| iso 25| 2509909013) 0x100100e0) .0x0000000)| 000000000) 0x00000000' 000000000] 000000000) .0x0000000| 000000000] 0z00090000| s10 26 209909080.

0z10010100 '0x00000000) 0z00000000| 0z00000000, 0z00000000| 0z00000000) 0x00000000) 0x00000000| 0x0ong0non| || [s1! Bị 2809089000 0z10010120 0400000000) 0x00000000 0400000000, 00000000 0z00000000) 0x00000000| 000000000 0x0onpono|_ || [ts 20 pane

ủ1n140L 0nani — — nx0n00nnnni ủx00nnnnnn: oxnnnnnnna| oxannonnnnl oxnnononoal oxnnnnnnna| .0x0010000n) Bỡ 29) 0x0000001d)

ID ics 30) .0x0000001e|

| tờ | |ox10010000(data) |v| (v] Hexadecimal Addresses #jHexadecimalValues []ASCI 0x00400074|

Hình 5.1: Kết quả chạy khởi tạo trên phan mềm RARS 1.5

44

o_ Kết quả mô phỏng:

o Kết quả mô phỏng thu được giống với kết quả thực hiện chạy trên

phân mém RARS 1.5.

Thực thi 37 lệnh RV32I và 4 lệnh Float:

o Doan lệnh mô phỏng như bảng 5.4.

Bảng 5.4: Bảng mã thực thi 37 lệnh RV32I và 4 lệnh Float

Lệnh Mã lệnh Binary

add tp,gp,ra 0000000000010001 10000010001 10011

sub a2,t1,s2 010000010010001 10000011000110011

sll s0,ứp,sp 00000000001000011001010000110011

slt a3,s6,a0 00000000101010110010011010110011

sltu a3,a6,a0 00000000101010000011011010110011

xor t0,tl,sp 00000000001000110100001010110011

srl zero,tp,gp 00000000001 100100101000000110011

sra zero,tp,gp 01000000001 1001001010000001 10011

45

or ra,tl,sp 00000000001000110110000010110011 and t2,tp,gp 00000000001100100111001110110011

addi s5,s1,12 000000001 10001001000101010010011

slti a6,s4, 10 00000000101010100010100000010011 sltiu a6,s4, 10 00000000101010100011100000010011

xori s6,a2,32 00000010000001100100101100010011

ori s11,t5,4 00000000010011110110110110010011

andi s4,s8,6 0000000001 1011000111101000010011

slli s2,t2,11 00000000101100111001100100010011 srli s9,s7,26 00000001 101010111101110010010011

srai sl, a2, 20 01000001010001100101010010010011

Ib s7,0(a0) 00000000000001010000101 110000011

Th s3,3(a6) 00000000001 110000001 100110000011

Iw s4,3(a7) 00000000001 11000101010100000001 1

Ibu t3,21(t4) 00000001010111101100111000000011

Thu t6,6(t5) 00000000011011110101111110000011

sb s4,25(a0) 00000001010001010000110010100011

sh s8,20(a4) 00000001 100001110001101000100011

sw s10,20(a5) 00000001 101001111010101000100011

beq t0,ra 00000000000100101000001001100011

bne t0,ra 00000000000100101001001001100011

blt t2,ra 00000000000100111100001001100011

46

bge 2, zer 00000000000000111101001001100011 bltu t2, zero 000000000000001 11110000001 100011

bgeu t2, zero 00000000000000111111001001100011

lui s10,20 00000000000000010100110100110111 auipc s8,20 00000000000000010100110000010111

Jalr a7,s5,68 00000100010010101000100011100111

jal float 00000000010000000000000011101111

fadd.s ft1, ft2, ft3 00000000001100010111000011010011

fsub.s ft4, f2, ft3 00001000001100010111001001010011 fmul.s ft5, ft2, ft3 00010000001100010111001011010011

fdiv.s ft6, ft2, ft3 00011000001 100010111001101010011

o Kết quả chạy trên phan mềm RARS 1.5 như hình 5.3.

Registers | Floating Point | Control and Status |

Name ‘Number Vaue zero D 000000080) Code Basic ra 1 ‘0x00000096|

Se) 0x00236003 or x1,xẽ, x2 5 2 ‘ox00000002]

0| 0x003273b3|and x7,x4,xã sp 3 0x00000003|

Oxd0cdeaSsladds 4 3 0z00000004|

a9 0x90aa281315 0 5 0x00000004|

lac| 0x00aa3813ls mm đ 0z00000006|

sẽ 1 920009090)

so s 00000000]

a0 10 0z0000000a|

al 11 ox00000008]

a2 1 oneseeeees

ai 38 9x00000090| Số: 1h s3,3(a€) ad 14 0z0000000e|

as 15 ‘ox0000000¢|

a 16 0z00000000|

si 17 0z00000011|

Address Value (+0) Value (+4) Value (+8) Value (+c) Value (+10) Value (+14) Value (+18) Value (+1c) | = 18| 000000000)

'0x00000000) 0x00000000/ 0z00000000| 0z00000000| 0x00000000/ 0500000000. '0500000000) 0x000nnnnn|ằ || |s3 1 0x00000013|

'0x09000000) 0x00000000| 0x00000000| ‘0x00000000) ‘0x00000000) ‘0x00000000) ‘0x00000000] 0x00000000| at 29 —

‘ox00000000 x00000000] 0z00000000| 0z00000000| 0z00000000) 0z00000000) ‘ox00000000 exon000000) | |25 21) ox00000015|

‘9x00000000] 0x00000000) 0x00009000) 0x00000900) 0x00000000) 000000000) ‘9x00000000] 0x00000000| lj) |s6 2 0XE£££££dd|

.0x00000090) 000000000) 000000000] 0x00000900) .0x00000900) .0x00000000. 0x00000000| 000000000] | tHã 23) 0x00000017] 0x00000000| 009009096) 0x00000000| 0x00900900] .0x00000900) 0x00000000) 0x00000000| 9x00000000| jee 24|

.0x00000000 000000000) 000000060] 0x00000000| .0x00000000) .0x00000000. 0x00000000| x00000000} so 25|

0x00000000) 9x00000000| 0x00000000| 0x00000900) .0x00000000) 0x00000000) 0x00000000) 9x00000000] }s20 26|

'0x00000000| 0x00000000| ‘0x00000000] ‘0x00000000] ‘ox00000000) ‘ox00000000) '0x00000000| 0x00000000| sil 2

.0x00000000| 000000096) 0x00000000| ‘0x00000000| 0x00000000| 0x00000000) 0x00000000) 0x00000000| |r3 28| 9x0000001¢} .ix0annannni nxnaannnani nxnnananna| ——— nxanaannni .0x00000An0ˆ .0x0annanan_ .ix0annannni 0xnanaanna| Y Jed 29) .0x0000001đ|

a iL [E1 30 9z0000001e|

E 31 0z00000011|

ẽ | ‡@ |ÍOxf0010000(daia) |v | [| Hexadecimal Addresses |v) Hexadecimal Values [_] ASCI bc '0x004000c§|

Hình 5.3: Kết quả chạy 37 lệnh RV32I và 4 lệnh Float trên phan mềm RARS 1.5

47

Hình 5.4: Kết quả mô phỏng 37 lệnh RV32I và 4 lệnh Float

o_ Kết quả mô phỏng thu được giống với kết quả thực hiện chạy trên

phân mêm RARS 1.5.

Thực thi chuỗi lệnh theo OoO:

o Đoạn lệnh mô phỏng như bảng 5.5.

Bảng 5.5: Bảng lệnh thực thi chuỗi lệnh theo OoO

Lệnh Mã lệnh Binary

Iw ra, 1(sp) 00000000000 10001001000001000001 1

add gp, ra, tp 00000000010000001000000110110011

sw t0, 2(gp) 00000000010100011010000100100011

sub t1, tl, t2 01000000011 1001 10000001100110011

Iw sO, 3(t1) 00000000001 1001 1001001000000001 1

48

can | eo | “Resists | Floating Point | Control and Status

Ey text Segment aa Name ‘Number Value

ro 9 9z90000000| Bkot| Address Code Basic Source ra 7 000000000]

‘ox004 (0x00112083|2w x1,0x00000001 (x2) 1w ra, LŒp) ~ 3 Care IE] 0x004081b3/ađ4 x3,x1,x4 ‘add gp, ra, ep 3 '0x10008000|

Gg (Ox00S1a123|aw x5, 0x00000992(x3) t0, 2(gp) a aman

(0x40730333|sub x6, xế, x7 sub tl, tl, 5 000000000] (0x00332403|2w x2, 0x00000003(xé) |5: 3w s9, 3(t1) é ‘0x00000000)

7 0x00000000|

Ũ ‘0x00000000)

3 '0x00000000]

rT) ‘0x00000000|

11 10000000]

12) 9z00000000|

13 0x00000000|

E 14 0x00000000|

g 1s 0x00000000|

16 '0x00000000|

E, deta soument Fr) 0000000

Address Value (+0) Value (+4) Value (+8) Value (+10) Value (+14) Value (+18) 13) ‘0x00000000)

910000 0x00000000) 0z0000001 0x00000000) 0z000 (000000000) 0x00000000) (0x00000000) ix00000000) ^ | 13 9x00000000)

010020 000000000) 000000000) 0x00000000) 0x00000000) 000000000) 0x00000000) 000000000) 000000000] 20 0x00000000|

0510010040 000000000) 0500000000, 0x00000000) 0x00000000, '0x00000000| 0x00000000) '0x00000000) 000000000) ơ 9590890090) 0x10010060 0x00000000) 0x00000000) 0x00000000) 0x0000000) 0x00000000| 000000000) 0x00000000| 0x00000000] 22 9590890090) 0x10010080 0x00000000) 0x00000000) 0x00000000) (000000000) '0x00000000] (0x00000000) '0x00000000) 0x00000009] 23 20000] 0x100100a0 0x00000000] 0z0000001 0x00000000) 000000) 0x0000 '0x00000000) 3x00000000] 2 9x90000000|

01000 0x00000000) 0x000000 000000) 0x0000) ‘0x00000000] 'x00000000| 25 9x00000000)

01000 000000000) 0x0000000! 0x00000000) 0x00000000| 0x0000) 0x00000000) 'x00000000| 2E 9500090000) 0x10010100 000000000) 0x0000001 0x00000000) 0x00000000| 0x0000 0x00000000| 000000000) 27 9399890090) 0x10010120 0x00000000) 0x0000000/ 0x00000000) 000000000) 0x00000000| 0x0000) 000000000) 0x00000000] 28 9590890090) 0x108101ỏ0 ủx0nnnarnnni ủx0nn00nn' ủx0aannnn! 0x0naanna' 'ủx0nnnannni 0xnnaannn! 'ax0nnnaanni nxnnnnnnan| 29 90009090]

‹ › 3) 9x00000000|

Tw IlEionnaaram I~] 31 0x00000000|® (|0x10010000(đata) | ~| (| Hexadecimal Addresses [7] Hexadecimal Values ( ]ASCH EEnontrrn|

66112083 y/00008 1ủ 4030.

80408 3/0051

80008, 40730 00330

'89510 3/0730 00320

66090881... Y68908 4288,

4ee9aga3 00000 = ‘0000

44444444444 0160.0888 y 8832 X O12 5101

Hình 5.6 Kết quả mô phỏng chuỗi lệnh

5.2. Mô phỏng đơn vị xử lý Floating point

5.2.1. Mô phỏng phép cộng

49

Hình 5.7 thé hiện dạng sống mô phỏng phép cộng ở mức RTL. Hai toán hang ngõ vào A và B có giá trị lần lượt là 32'h4DB75F4B và 32'hC969B0C2, opcode là

4°d10. Ta được kết qua là 32’h4DB6EA73.

5.2.2. Mô phỏng phép trừ

50

Hình 5.8: Dạng sóng mô phỏng kết quả phép trừ ở mức RTL Hình 5.8 thé hiện dang sống mô phỏng phép cộng ở mức RTL. Hai toán hang ngõ vào A và B có giá trị lần lượt là 32'h4DB75F4B và 32'hC969B0C2, opcode là

4°d3. Ta được kết quả là 32'h4DB7D423.

5.2.3. M6 phỏng phép nhân

Hình 5.9 thể hiện dạng sóng mô phỏng phép nhân ở mức RTL. Hai toán hạng ngõ vào A và B có giá trị lần lượt là 32'h4DB75F4B và 32'hC969B0C2, opcode là

4°d1. Ta được kết quả là 32*HdD7A76458.

51

5.2.4. Mô phỏng phép chia

Hình 5.10 thé hiện dạng sống mô phỏng phép chia ở mức RTL. Hai toán hạng ngõ vào A và B có giá trị lần lượt là 32h4DB75F4B và 32hC969B0C2,

opcode là 4’d2. Ta được kết qua là 32’HC3C8E04C.

52

Hình 5.10: Dang sóng mô phỏng kết quả phép chia ở mức RTL

5.3. Kết quả Post-synthesis

Báo cáo tông hợp Timing được thể hiện trong hình 5.11 và 5.12

Design Timing Summary

Setup Hold Pulse Width

Worst Negative Slack (WNS): 0.551ns Worst Hold Slack (WHS): 0.066 ns Worst Pulse Width Slack (WPWS): 2.400 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 ofEndpoints: 2675 Total Number ofEndpoints: 2675 Total Number of Endpoints: 1672

All user specified timing constraints are met.

Hình 5.11: Tổng hop Timing thiết kế chưa tích hợp khối tính toán Floating Point

53

Design Timing Summary

Setup Hold Pulse Width

Worst Negative Slack (WNS): 0.357 ns Worst Hold Slack (WHS): 0.066 ns Worst Pulse Width Slack (WPWS): 48.400 ns Total Negative Slack (TNS): 0.000ns 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: 2684 Total Number of Endpoints: 2684 Total Number of Endpoints: 1683 All user specified timing constraints are met.

Hình 5.12: Tổng hop Timing thiết kế tích hợp khối tính toán Floating Point

-_ Báo cáo tông hợp tài nguyên cho thiết kế được thể hiện trong hình 5.13

Summary

Power estimation from Synthesized netlist. Activity On-Chip Power

derived from constraints files, simulation files or

vectorless analysis. Note: these early estimates can {| Dynamic: 05B7W_ (70%)

change after implementation.

Clocks: 0.031W = (5%)

Total on-enip Power: ieee - | Signals: 0.101W (18%)

Design Power Budget: y W Logic: O.073W (13%)

Power Budget Margin: Zz; L1uo: 0.362W (64%)

Junction Temperature: 25.9°C

Thermal Margin: aap Oey) [ll Device Static 0248W_ (30%)

Effective SJA: 1.1°CW

Power supplied to off-chip devices: 0W

Confidence level: Low

Launch Power Constraint Advisor to find and fix

invalid switching activity

Hình 5.13: Tổng hop tài nguyên

54

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í theo vi kiến trúc OoO (Trang 52 - 66)

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

(68 trang)