Thay vì truy xuất dữ liệu trực tiếp từ bộ nhớchính, CPU sẽ yêu cầu sử dung dữ liệu được lưu trữ tạm thời giúp cải thiện tốc độ xử lý của vi xử lý.. Cấp độ cao nhất TL-C bổ sung ba kênh c
Trang 1ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUAT MAY TÍNH
TRUONG TRAN HOÀI NAM - 20521638
NGUYEN ĐỨC DUY KHANG - 20521435
KHÓA LUẬN TÓT NGHIỆP
HIỆN THỰC MỘT NOC (NETWORK ON CHIP) SỬ
DUNG LOI VI XỬ LÝ RISC-V RV32IMF THONG
QUA GIAO THỨC TILELINK TRÊN FPGA
IMPLEMENTING A NOC (NETWORK ON CHIP) USING RISC-V
RV32IMF PROCESSOR CORE WITH TILELINK PROTOCOL
ON FPGA
CU NHÂN NGÀNH KĨ THUAT MAY TÍNH
GIẢNG VIÊN HƯỚNG DAN
ThS PHẠM THANH HÙNG
TS TRÀN PHƯỚC XUÂN
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN
Trong khoảng thời gian bốn tháng vừa qua cùng nhau học tập và hoàn thiệnkhóa luận dé tong két lai con duong bốn năm đại học mang lại cho chúng emnhiều cung bậc cảm xúc Khóa luận tốt nghiệp này không chỉ là hồi chuông kết
thúc của một chặng đường dài mà còn mở ra con đường mới đang mong chờ tụi
em tiếp bước
Bằng tắt cả tắm lòng và chân thành, chúng em xin gửi lời cảm ơn trân trọngđến toàn thể quý thầy cô Trường Đại học Công nghệ Thông Tin — Dai học Quốcgia Thành phố Hồ Chí Minh nói chung và các thầy cô trong Khoa Kỹ thuật máy
tính nói riêng Quý thầy cô đã không chỉ cung cấp cho chúng em những kiến thức
quý báu mà còn luôn tận tâm, nhiệt huyết trong việc hướng dẫn và hỗ trợ sinhviên Những bài giảng, những buỗi thảo luận và những lời khuyên quý báu từ quýthầy cô là nền tảng vững chắc giúp chúng em đủ bản lĩnh, vừng bước trên conđường sắp tới của mình
Chúng em xin bày tỏ lòng biết ơn sâu sắc tới giảng viên, Thạc sĩ Phạm Thanh
Hùng đã dành rat nhiều thời gian, công sức dé hướng dẫn, chỉnh sửa và đóng gop
ý kiến cho khóa luận của chúng em Những kiến thức chuyên môn sâu rộng, nhữngkinh nghiệm quý báu và sự tận tình của thầy đã giúp chúng em vượt qua nhữngkhó khăn va thử thách trong suốt quá trình nghiên cứu đề có thé đạt được kết qua
đường đại học.
Trang 3Bên cạnh những yếu tố khách quan về việc giới hạn kiến thức, khó khăn về thời gian hoàn thành khoá luận, nhóm vẫn còn nhiều mặt bị hạn chế và thiếu sót Vượt lên
trên những khó khăn đó, chúng em vẫn hết sức cố gắng và nỗ lực hoàn thành khoá
luận trong khả năng Chúng em kính mong hội đồng có thể cảm thông và đưa ra chỉ
dẫn góp ý để khoá luận của chúng em có thê tốt hơn
Chúng em xin trân trọng cảm ơn !
TP Hồ Chí Minh, năm 2024
Sinh viên thực hiện
Trương Trần Hoài Nam Nguyễn Đức Duy Khang
Trang 4Chương 2 CO SỞ LÝ THUYÊTT - e2 s£©ss©s£essessesseessessessesse 3
2.1 Kiến trúc tập lệnh RISC-V ccss+ccestreeetrrrvrtrrvrrrrrrrrrrrrrrrrrrree 3
2.1.1 Tổng quát RISC-V cceseeecerrreererrrrrrrrrirrrrrrrreerre 3
2.1.2 Tổng quát lõi RISC-V RV32IME -sseceesreeerreeere 4
AVANCE Ôn -eeere 4
2.1.2.2 Mo rong chuẩn M (RV32M) wecssssssssssssssscssesssssssssssssssesssseeeeeesesssssssasessssee 52.1.2.3 Mở rộng chuẩn F (RV32F) scssssssssssssessassnsssssssessssssessssesessnsseesnssneeseeseees 72.2 Sơ lược về bộ nhớ đệm -22+++ccettrrevEttrrevrtrrerrtrrrrrrrtrrrrrrrrree 142.3 Sơ lược về giao thức TileLink -s-eceeseeeeereeeereeeerreerrrreerre 15
2.3.1 Tổng quát -eeecreeeeerreeceerieeeerrrrerrrrrrree 15
2.3.2 Hoạt động cơ bản csccscx+cctsckttkktEkktEkrtkirkrirriirrirrrrreree 15
2.3.3 Các kênh của TileLink s .eecesrreccerrrecerrrrererrree 16
2.3.4 Các cấp độ của TileLink -+ceccceerrreecevrrrrreererrrrrrreerr 17
2.3.4.1 Tilelink Uncached Lightweight (TL-UL) -: 18 2.3.4.2 TileLink Uncached Heavyweight (TL-UH) - - 19 2.3.4.3 TileLink Cached (TL-C)etsesssssssssssusssesssnsessssssessssnsesssnsssssssesssnsesssen 20
2.4 So luge ve Crossbar seccsssessssssssssssssusssssssssssssssssssssssssssssussssseessssssssssssssseeseessessssseeeeeeee 222.5 Sơ lược về Network on Chipeesssssssssssssussssssussesssussssssasesesissssssssssssssssessssseese 22Chương 3 HIỆN THỰC THIET KKẾ -s-s<ssssseseseesssesee 24
Trang 53.1 Thiết kế lõi vi xử lý RISC-V RV32IME c255-icccccerrrrreererrrrree 24
3.1.1 _ Tổng quan thiết kế 2-ccssreecerrererrererrrrerrrrrrrre 24
3.1.2 Dafapath ccccHhHHHHìH Hà nhe ưkt 24
B.L.2.1 Tamg Fetch nh 283.1.2.2 Tầng Decode eecereecerirrerrirerrirrtrirrrrrrrerrreerrre 283.1.2.3 Tang Execute an ẽ 28
3.4 Hiện thực crossbar 4X4 c-cc-cccccceretsrtertrrrrttsrttrtrrrrrrrrrkrrsrrrrrrrsrkee 46
3.5 Hiện thực Network on Chip với lối RV32IME -s c«<ccxxeereeee 53
3.5.1 Hién thực kết nối giữa RV32IME với Agent -.c-cee 533.5.2 _ Hiện thực kết nối các lõi với Crossbar 4x4 - -cce-ee 543.6 Hiện thực SoC dé nạp xuống kit VirteX 7 -cceeeceereeeerreeerre 55Chương 4 KET QUÁ VÀ ĐÁNH GIA -2- 5-5 scs=sessessessessesses 57
4.1 Kết quả mô phỏng trên VivadO sssxcceereeeerrererrrrvrrrrrrrrrerrrree 57
4.1.1 Kết quả mô phỏng crossbar 4X4 .ecceiceeceverrrrceevrrrrrree 574.1.2 Kết quả mô phỏng giao thức TileLink - -ccese-ee 584.1.3 Kết quả mô phỏng từng lõi vi xử lý «cc-e ccceerree 624.2 acc cố 72
Trang 64.2.1 Đánh giá thiết kết Crossbar 4x4 -.cceccerrrreceerrrrrreeee 724.2.2 Đánh giá thiết kế của lõi RV32IME -.eeccerreccerrree 734.2.3 Đánh giá thiết kế hệ thống NoC c-s ccecerrreceerrrcee 74
4.3 Bảng SO sánh «ch th HH HH H111 11111 11krrkrrre 77
4.3.1 So sánh độ chuẩn xác của các thuật toán số thực -: 77
4.3.2 So sánh thiết kế của Crossbar 4x4 -ccecrreccrrrrecerrree 804.3.3 So sánh giao thức TileLink với các chuẩn giao thức khác 814.3.4 So sánh lõi RV32IMF với các thiết kế khác - 81
Chương 5 KET LUẬN VÀ HƯỚNG PHAT TRIỂN -s- 82
5.1 Kếtluận Z2 wxnớ 825.2 Hướng phát triễn -:eccccerrrreeeveertirrrerrtrririrrertrririrrrrrrrrrrrrrerrrre 82
TÀI LIEU THAM KHẢO 2< s2£©ss£€2ssESse©vssevseersservsserssee 84
Trang 7DANH MỤC HÌNH
Hình 2.1 Sơ đồ giải thuật chia Non-Restoring -s -csseeeerreeerrererrree 6 Hình 2.2 Biểu diễn lệnh Load-word và Store-word số thực - -.cee 7 Hình 2.3 Sơ đồ giải thuật cộng và trừ 2 số thực 32 bit -ccccecrreecccrrree 8 Hình 2.4 Sơ đồ giải thuật nhân 2 số thực 32 bit : ecccerrreeeceerrrreceerr 10 Hình 2.5 Sơ đồ giải thuật chia 2 số thực 32 bit esereriererrrree 11
Hình 2.6 Sơ đồ giải thuật căn bậc 2 số thực -. -ss++ccstreeerrreerrrrerre 13 Hình 2.7 Mô tả hoạt động cơ bản của TilelLLInK ‹ ss-5s<5cssresreexeeereeereeee 16 Hình 2.8 Mô tả đường di các kênh của 'T1leLLInk e sc5cse5cevcceexeeerveervexx 17
Hình 3.1 Kiến trúc tổng quát lõi vi xử lý RISC-V RV32IME 24
Hình 3.2 Sơ đồ kiến trúc tổng quan của BTB -++ccsstrcccerrrreeerre 26 Hình 3.3 Sơ đồ kiến trúc tổng quan của PHTT -e:+eecevtttieeevvtrrrrreevre 27 Hình 3.4 Kiến trúc tông quan của bộ nhớ đệm 4-way set associative 36
Hình 3.5 Sơ đồ giải thuật điều khién bộ nhớ đệm lưu trữ lệnh - 37
Hình 3.6 Sơ đồ giải thuật điều khién bộ nhớ đệm lưu trữ dữ liệu 39
Hình 3.7 Kiến trúc tong quan giao tiếp giữa 2 lõi bằng TileLink 40
Hình 3.8 Sơ đồ máy trang thái ưu tiên theo kênh của Master - 44
Hình 3.9 Sơ đồ máy trang thái ưu tiên theo kênh của Slave - - 46
Hình 3.10 Kiến trúc tổng quan khối Crossbar 4x4 -+-essecesrecesre 47 Hình 3.11 Tông quan về giải thuật DPA trong Crossbar 4x4 - 47
Hình 3.12 Kiến trúc của một 6 trong giải thuật DPA . cc-e+rcccccv+ 49 Hình 3.13 Kiến trúc của công đầu ra dữ liệu thứ nhất -ccs+ 50 Hình 3.14 Kiến trúc của công đầu ra dit liệu thứ hai - -2 icccssrrcecerre 51 Hình 3.15 Kiến trúc của công đầu ra dữ liệu thứ ba -cc-errcccccee 51 Hình 3.16 Kiến trúc đầu ra của công dit liệu thứ tư . -ceerrcccerre 52 Hình 3.17 Thành phan cụ thể của một gói tin dữ liệu -s - 53 Hình 3.18 Mô hình giao tiếp lõi RV32IMF với Agent -ccssiireccccct 54 Hình 3.19 Kiến trúc tổng quan của NoC .-.c-:+icececerrrreeeevrrrrirrererrrrrrreerr 55
Trang 8Hình 3.20 Block design trên Vivado c s«cssckeskkEEkkekkrtkrrkirrrirrriirrrrrrreree 55
Hình 3.21 Sơ dé thiết kế SoC và kiến trúc bộ nhớ của lõi RV32IME 56Hình 4.1 Kết quả mô phỏng Crossbar 4x4 -+-ccss+eecetrrereerrrrererrrerre 57
Hình 4.2 Kết quả mô phỏng Crossbar 4x4 khi xảy ra tranh chấp 58
Hình 4.3 Kết quả mô phỏng TL-UL cho PUT và GET ss.+-csss+e 58Hình 4.4 Kết quả mô phỏng TL-UH cho nhóm lệnh toán học 59Hình 4.5 Kết quả mô phỏng TL-UH cho lệnh logical -ss-.+-csssse 60Hình 4.6 Kết quả mô phỏng TL-C cho các lệnh Probe -ccseirreccccv+ 60Hình 4.7 Kết quả mô phỏng TL-C cho các nhóm lệnh Release 61
Hình 4.8 Kết quả mô phỏng TL-C cho các nhóm lệnh Acquire 62
Hình 4.9 Chương trình kiểm tra gốc và chương trình được tạo ra cho NoC 63Hình 4.10 Kết quả mô phỏng lõi master l -ceoeiiceecceerrreeeeverrrrceeert 63Hình 4.11 Kết quả mô phỏng lõi master 2 -. -ecccerrrreecevtrrrecseerrrrrreecrt 64Hình 4.12 Kết quả mô phỏng lõi master 2 sau khi nhận được dit liệu 64Hình 4.13 Kết quả mô phỏng lõi master 3 :-ccecetireecevtttreeevverrrrreevre 65Hình 4.14 Kết qua mô phỏng lõi master 3 sau khi nhận được dữ liệu 65
Hình 4.15 Kết quả mô phỏng lõi master 4 -e-2++ccssireeceetreceerrrrererrte 66
Hình 4.16 Kết qua mô phỏng lõi master 4 sau khi nhận được dữ liệu 66
Hình 4.17 Chương trình tính toán của 101 Slave Š -c-eeccrxesrerkerrerrrrrreee 67
Hình 4.18 Đợi các cờ và dữ liệu để thực thi s-eccsereeeerreeerrreere 68Hình 4.19 Kết quả mô phỏng lõi slave 5 +-e22+cecesirreceerrrceerrrrerrrre 68Hình 4.20 Kết quả mô phỏng lõi slave 5 sau khi nhận được dữ liệu lần thứ nhất 69Hình 4.21 Kết quả mô phỏng lõi slave 5 sau khi nhận được dữ liệu lần thứ hai 69
Hình 4.22 Kết quả mô phỏng lõi slave 5 sau khi nhận được dữ liệu lần thứ ba 69
Hình 4.23 Kết qua mô phỏng lõi slave 5 sau khi nhận được dtr liệu lần cuối 70Hình 4.24 Kết quả mô phỏng lõi slave 6 -22-+cecesrreecetrreceerrrreerrrrecre 70Hình 4.25 Kết quả mô phỏng lõi slave 7 - iicececetrrreeeeverrreeeevrrrrreeeerr 71Hình 4.26 Kết quả mô phỏng lõi slave e22+cecesirreceerrereerrrrererre 71
Hình 4.27 Power on Chip của Crossbar 4X4 -cceeskirkkiiriiiiiikee 72
Trang 9Hình 4.28 Design Timming Summary của Crossbar 4X4 -« c«e-cecc«ee 72 Hình 4.29 Power on Chip của lõi RV322IME seccsrkirrirrrriirriirrrire 73
Hình 4.30 Design Timming Summary của lõi RV32IME -ceccceeee 74
Hình 4.31 Thời gian bắt đầu thực thi + s2++ce+trecztrererrrrrrrrrrrrrrrrrre 74Hình 4.32 Kết quả mô phỏng thời gian thực thi của lõi RV32IME 74Hình 4.33 Kết quả mô phỏng thời gian thực thi của NoC - 75
Hình 4.34 Power on chip của ÌNOC c«-csstHHHHHHHHHàư HHehiưêt 76
Hình 4.35 Design Timming Summary của ÌNOC -.e 55c5c+ssceerxeereservsrreeee 77
Trang 10DANH MỤC BANG
Bảng 2.1 Mô tả chức năng thanh ghi cơ bản RV32ÌL -cc-cccsscreerereerrreerree 4
Bảng 2.2 Bảng mã hóa Booth của giải thuật Radix-4 booth multipiler 5
Bang 2.3 Mô tả chức năng thanh ghi RV32E -ccescccsvscsrxerrrrsrrrrtsrrrrrrrrrrrrie 7 Bang 2.4 Mô tả số bit trừ và thương số được tính trong mỗi tang Pipeline 12
Bảng 2.5 Phân loại các thao tác theo cấp độ TileLink hỗ trợ - 18
Bảng 2.6 Mô tả chỉ tiết thông điệp trong giao thức TL-UL - 18
Bang 2.7 Mô ta chỉ tiết các thông điệp được bé sung trong giao thức TL-UH 19
Bang 2.8 Mô tả chỉ tiết các thông điệp trong giao thức TL-C - - 20
Bảng 3.1 Mô tả chỉ tiết các tín hiệu điều khiến -2 +-eceerrcccerrrrecerre 29 Bang 3.2 Chi tiết tín hiệu điều khiển nhóm lệnh load -: cccc+ 30 Bảng 3.3 Chỉ tiết tín hiệu điều khiển ứng với từng lệnh <ss - 31
Bảng 3.4 Chỉ tiết tín hiệu điều khiển ứng với từng lệnh (t.1) - 31
Bảng 3.5 Chỉ tiết tín hiệu điều khiển ứng với từng lệnh (t.t) - 32
Bảng 3.6 Chi tiết tín hiệu điều khién ứng với từng lệnh (t.t) - - 32
Bảng 3.7 Chỉ tiết tín hiệu điều khién ứng với từng lệnh (t.t) 33
Bang 3.8 Chi tiết tín hiệu điều khiển bộ Mul_Div -ixeccccerrreccccrr 33 Bảng 3.9 Chỉ tiết tín hiệu điều khiển Branch -cs2i+eeceetrcccerrrreeerrre 34 Bảng 3.10 Chi tiết tín hiệu điều khiển bộ AL/U -esseeesreceerre 34 Bảng 3.11 Chi tiết tín hiệu điều khiển bộ FPU c22++rrccctrrrcccz+ 35 Bang 3.12 Mô tả chỉ tiết tín hiệu của các kênh ở Master Interface - 40
Bang 3.13 Mô tả chỉ tiết tín hiệu của các kênh ở Slave Interface - 42
Bảng 3.14 Mô tả chỉ tiết các trạng thái của Master - -+-essecesrrceerre 45 Bang 3.15 Mô tả chỉ tiết các trạng thái của Slave ccccecrrcccccerrrreccerr 45 Bang 3.16 Bảng sự thật của một ô trong giải thuật DPA -<<cc«+ 48 Bảng 3.17 Cách dữ liệu được phân xử khi 2 cổng truy xuất 1 công 52
Bảng 4.1 Tài nguyên tiêu thụ của Crossbar 4{x4 c-cccsrserseerretrserrereee 72 Bảng 4.2 Tài nguyên tiêu thụ của lõi RV32IME -cccStieeriierreirerireriee 73
Trang 11Bảng 4.3 Tài nguyên tiêu thụ của ]NOC 5ccsxkekteekirrkirrrirrrrrrrrrrrreree 76
Bảng 4.4 Kết quả so sánh thực toán cộng số thực giữa máy tính và vi xử lý 77
Bang 4.5 Kết quả so sánh thực toán trừ số thực giữa máy tình và xi xử lý 77
Bảng 4.6 Kết quả so sánh giữa nhân số thực giữ máy tính và vi xử lý 78
Bảng 4.7 Kết quả so sánh chia số thực giữa máy tính và vi xử lý 78
Bảng 4.8 Kết quả so sánh căn bậc 2 số thực giữa máy tính và vi xử lý 79
Bảng 4.9 Bảng so sánh giữa DPA với các giải thuật khác -‹ 80
Bang 4.10 Bảng so sánh giữa Crossbar với đề tài liên quan - 80
Bang 4.11 So sánh giao thức TileLink với các giao thức khác - 81
Bảng 4.12 Bang so sánh lõi RV32IME với đề tài liên quan -. - 81
Trang 12DANH MỤC TU VIET TAT
Viết tắt Viết đầy đủ
AI Artificial Intelligence
ALU Arithmetic Logic Unit
BTB Branch Target Buffer
CPU Central Processing Unit
CSR Control and Status Register
DPA Diagonal Propagation arbiter
FPGA Field-Programmable Gate Array FPU Floating Point Unit
ID Identity
ISA Instruction Set Architecture
IP CORE Intellectual Property Core
LSB Least Significant Bit
MSB Most Significant Bit
NoC Network on Chip
PHT Pattern History Table
RISC Reduce Instruction Set Computer SoC System on Chip
TL-C TileLink-Cached
TL-UH TileLink-Uncached Heavyweight
TL-UL TileLink-Uncached Lightweight
Trang 13(4-Đầu tiên nhóm sẽ nghiên cứu và thực hiện một bộ nhớ đệm theo kiểu 4-way setassociative, giải thuật Branch Prediction dé tích hợp vào vi xử lý RISC-V RV32IMF
tăng cao tốc độ xử lý và truy cập vùng nhớ
Tiếp theo thiết kế vi xử lý RISC-V RV32IMF, chúng em sẽ nghiên cứu và hiệnthực kiến trúc RISC-V RV32I Pipeline 5 tang, sau đó thiết kế một bộ nhân chia sốnguyên và một bộ FPU cho xử lý số thực, tích hợp vào vi xử lý RV32I tạo thành vi
xử lý RV32IMF.
Hiện thực giao thức TileLink và kiến trúc Crossbar 4x4 dé xây dựng lên một NoC
4x4 sử dụng lõi vi xử lý RISC-V RV32IMF.
Cuối cùng là kiểm tra các lệnh được hỗ trợ trong lõi vi xử lý RISC-V RV32IME,
khả năng giao tiếp của NoC 4x4 thông qua mô phỏng trên phan mềm Vivado và Kit
VC707 FPGA.
Trang 14Chương 1 GIỚI THIỆU DE TÀI
1.1 Tông quan đề tài
Trong thời điểm hiện tại, vi xử lý mã nguồn mở RISC-V [1] đang thu hút sự quantâm và tạo ra triển vọng cho một cuộc cách mạng toàn diện trong ngành công nghệthông tin trên toàn thế giới Mang đến một sự hứa hen mới trong thay đổi bối cảnh
của ngành điện toán và vi mạch Hiện nay có rất nhiều đồ án, nghiên cứu khoa học
về đề tài RISC-V, trong đó hướng thiết kế kiến trúc RISC-V là cơ bản và dễ tiếp cậnnhất với sinh viên Qua đó mà sinh viên có thể làm quen với một ISA mới, cách thiết
kế một vi xử lý dựa trên kiến trúc đã tìm hiểu Do đó việc chọn kiến trúc của
RISC-V làm hướng nghiên cứu và phát triển những ứng dụng dựa trên nó rất đa dạng cả về
lĩnh vực công nghiệp và học thuật.
Trong các hệ thống tích hợp hiện nay, sự tăng cường của kích thước và tính phứctạp của các thành phần đã tạo ra những thách thức trong việc quản lý và truyền dữliệu giữa chúng như đa lõi, đa luồng, hay phần cứng cho các ứng dụng máy học, xử
lý tín hiệu số thì việc sử dụng bus truyền thống gây ra độ trễ lớn, khó quản lý và tiêutốn năng lượng Vì vậy việc nghiên cứu và phát trién những giải thuật và giao thức
để hỗ trợ giao tiếp các thành phần trong chip rất quan trọng NoC (Network on Chip)được xem là 1 giải pháp giúp quản lý việc truyền dữ liệu và giảm sự xung đột trongquá trình yêu cầu tài nguyên trong chip
Việc kết nối và truyền tải dữ liệu giữa các thành phần trong NoC cần có các giaothức kết nối phù hợp dé tối ưu hóa Giao thức TileLink là một trong những giao thứctiên tiến, được phát triển bởi SiFive và cộng đồng RISC-V để hỗ trợ khả năng tươngthích, khả năng mở rộng, cung cấp băng thông cao và đỗ trễ thấp giúp tối ưu hóa hiệusuất của toàn hệ thống Vì vậy đối với một NoC sử dụng vi xử lý RISC-V làm lõi thì
độ tương thích của giao thức TileLink càng cao và mang tới hiệu suất lớn
Tổng hợp các điều trên, nhóm đã quyết định xây dựng một NoC sử dụng lõi vi
xử lý RISC-V RV32IMF thông qua giao thức TileLink mang tới nhiều ưu điểm đáng
kể cho sự phát triển của hệ thống mạch tích hợp
Trang 15Ưu điểm mang lại:
- Cung cấp băng thông cao và độ trễ thấp giúp tăng cường hiệu suất
- Khả năng mở rộng linh hoạt va hỗ trợ nhiều hệ thống lớn
- _ Tiết kiệm năng lượng và quan lý tài nguyên hiệu quả
- Có thể tùy chỉnh theo yêu cầu và hỗ trợ nhiều loại giao tiếp
- Chuẩn mở và khả năng tương thích cao
1.2 Mục tiêu đề tài
Mục tiêu đề tài cụ thể như sau:
- Nghiên cứu tập lệnh RISC-V RV32IMF và phương pháp Pipeline 5 tầng
- Nghiên cứu và hiện thực bộ nhớ đệm kiểu 4-way set associative
- Nghiên cứu và hiện thực giải thuật Branch Prediction.
- Nghiên cứu và hiện thực bộ nhân chia sé nguyên, bộ tính toán số thực
- Nghiên cứu và hiện thực giao thức TileLink.
- Nghiên cứu và hiện thực kiến trúc Crossbar 4x4
- Hiện thực bang Verilog HDL vi xử lý RISC-V RV32IMF Pipeline 5 tang với
bộ nhớ đệm 4-way set associative và giải thuật Branch Prediction.
- Hiện thực một NoC 4x4 sử dung lõi vi xử lý RISC-V RV32IMF thông qua giao thức TileLink.
- Hệ thống có tan số hoạt động là 100Mhz
- Kết quả mô phỏng và kết quả nap kit Xilinx VC707 đúng với các lệnh được
hỗ trợ, thực hiện được khả năng giao tiếp của một NoC như mong muốn
1.3 Giới hạn đề tài
- Đối với RV32IME, vi xử lý không hỗ trợ các lệnh liên quan đến Environment
Call và Breakpoints Không hỗ trợ CSR cho mở rộng F.
- Giao thức Tilelink chưa hỗ trợ đầy đủ chức năng Cache Coherence, cũng như
các thông điệp liên quan tới Atomic.
- Bộ nhớ đệm kiểu 4-way set associative dung lượng có giới hạn khoảng 512
Byte.
- Chỉ hiện thực lõi Master có quyền truy cập vào lõi Slave
Trang 16Chương2 CƠ SỞ LÝ THUYET
2.1 Kiến trúc tập lệnh RISC-V
2.1.1 Tổng quát RISC-V
RISC-V [1] là một kiến trúc lệnh (ISA - Instruction Set Architecture) dựa trên
RISC (Reduced Instruction Set Computer) "RISC" dé cap dén việc su dụng một tậplệnh nhỏ và cố định dé thực hiện các tác vụ máy tính, nhằm tối ưu hóa hiệu suất và
sự đơn giản của bộ xử lý.
Một số đặc điểm đáng chú ý của RISC-V:
- Kiến trúc và mã nguồn mở: RISC-V là một kiến trúc mở, cho phép mọi người
sử dụng, phát triển và đóng góp vào nó mà không gặp hạn chế bản quyên Điều này
tạo điều kiện thuận lợi cho sự đa dạng và sự phát triển trong cộng đồng.
- Hỗ trợ đa cấp độ quyền: RISC-V cung cấp các chế độ quyền khác nhau nhưUser Mode, Supervisor Mode và Machine Mode, giúp hỗ trợ bảo mật hệ thống
- Số lượng thanh ghi nhiều: RISC-V thường cung cấp một số lượng lớn thanhghi, giúp tối ưu hóa hiệu suất và giảm sự phụ thuộc vào bộ nhớ
- Ứng dụng rộng rãi: RISC-V có thé được triển khai trong nhiều ứng dụng, baogồm thiết bị nhúng, máy tính cỡ lớn, trí tuệ nhân tạo (AI), và các lĩnh vực khác
- Khả năng mở rộng: Kiến trúc RISC-V có kha năng mở rộng với các tập lệnh
và thanh ghi mới, giúp nó linh hoạt và có thê thích ứng với các ứng dụng mới và tiến
triển công nghệ Một số phần mở rộng tiêu chuẩn của RISC-V:
+ M (Nhân, chia số nguyên)
+ A (Các lệnh liên quan tới Atomic)
+ _F(Các phép toán số thực 32 bit)+ D (Các phép toán số thực 64 bit)+ Q (Các phép toán số thực 128 bit)Những đặc điểm trên giúp RISC-V trở thành một lựa chọn hấp dẫn cho nhiều ứngdụng khác nhau, từ thiết bị nhúng đến máy tính cỡ lớn, và cung cấp một cơ sở cho sự
đa dạng và sáng tạo trong ngành công nghiệp và nghiên cứu.
Trang 172.1.2 Tổng quát lõi RISC-V RV32IMF
2.1.2.1 RISC-V RV32I
R V321 là phiên ban cơ bản nhất của tập lệnh RISC-V, hỗ tro tập lệnh cơ bản gồmcác lệnh tính toán, logic số nguyên đơn giản và các lệnh Load, Store truy cập bộ nhớ
Với 32 thanh ghi cơ bản (x0 - x31) giữ các giá trị nguyên với độ rộng 32 bit và
1 thanh ghi PC giữ địa chỉ lệnh Các thanh ghi được sử dụng cho nhiều mục đích khác
nhau như lưu trữ giá trị tạm thời, con trỏ ngăn xếp, và giá trị trả về từ các hàm
Bảng 2.1 Mô ta chức năng thanh ghi cơ bản RV321
Tên thanh ghi Chỉ số thanh ghi Chức năng thanh ghi
$x0 x0 Chứa hăng số giá trị 0
$ra xl Dia chi tra vé
$sp x2 Con trỏ ngăn xếp
$gp 2 Con trỏ dữ liệu toàn cục
$tp x4 Con trỏ dữ liệu cục bộ luồng
$tO - $t6 x5 - x7, x28 - x31 | Thanh ghi lưu trữ tạm thời
$fp x8 Con trỏ khung
Các thanh ghi đã lưu (nêu con trỏ khung
$s0 - $s11 x8 - x6, x18 - x27
không được sử dung, x8 sẽ thành $s0)
$a0 - $a7 x10 - x17 Các đôi số được truyền cho các hàm
Câu trúc tập lệnh của RV32I bao gồm:
- Lệnh số học và logic: Bao gồm các phép toán như cộng, trừ, and, or, xor vàdịch chuyển bit
- Lénh ré nhánh: Bao gồm các lệnh nhảy và gọi hàm, như JAL (Jump and Link),JALR (Jump and Link Register), và các lệnh so sánh có điều kiện như BEQ (Branch
1f Equal), BNE (Branch 1f Not Equal),
- Lệnh truy cập bộ nhớ: Bao gồm các lệnh tải (load) và lưu (store) dit liệu đến
bộ nhớ, như LW (Load Word), SW (Store Word).
Trang 18- Lệnh hệ thống: Bao gồm các lệnh dùng dé quan lý hệ thống như ECALL
(Environment Call) và EBREAK (Environment Break).
Dinh dang của lệnh của RV32I được chia thành 6 nhóm: R-type, I-type, S-type,B-type, U-type và J-type, trong khóa luận này lõi RV32I được xây dựng dé hỗ trợ các
lệnh logic, sỐ học, lệnh truy cập bộ nhớ và lệnh rẽ nhánh
2.1.2.2 Mở rộng chuẩnM (RV32M)
RV32M là phần mở rộng của tập lệnh cơ sở RV32I, cung cấp các lệnh đề thựchiện các phép toán số học phức tạp hơn như nhân, chia và số dư
e Thuật toán nhân số nguyên
Radix-4 booth multiplier [2] là giải thuật cải tiễn của radix-2 booth với ý tưởng
thêm 1 bit Lostbit bằng 0 vào sau LSB của số nhân Sau đó sẽ lựa chọn 3 bit (2 bit
LSB, Lostbit), theo bộ mã hóa của giải thuật sẽ chọn cach tính toán +0, +1A, 1A,
-2A hay + -2A Bộ nhân sẽ được dịch phải 2 bit và Lostbit bằng Multiplier[1] trongmỗi chu kỳ Dé giảm thanh ghi tích ta sẽ dùng 1 thanh ghi tích 64 bit dé nạp số nhân
vào 32 bit LSB và 32 bit MSB sẽ được dùng như giá trị nhân tạm thời Với 32 bịt sẽ
mat 17 chu kỳ cho có dau và 18 chu kỳ cho không dấu
Bảng 2.2 Bảng mã hóa Booth của giải thuật Radix-4 booth multipiler
X2X1X0 Hoat dong Miéu ta
Trang 19e Thuật toán chia số nguyênGiải thuật chia Non-Restoring [3]: Là giải thuật chia 2 số nhị phân bằng cách sửdung bit dấu của thanh ghi được khởi tạo, dựa vào bit dấu thanh ghi được lựa chọndịch trái, cộng hoặc trừ cho số chia và kết quả sau của Q[0] sẽ là 1 hay 0 Bộ chia 32bit cần 33 tới 34 chu kỳ dé hoàn thành tùy vào có dấu hoặc không dau.
Hình 2.1 Sơ đồ giải thuật chia Non-Restoring
Trang 202.1.2.3 Mở rộng chuẩn F (RV32F)RV32F là một phần mở rộng của tập lệnh cơ bản R V321 trong kiến trúc RISC-V,b6 sung các lệnh đề thực hiện các phép toán số thực (floating point) RV32F hỗ trợcác phép toán trên số thực chính xác (single precision floating point) theo chuẩn IEEE
754 [4] Bao gồm các lệnh cộng, trù, nhân, chia, căn bậc hai, các lệnh dé chuyén đổigiữa số nguyên tới số thực và các lệnh so sánh
Số thực được biểu diễn dưới 32 bit bao gồm 1 bit dấu , 8 bit số mũ và 23 bit phần
thập phân.
RV32F sử dụng một tập hợp các thanh ghi số thực riêng biệt, ký hiệu từ f0 đến
f31, mỗi thanh ghi rộng 32-bit Được mô tả dưới Bảng 2.3.
Bảng 2.3 Mô tả chức năng thanh ghi RV32F
Tên thanh ghi Chỉ số thanh ghi Chức năng thanh ghi
$ftO - $ft11 f0 - £7, £28 - f31 Thanh phi lưu trữ tạm thời
$fs0 - $fs11 f8 - £9, £18 - £27 Thanh phi đã lưu
$fa0 - $fa7 f10 - f17 Các đối số truyền vào ham
e Load-word và Store-word số thực
Các lệnh load và store số thực dùng base + offset addressing mode như bên số
nguyên, FLW sẽ đọc giá trị từ bộ nhớ đệm tới thanh ghi số thực frd FSW sẽ lưu giátrị số thực từ thanh ghi frs2 tới bộ nhớ đệm
offset[11:5] sre base W offset [4:0] STORE-FP
Hình 2.2 Biéu diễn lệnh Load-word và Store-word số thực
Trang 21- Điều chỉnh: Dé cộng hoặc trừ được 2 số thực cần phải điều chỉnh số mũ của
cả 2 sô vê băng nhau băng cách so sánh, sô mũ nào nhỏ hơn sẽ được điêu chỉnh vê
Trang 22bằng với số mũ kia ( số mũ nhỏ hơn sẽ được tăng thêm và dịch phải tới khi bằng số
mũ lớn hơn).
- Logic dấu: Quyết định bit dấu của kết quả
- _ Đối chỗ, dịch va cộng hoặc trừ phần thập phân: Dựa trên kết quả điều chỉnh
và bit dấu của 2 số mà mô đun này sẽ thực hiện đổi chỗ, dịch và cộng/trừ phần thập
phân.
- Cộng chuẩn hóa: Sau khi có được kết quả cộng/trừ phần thập phân, sẽ phảichuẩn hóa lại kết quả này nếu cần thiết
- Chuẩn hóa: Chuan hóa lại phần thập phân và số mũ nếu cần thiết
- Bộ làm tròn động: Sử dụng guard bit, stick bit và round bit để làm tròn kết
quả tự động.
- Tổng hợp: Tổng hợp bit dấu, số mũ và phần thập phân cuối cùng lại thành 1
số thực 32 bit va cho done bang 1
e Nhân 2 số thực 32 bitTheo Hình 2.4 giải thuật nhân [5] cũng tương tự như giải thuật cộng, cần thêmtín hiệu dé đồng bộ với RISC-V và chia giải thuật ra từng giai đoạn, một số giai đoạn
khác so với thuật toán cộng:
- Kiểm tra trường hợp đặc biệt: Kiểm tra trường hợp đặc biệt và kiểm tra Xhoặc Y bằng 0 Nếu đúng trả về kết quả và done bằng 1, ngược lại đi đến giai đoạn
- Chuẩn hóa: Chuẩn hóa phan thập phân và số mũ nếu cần thiết (tăng và dịch
phải hoặc giảm và dịch trái).
Trang 23e Chia 2 số thực 32 bit
Theo Hình 2.5 giải thuật chia cũng tương tự giải thuật nhân [5], một sỐ trạng thái
khác thuật toán nhân:
- Trừ số mũ: số mũ sẽ được trừ với nhau và cộng cho 127 (bias)
- Chia phần thập phân: phan thập phân sẽ được chia và kết quả sẽ gồm phan
dư và thương số
- Chia chuẩn hóa: phan dư và thương số sẽ được chuẩn hóa 1 lần nữa nếu cần
thiệt trước khi qua chuân hóa cuôi cùng.
10
Trang 24- Bộ làm tròn động: Guard, stick and round bit phục vụ cho làm tròn sẽ được
quyết định dựa trên phần dư và thương số sau khi được chuẩn hóa
Kết quả phần thập phân cuối cùng sẽ là thương số được chuẩn hóa và làm tròn
Hình 2.5 Sơ đồ giải thuật chia 2 số thực 32 bit
e Căn bậc 2 cho 1 số thực 32 bit
- Với giải thuật chia Non-Restoring, ta sẽ tinh được thương số và phan dư cần
tim bằng cách trừ giữa phan dư (kết hợp với 1 đầu vào D (phan thập phân) và thương
số cũ Theo cách như vậy, sẽ tính được 1 bits thương số qua mỗi clock Chính sự tối
ưu về phần cứng cũng như sự đơn giản mà nó được ứng dụng vào tính căn bậc 2 của
1 số thực 32 bit
11
Trang 25- Tuy nhiên dé tính được căn bậc 2 của 1 số thực 32 bit [5] theo format IEEE
754 thì Non-Restoring cần được thay đổi lại như sau:
- Tính bit dấu: bit dau của kết quả sẽ là bit dau của số đầu vào
- Tinh số mũ:
(e— 127) /2 + 127=e/2+63+e%2
- Để tính được số mũ, ta có thé chỉ cần 1 bộ cộng vì e%2 là bit LSB của e
- Tinh phan thập phân : Phần thập phân cuối cùng sẽ bằng thương số cuối cùng
với định dạng là 1.xxx x 24 bit.
- Để phần thập phân sốc có thé áp dụng cho Non-Restoring cần dịch 0 hoặc 1bit phần thập phân dựa vào LSB của số mũ Phần thập phân sẽ bằng 01.xx x hoặc
lx.XX X.
- Bộ trừ trong Non-Restoring sẽ ding bit thương số cũ dé điều khiển Đầu vào
A sẽ là phần dư với D, đầu vào B sẽ là {0, Q, !Qcũ, 1} mỗi giá trị trong này sẽ được
XOR với thương số cũ dé giảm độ sai số
- Kết quả sẽ là phan dư va MSB sau khi NOT sé là bit thương số
- Toàn bộ giải thuật này sẽ tiêu tốn 24 tới 25 chu kì Nhưng thay vì bộ trừ 24 bit
trong 24 chu ki ta có dựa trên đặc tính của Non-Restoring là mỗi clock tính ra 1 bit
thương số, mà có thê pipeline nó với 24 hoặc 25 tầng Mỗi tầng số bit bộ trừ sẽ tănglên 1 nên sẽ làm tối wu critical path và tan số nhất có thê
- Để tối wu latency, số tang pipeline sẽ được rút lại con 14 — 15 tang Vì trong 6tang đầu số bit của bộ trừ không ảnh hưởng đáng kê đến tan số nên hay vì tốn 6 chu
kỳ để tính 6 bit Q thì gộp lại thành 1 tầng tính 6 bit Q, tiếp đó tang 2 sẽ là 3 bit Q,
tầng 3 và 4 là 2 bit, và các tầng còn lại là 1 bit Q
Bảng 2.4 Mô tả số bit trừ và thương số được tính trong mỗi tầng PipelineBits kết quả | Q23-18 | QI7-15 | Q14-Q13] QI2-11 | QI0-0
Bit trừ 1 6 7 0 10 11 12 13 14 24
Chu kì 1 1 1 1 II
12
Trang 26pee | Sait” J2ág3) [ora] #+-ipn-o
ao
22 - 1
¥
phan thap phan Result
Hình 2.6 Sơ đồ giải thuật căn bậc 2 số thực
13
Trang 272.2 So lược về bộ nhớ đệm
Bộ nhớ đệm (Cache) [6] là một bộ nhớ tạm thời sử dụng dé lưu trữ dữ liệu và tậplệnh mà một lõi thường xuyên sử dụng Thay vì truy xuất dữ liệu trực tiếp từ bộ nhớchính, CPU sẽ yêu cầu sử dung dữ liệu được lưu trữ tạm thời giúp cải thiện tốc độ xử
lý của vi xử lý.
Có 2 loại bộ nhớ đệm chính:
- Bộ nhớ đệm dữ liệu (Data Cache): Lưu trữ các dữ liệu được sử dụng thường
xuyên bởi CPU Khi CPU cần truy xuất dữ liệu, nó sẽ gửi yêu cầu đến bộ controller
của bộ nhớ đệm, bộ nhớ đệm kiểm tra dữ liệu đó trong cache là có sẵn hay không.Nếu có, CPU có thé lay dữ liệu từ cache mà không cần truy xuất bộ nhớ chính
- Bộ nhớ đệm lệnh (Instruction Cache): Lưu trữ các mã lệnh mà CPU thực
hiện Giống như bộ nhớ đệm dữ liệu, bộ nhớ đệm lệnh cũng giảm thời gian truy cậpbằng cách cung cấp nhanh chóng các mã lệnh cho CPU khi đã có sẵn trong bộ nhớ
đệm.
Các phương pháp tô chức đữ liệu của bộ nhớ đệm:
- Anh xạ trực tiếp (Direct-Mapped Cache): truy cập dữ liệu nhanh, ít tốn tài
nguyên.
- Anh xạ liên kết toàn phan (Fully associative): việc truy cập sẽ diễn ra một
lúc toàn bộ các Block nên sẽ tốn tài nguyên, thời gian truy cập lâu
- Anh xạ kết hợp (Set associative): là sự kết hợp của hai cách tổ chức trên, cóthời gian truy cập tương đối tốt và có thé quan lý tốt được dit liệu khi bộ nhớ đệmđầy Nên đây là phương pháp phù hợp được lựa chọn cho đồ án này
Các giải thuật thay thế khi bộ nhớ đệm day:
- Random replacement: Thay thé ngẫu nhiên bat kỳ dữ liệu nào khi day cache,không dựa vào lịch sử truy cập nên không yêu cầu lưu trữ lại lịch sử trước đó
- FIFO (First In First Out): Những dữ liệu nào được đưa vào trước thì khi đầycache sẽ được thay thế trước
- LIFO (Last In First Out): Những dữ liệu được đưa vào trước tiên thì khi daycache sẽ được thay thế sau cùng
14
Trang 28- LRU (Least Recently Used): Thuật toán sé thay thé những dữ liệu ít được sudụng nhất khi xuất hiện đầy cache dé thay thế bằng dữ liệu mới Mỗi lần một dữ liệuđược sử dụng, thuật toán sẽ ghi lại thời gian sử dụng cho đến khi cache day dé tiếnhành so sánh thời gian sử dụng cuối cùng của các đữ liệu.
- MRU (Most Recently Used): Thuật toán sẽ thay thé những dữ liệu được sửdụng nhiều nhất khi xuất hiện đầy cache đề thay thé bằng dữ liệu cache mới Mỗi lầnmột dữ liệu được sử dụng, thuật toán sẽ ghi lại thời gian sử dụng cho đến khi cache
đầy đề tiến hành so sánh thời gian được sử dụng cuối cùng của các dữ liệu
- LFU (Least-Frequently Used): Tương tự như LRU, thay vi tính thời gian sử
dụng cuối cùng thì thuật toán này sẽ đếm số lần sử dụng của dữ liệu dé đưa ra quyếtđịnh thay thế dữ liệu nào ít được sử dụng nhất
2.3 So lược về giao thức TileLink
2.3.1 Tổng quát
TileLink [7] là một giao thức liên kết (interconnect protocol) được thiết kế dé kếtnối các thành phần trong hệ thống tích hợp (SoC - System-on-Chip) và các hệ thốngtích hợp nhiều lõi (Many-Core Systems) Giao thức này được phát triển bởi tổ chứcRISC-V International, là một phần của dự án RISC-V, một kiến trúc lõi máy tính mởđược phát triển dựa trên các lệnh mở
2.3.2 Hoạt động cơ bản
Theo Hình 2.7, hai mô đun được kết nói bang liên kết, với một mô đun chứa một
Agent với Master interface và mô đun khác chứa một Agent với Slave interface.
Agent có Master interface gửi một yêu cầu đến Agent có Slave interface Agent cóSlave interface giao tiếp với backing memory nếu cần thiết Sau khi đã nhận được dit
liệu hoặc quyên được yêu câu, Slave phản hôi lại đôi tượng yêu câu ban đâu.
15
Trang 29Request message
Hình 2.7 Mô tả hoạt động cơ ban cua TileLink
Hoạt động của TileLink có thê được phân loại thành ba nhóm:
- Accesses (A) đọc hoặc ghi dữ liệu tại một địa chỉ xác định.
- Hints (H) chỉ mang tính chất cung cấp thông tin và không có tác dụng trực
tiếp
- Transfers (T) di chuyển quyền hoặc bản sao dữ liệu được lưu trong cache
2.3.3 Các kênh của TileLink
Trong mỗi liên kết, giao thức TileLink xác định 5 kênh độc lập nhằm gửi thôngđiệp bởi các A gent Đề tránh tắc nghẽn, TileLink chỉ định mức ưu tiên trong các thông
điệp của các kênh phải được thực hiện nghiêm ngặt.
Hai kênh cơ bản cần thiết để thực hiện các hoạt động truy cập bộ nhớ là:
- Kênh A: Truyền một yêu cầu thực hiện một hoạt động trên một dải địa chỉ cụ
thể, truy cập hoặc lưu trữ bản sao dữ liệu
- Kênh D: Truyền một phản hồi hoặc tin nhắn xác nhận đữ liệu đến Agent yêu
câu ban đâu.
16
Trang 30Cấp độ cao nhất (TL-C) bổ sung ba kênh cung cấp kha năng quản lý quyền truycập vào các khối dữ liệu được lưu trữ tạm thời:
- Kênh B: Truyền một yêu cầu thực hiện hoạt động tại một địa chỉ được lưu trữ
bộ nhớ tạm thời bởi một Master Agent, truy cập hoặc ghi lại dữ liệu được lưu trữ tam
thời đó.
- Kênh C: Truyền thông điệp dữ liệu hoặc xác nhận phản hồi cho một yêu cầu
kênh B.
- Kênh E: Truyền một phản hồi cuối cùng của một khối bộ nhớ tạm thời được
chuyền từ đối tượng yêu cầu ban đầu, được sử dụng cho quá trình tuần tự hóa
Mạng TileLink có thé hỗ trợ kết hợp các Agent giao tiếp, mỗi Agent hỗ trợ các
tập hợp con khác nhau của giao thức.
TileLink bao gồm ba cấp độ:
- TileLink Uncached Lightweight (TL-UL), chỉ hỗ trợ các thao tác đơn giản
cho việc đọc và ghi bộ nhớ (Get/Put) đơn giản.
17
Trang 31- TileLink Uncached Heavyweight (TL-UH), bố sung các Hint khác nhau, các
hoạt động atomic và truy cập burst không hỗ trợ bộ nhớ đệm.
- TileLink Cached (TL-C) là giao thức day đủ, hỗ trợ việc sử dụng bộ nhớ đệm
Bảng 2.5 Phân loại các thao tác theo cấp độ TileLink hỗ trợ
2.3.4.1 Tilelink Uncached Lightweight (TL-UL)
TileLink Uncached Lightweight (TL-UL) là mức tiêu chuẩn TileLink tối thiêu
Nó nhằm mục đích được sử dụng dé tiết kiệm diện tích trong các thiết bị ngoại VIhiệu suất thấp Có hai loại hoạt động có sẵn tới các Agent trong TL-UL Cả hai đều
là hoạt động truy cập bộ nhớ:
- Get: đọc dữ liệu từ backing memory.
- Put: phi dữ liệu vào backing memory.
Trong TL-UL, mọi thông điệp đều nằm trong một beat, không có burst
Bảng 2.6 Mô tả chỉ tiết thông điệp trong giao thức TL-ULThông điệp | Opcode Hoạt động A | D Phản hồi
Get 4 Get X AccessAckData
AccessAckData 1 Get hoặc Atomic x
PutFullData 0 Put X AccessAck
PutPartialData 1 Put X AccessAck
AccessAck 0 Put X
Theo Bảng 2.6, có ba loại thông điệp yêu cầu và hai loại thông điệp phản hồi
liên quan đến hoạt động truy cập bộ nhớ trong TL-UL:
18
Trang 32- Get : là một yêu cầu được thực hiện bởi một Agent muốn truy cập vao mộtkhối dữ liệu cu thé dé thực hiện đọc dữ liệu.
- PutFullData: là một yêu cầu được thực hiện bởi một Agent muốn truy cập
vào một khối dit liệu cụ thé dé thực hiện ghi
- PutPartialData: là một yêu cầu được thực hiện bởi một Agent muốn truy cập
vào một khối dữ liệu cụ thể dé thực hiện đọc dữ liệu PutPartialData có thể được sửdụng để ghi đữ liệu có kích thước bắt kỳ với độ chính xác từng byte
- AccessAckData: đóng vai trò là một thông báo xác nhận và có bao gồm dit
liệu cho yêu cầu ban đầu của Agent
- AccessAck: đóng vai trò là một thông báo xác nhận và không có dữ liệu di
kèm tới yêu cầu ban đầu của Agent
2.3.4.2 TileLink Uncached Heavyweight (TL-UH)
TileLink Uncached Heavyweight (TL-UH) được thiết kế dé sử dung bên ngoài
bộ nhớ đệm, nơi không yêu cầu thao tác chuyền quyền Nó được xây dựng trên
TL-UL băng cách cung cấp các hoạt động bồ sung:
- Atomic: đọc và trả về giá trị dữ liệu hiện có đồng thời ghi một giá trị mới làkết quả của một số phép toán logic hoặc số học
- Hint: cung cấp một gợi ý tùy chọn liên quan đến tối ưu hóa hiệu suất
- Burst: Cho phép các thông điệp có dit liệu lớn hơn chiều rộng của dây bus
truyền dữ liệu nên được truyền dưới dạng các chuỗi xuất hiện trong nhiều chu kỳ Áp
dụng cho các thông điệp chứa dữ liệu khác nhau trong các hoạt động Get, Put va
Atomic.
Bang 2.7 Mô ta chi tiết các thông điệp được bồ sung trong giao thức TL-UHThông điệp Opcode Hoạt động A D Phan hồi
ArithmeticData 2 Atomic x AccessAckData
LogicalData 3 Atomic X AccessAckData
Intent 5 Intent x HintAck
HintAck 2 Intent x
19
Trang 33Theo Bảng 2.7 thì có thêm ba thông điệp yêu cầu và một thông điệp phản hồiđược bồ sung vào TL-UH so với TL-UL:
- ArithmeticData: là một yêu cầu được thực hiện bởi một Agent muốn truy cập
vào một khối dữ liệu cụ thé dé đọc - sửa - ghi thông qua việc áp dụng một hoạt động
số học (MIN, MAX, MINU, MAXU, ADD)
- LogicalData: là một yêu cầu được thực hiện bởi một Agent muốn truy cậpvào một khối dữ liệu cu thé dé đọc - sửa - ghi thông qua việc áp dụng hoạt động logic
theo bit XOR, OR, AND, SWAP).
- Intent: là một yêu cầu được thực hiện bởi một Agent muốn báo hiệu ý địnhtruy cập vào một khối dit liệu cụ thé trong tương lai (PrefetchRead, PrefetchWrite)
2.3.4.3 TileLink Cached (TL-C)
TL-C cung cấp cho các Master Agent khả năng lưu trữ bộ nhớ đệm của các khối
dtr liệu được chia sẻ.
TL-C bồ sung thêm ba hoạt động mới được gọi là transfer vì chúng chuyên một
bản sao của khối dữ liệu đến một vị trí mới trong hệ thống phân cấp bộ nhớ:
- Acquire: Tạo một ban sao mới của một khối (hoặc các quyền cụ thê đối với
khối đó) theo yêu cầu của Master
- Release: Từ bỏ một ban sao của khối (hoặc các quyền cụ thể trên đó) trở lạiSlave theo yêu cầu của Master
- Probe: Buộc loại bỏ một bản sao của khối (hoặc các quyền cụ thê trên khốiđó) từ Master theo yêu cầu của Slave
Bảng 2.8 Mô tả chỉ tiết các thông điệp trong giao thức TL-C
Thông điệp | Opcode | Hoạt động |A|BIC|DIE Phản hồi
Acquire 6 Acquire X Grant, GrantData
Grant 4 Acquire X GrantAck
GrantData 5 Acquire X GrantAck
GrantAck Acquire x
20
Trang 34Probe Probe ProbeAck,
: * ProbeAckData
ProbeAck 4 Probe x
ProAckData 5 Probe X
Release 6 Release X ReleaseAck
ReleaseData 7 Release X ReleaseAck
ReleaseAck 6 Release X
- Acquire: là loại thông điệp yêu cầu được sử dung bởi Master Agent có cache
để lấy bản sao của khối dữ liệu mà nó dự định lưu vào cache riêng Master Agentcũng có thé sử dụng loại thông điệp này dé nâng cấp các quyền mà nó có trên một
khối đã thuộc quyền sở hữu của nó (như có được quyền ghi trên một bản sao chỉ cóquyền đọc) Giống như thông điệp Get, bản thân thông điệp Acquire không chứa dữ
liệu.
- Grant: vừa là thông điệp phản hồi vừa là thông điệp yêu cầu được sử dụngbởi Slave Agent dé xác nhận việc nhận được yêu cầu và cung cấp quyền truy cập vàokhối cache cho Master Agent theo yêu cầu ban dau
- GrantData: vừa là thông điệp phản hồi vừa là thông điệp yêu cầu được sửdụng bởi Slave Agent dé cung cấp xác nhận cùng với bản sao của khối dữ liệu choMaster Agent theo yêu cầu ban đầu
- GrantAck: là thông điệp phản hồi được Master Agent sử dụng dé cung cấpxác nhận cuối cùng về việc hoàn thành giao tiếp và đến lượt nó được sử dụng đề đảm
bảo tuần tự hóa toàn cục các hoạt động của Slave Agent
- Probe: là thông điệp yêu cầu được sử dụng bởi Slave Agent dé truy van hoặcsửa đôi các quyền của bản sao được lưu trong cache của khối dữ liệu được lưu trữ bởi
Master Agent cụ thé Slave Agent có thé thu hồi quyền của Master Agent trên cache
dé đáp ứng các yêu cau từ Master khác hoặc theo ý muốn của chính nó
- ProbeAck: là thông điệp phan hồi được Master Agent sử dụng dé xác nhận
việc nhận Probe.
21
Trang 35- ProbeAckData: là thông điệp phản hồi được Master Agent sử dụng dé xácnhận việc nhận Probe và ghi lại dữ liệu mà Slave Agent yêu cầu.
- Release: là thông điệp yêu cầu được sử dụng bởi Master Agent dé tự giảm
quyền của nó trên khối dit liệu được lưu trong cache
- ReleaseData: là thông điệp yêu cầu được sử dụng bởi Master Agent dé tự
giảm quyền của nó trên khối đữ liệu được lưu trong cache và ghi lại đữ liệu mà Slave
Agent yêu cầu.
- ReleaseAck : là thông điệp phản hồi được sử dụng bởi Slave Agent dé xácnhận việc nhận một Release[Data] và đến lượt nó được sử dụng dé đảm bảo tuần tự
hóa toàn cục các hoạt động của Slave Agent.
2.4 Sơ lược về Crossbar
Crossbar là một cau trúc phan cứng được sử dụng rộng rãi trong các hệ thốngmạch tích hợp (SoC) dé cung cấp khả năng kết nói linh hoạt và hiệu quả giữa cácthành phần khác nhau như bộ xử lý, bộ nhớ và các thiết bị ngoại vi Crossbar switch
có thé thiết lập nhiều kết nối đồng thời giữa các đầu vào va đầu ra, cho phép truyềntai dir liệu nhanh chóng và giảm thiéu độ trễ
Trong thiết kế crossbar, sự thách thức về tài nguyên, tốc độ và băng thông lànhững thứ quan trọng nhất cần phải được tối ưu Vì vậy việc lựa chọn giải thuật phân
xử và định thời cho tùy loại hệ thống là cần thiết
Dé giải quyết các van đề về deadlock, phân xử độ ưu tiên và phù hợp với hệ thống
NoC thì giải thuật định thời Round - Robin và giải thuật phân xử độ ưu tiên sẽ đáp
ứng được những yêu cầu đã đặt ra
Hiện nay, các giải thuật phân xử độ ưu tiên có 1 số giải thuật nổi bật như Ripple
carry arbiter (RCA), Rectilinear Propagation arbiter (RPA), Diagonal Propagation
arbiter (DPA) Trong đó giải thuật DPA là giải thuật tối ưu nhất cả về hiệu năng
và khả năng phân xử.
2.5 So lược về Network on Chip
Network-on-Chip (NoC) là một kiến trúc mang được sử dung dé cung cấp kết nốigiữa các thành phần khác nhau trong một mạch tích hợp NoC giống như một mạng
22
Trang 36máy tính nhỏ trong chip, với các nút được kết nối để truyền tải dữ liệu và tín hiệuđiều khiển giữa các lõi xử lý, bộ nhớ, các IP core và các thiết bị ngoại vi khác.
Đặc điểm chính của NoC:
- Cấu trúc mạng: NoC thường có cau trúc mạng lưới hoặc hình sao, trong đó
các nút (node) được kết nối với nhau qua các kênh liên kết (link)
- Định tuyến (Routing): NoC sử dụng các thuật toán định tuyến dé xác địnhđường đi tối ưu cho dé liệu từ nút nguồn đến nút đích thông qua mang lưới
- Giao thức truyền thông: Các giao thức truyền thông trong NoC như TileLink,AXI, AMBA, được sử dụng dé quan lý truyền thông giữa các nút, đảm bảo độ tincậy và hiệu suất cao
- Băng thông và hiệu suất: NoC cung cấp băng thông lớn và giảm độ trễ so vớicác phương pháp kết nối truyền thống như bus hoặc point-to-point connections
- Khả năng mở rộng: Thiết kế linh hoạt của NoC cho phép dé dang mở rộngbang cách thêm nút mới mà không ảnh hưởng đến hiệu suất tông thé của hệ thống
Ứng dụng của NoC:
- - Hệ thống nhúng (Embedded systems): Được sử dụng rộng rãi trong các thiết
bị nhúng nơi cần kết nối giữa các thành phan xử lý, bộ nhớ và các giao diện ngoại vi
- Hé thống da lõi (Multi-core systems): NoC hỗ trợ việc kết nối các hệ thống
đa lõi và quản lý truyền thông giữa chúng, cải thiện hiệu suất và tính mở rộng của hệthống
- Hệ thống trên chip (System-on-Chip - SoC): Tạo ra sự tích hợp cao độ cácthành phần khác nhau trên cùng một vi mạch, bao gồm CPU, GPU, DSP và các thành
phần vi xử lý khác.
23
Trang 37Chương 3 HIEN THỰC THIẾT KE
3.1 Thiết kế lõi vi xử lý RISC-V RV32IMF
Trang 38- Tầng Execute: thực thi tính toán các phép toán logic, số học và địa chỉ lệnh
rẽ nhánh theo đúng lệnh được nạp.
- Tầng Memory: Yêu cầu ghi hoặc đọc dữ liệu từ bộ nhớ dữ liệu
- Tầng WriteBack: ghi lại dữ liệu vào thanh ghi đích (rd) khi cần thiết
Việc xây dựng theo kiến trúc pipeline 5 tầng mang lại ưu điểm và khuyết điểm
như sau:
- - Ưu điểm: Sử dụng kĩ thuật pipeline sẽ làm giảm tổng thời gian thực thi của cả
chương trình hay tập hợp các lệnh.
- Nhược điểm: Kĩ thuật pIpeline có thể tạo ra các xung đột (trạng thái mà lệnh
kế tiếp không thể thực thi liên tục trong chu kỳ pipeline) Có 2 loại xung đột thường
gap:
+ Xung đột dữ liệu (Data hazard): xảy ra khi dữ liệu cho lệnh hiện tai chưa
có do chưa tính toán xong hoặc đã tính toán xong nhưng chưa được nạp vào thanh ghi đích.
+ Xung đột điều khiến (Control/Branch hazard): xảy ra khi một lệnh dựkiến không thể thực thi trong đúng chu kỳ pipeline của nó do lệnh nạp vào khôngphải là lệnh cần Trường hợp này xảy ra khi luồng thực thi chứa các lệnh nhảy và rẽ
nhánh.
Dé có thể xây dựng kiến trúc pipeline 5 tang cần có 4 thanh ghi Pipeline Register
Các thanh ghi này hoạt động như một bộ nhớ đệm có chức năng giữ dữ liệu hoặc xóa
dữ liệu và xử lý xung đột các mã lệnh trong các giai đoạn khác nhau của pipeline.
Xây dựng thêm các khối chức năng dé giải quyết các xung đột khi pipeline baogồm:
- Khối BRU [9]: giải quyết xung đột về mặt điều khiến sử dụng giải thuậtBranch Prediction để dự đoán điều kiện rẽ nhanh Nếu dự đoán đúng các lệnh sẽ thực
thi bình thường mà không tốn chu kì nào, ngược lại nếu sai sẽ tốn 2 chu kì và yêu cầu
về phan cứng sẽ phức tạp hơn Dé có độ chính xác cao đồ án này sử dụng DynamicBranch Prediction dé có thể linh hoạt trong việc dự đoán kết quả Kết hop BranchTarget Buffer (BTB) với Pattern History Table (PHT) và thanh ghi Gshare để lưu trữ
25
Trang 39địa chỉ rẽ nhánh cùng với lịch sử quyết định rẽ nhánh và có thé truy cập nó bằng PCcho lần tiếp theo dé dựa vào đó có thé dự đoán được PC kế tiếp là rẽ nhánh hay PC +
4 Tại giai đoạn Excute nếu 1 lệnh branch xảy ra thì BTB, PHT và Gshare sẽ đượcupdate Nếu dự đoán sai xảy ra sẽ phải xóa lệnh đã được nạp ở giai đoạn IF, ID đểnạp lại đúng lệnh cần thiết
+ BTB [9]: Lưu trữ địa chỉ rẽ nhánh theo từng chỉ mục (tag) của PC Dựatrên số bit của PC tùy người sử dụng quyết định mà BTB sẽ có số bit, số dòng và chỉ
mục khác nhau.
26
Trang 40Taken
Í Strongly
mm Not Taken aken
| Weakly Not Strongly Not
Hình 3.3 Sơ đồ kiến trúc tổng quan của PHT
+ PHT [9]: Lưu quyết định rẽ nhánh theo từng địa chỉ của PC Các quyếtđịnh rẽ nhánh sẽ được cập nhập theo một bộ đếm trạng thái gồm 2 bit Ý tưởng của 2bit dự đoán này là khi dự đoán sai 2 lần sẽ cập nhập lại quyết định rẽ nhánh Taken
hay Not Taken Việc này sẽ tăng độ chính xác hơn là dự đoán 1 bit cho always Taken, always_not_taken hoặc Taken_NotTaken
27