TOM TAT KHÓA LUẬNNội dung chính của khóa luận xoay quanh công việc nghiên cứu và thiết kế bộ vi xử lý RISC-V theo kiến trúc superscalar song luông, sau đó là tích hợp bộ nhớ đệm Cache As
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
TRAN QUOC TRUONG
LE PHUOC NHAT NAM
KHOA LUAN TOT NGHIEP
THIET KE VA HIEN THUC BO VI XU LY RISC-V 32
BIT SỬ DUNG KIEN TRÚC SUPERSCALAR HO TRỢ
BO DIEU KHIEN CACHE ASSOCIATIVE 4-WAY VA
DON VI QUAN LY BO NHO TREN FPGA.
DESIGN AND IMPLEMENT A 32 BIT, SUPERSCALAR RISC-V
PROCESSOR WITH THE 4-WAY ASSOCIATIVE CACHE
CONTROLLER AND MEMORY MANAGEMENT UNIT ON
FPGA
KỸ SU NGÀNH KY THUAT MAY TÍNH
TP HO CHÍ MINH, 2022
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
TRAN QUOC TRUONG - 18521574
LE PHUOC NHAT NAM -18521122
KHOA LUAN TOT NGHIEP
THIET KE VA HIEN THUC BO VI XU LY RISC-V 32 BIT SU DUNG KIEN TRUC SUPERSCALAR HO TRO
BO DIEU KHIEN CACHE ASSOCIATIVE 4-WAY VA
DON VI QUAN LY BO NHO TREN FPGA.
DESIGN AND IMPLEMENT A 32 BIT, SUPERSCALAR RISC-V
PROCESSOR WITH THE 4-WAY ASSOCIATIVE CACHE
CONTROLLER AND MEMORY MANAGEMENT UNIT ON
FPGA
GIANG VIEN HUONG DAN
Th.S Pham Thanh Hùng
TP HO CHÍ MINH, 2022
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 526/QD-DHCNTT
ngày 19 tháng Ø7 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LOI CAM ON
Lời đầu tiên, nhóm xin gửi lời cảm ơn chân thành đến thầy hướng dan - Thạc si Phạm Thanh Hùng, thầy đã tận tình trong quá trình làm khóa luận, cung cấp các trang thiết bị, cũng như dành nhiều thời gian chỉnh sửa, góp ý giúp nhóm có thể hoàn thành
khóa luận một cách tốt đẹp.
Bên cạnh đó, nhóm cũng xin gửi lời cảm ơn đến Thay/Cé và bạn bè khoa Kỹ thuật
máy tính nói riêng và trường Dai học Công nghệ Thông tin — Đại học quốc gia Thành
phố Hồ Chí Minh nói chung đã tận tình giảng dạy, truyền đạt các kiến thức vô cùng bổ ích, cùng đồng hành và hỗ trợ trong suốt quá trình học tập tại trường Đại học Công nghệ
Thông tin Những kiến thức và kinh nghiệm quý báu đó là tài sản vô giá đối với quãng
đường tương lai của nhóm.
Cuối cùng, xin dành lời cảm ơn sâu sắc đến ba mẹ và gia đình vì đã luôn sát cánh,
động viên, tạo điều kiện và là chỗ dựa tinh thần vững chắc trên con đường học tập của
Một lần nữa nhóm xin chân thành cảm ơn.
TP Hồ Chí Minh, ngày 25 tháng 07 năm 2022
Sinh viên thực hiện
Trần Quốc Trưởng
Lê Phước Nhật Nam
ii
Trang 52.1.3 Các tập lệnh và tập thanh ghi được sử dụng trong hệ thống 4 8
2.2 Bộ nhớ đệm - Cache -:- 2c tt 12t 98213511 1 11351151111 1511 51511111 rkre 11
2.2.1 Giải thuật FIFO để cấp phát bộ nhớ ¿¿©c++225s+czczsscez 12
2.2.2 Phương pháp cập nhật lại bộ nhớ chính -. - + +5 5++s<>+<+ 12
2.2.3 Ưu điểm và lý do chọn Cache associative 4 - way ccccccec 13
2.3 Đơn vị quản lý bộ nhớ - MM - 6c S3 key 16
2.3.1 Cách thức hoạt động ¿- 5 5252222 2E2kkrrrrrrerrrrrree 16
2.3.2 Chức năng -.Lc nh 0.1 rệt 18
Chương 3 — Thiết kế vi xử lý RISC-V 22¿¿22222++t2EESErrrtEEkvrrrrrrrrrrrrrrrvee 20 3.1 Mô tả tổng quan hệ thống -2¿-©2++¿+22E+++t2EEEEE+ttEEEEvrttrrkrrrerrkrrrrrr 20 3.2 Thiết kế vi xử lý RISC-V -2-:¿-22222 222 22222111112 0 1 22
3.2.1 Khối CPU_MeM_SCal aL 11t EEk kg 22
3.2.2 Khốipc_scalar 52 +cc2EEEErEEEEEECEEEErrrrrrrrrrvee 23 3.2.3 Khối issuing ccc2 22v 2E 2E cv 25 3.2.4 Khối fowarding logic -22cccccccrrrrrrrrrerrrrecrrrrrrvee 26
3.2.5 Khối ALU ccerrrihtrrrririrrrrrrririrrrrrree 28
Trang 63.2.6 Khốils logic
3.2.7 Khối branch :2222++222EEEEEEEEEEtEEEEErrrrtrkrkrrrrrrvee 3 3.3 Thiết kế MMU
3.3.1 _ Tổng quan MMU -2¿-2222++ttEEEEketrtrrrtrerrrkrrrerrrrecrrrrve 3.3.2 Khoi MMU
3.4 Thiết kế Cache -22++2222v2222221121222111222211112.221111 212111 34 3.4.1 _ Tổng quan Cache cc:5ccccceccvsereerrteerrrrrrrecsrrrecre.r 24 3.4.2 Khối Cache cccc2 2222222221 2222111221111 crrve 36 Chương 4 Mô phỏng và đánh giá thiết kế -2¿¿©2222++222Evvrtecvvvrrrrrrrrvee 38 4.1 Thiết kế mô hình kiỂm thử -¿¿ 222+++222E2VV222++++t2EEEEEEErrrtrrrrrrrrrrrrrrrrrr 38 4.1.1 Khốiriscv ìà 2222 39
4.12 Khốiimem ccccccc2ECCCEEverrrrtrrrkrtrrrrrrrrrrrrrrerrree 40 4.13 Khối dmem cccccccccCcEErreerrrrrrrrrrreerree 41
4.2 Mô phỏng tập lệnh - - ¿5+ 6 St kề HH 121200 001g 42
4.2.1 Thiết kế mô hình kịch bản kiểm thit ccccccsccccssssseessssssecessssecessseeseessneee 42 4.22 Nạp tập lệnh vào 3100810 01177 44 4.2.3 Kết quả mô phỏng -2222222++222EEEEEEEittEEEEEkrrrrrrrrrrrrrrrree 44
4.3 Kết quả tổng hợp, thực thi và đánh giá thiết kế -c+ccvcccceccrrrree 70 4.3.1 _ Kết quả tổng hợp, thực thi của khối riscV ¿-52+cc+ccvsecesrz 70 4.3.2 Đánh giá thiết kế ccccc222C2EEErrrirtEEEEEkrrrrrrrrrrrrrrrrree 72
Trang 75.4 Các IP của Xilinx dùng trong thiết kế Block Design
5.4.1 IPMicrobalze giao tiếp với local memory -ccc:+2cccveez 78
5.4.2 IP AXI Uart Lite.
5.5 Kết quả tổng hợp thực thi của Block Design sssscsssssssesssssseeesssseesssssseesesssseeeee 79 Chương 6 Kết luận và hướng phát triển
GL, KGt Wan nh 82 6.2 Ưu điểm và hạn chế của thiết K6 ccccccssssscssssssescsssseescsssssecssssusessssuseeesssieecessseseee 82 6.3 Hướng phat triỀn -22++2222+2+t2222112222211122221111221211 22111 tk ri 83
IV )00i0697),804./ 0 .Ắ ốẮ 84
Trang 8DANH MỤC BẢNG
Bảng 2.1: Bang các tập lệnh cơ sở và mở rộng của RISC-V ¿5cccccsrvrvexee 5
Bảng 2.2: Tập lệnh của vi xử lý RISC-V -cSn thu § Bảng 2.3: Tập thanh ghi của vi xử lý RISC-V 6 Set tren 10 Bang 2.4: Mô tả các thành phần một khối của Cache - - ¿z2 11
Bang 2.5: Kết qua năng lượng tiêu thụ trung bình và thời gian tiêu thụ trung bình”? 15
Bảng 2.6: Tập thanh ghi đặc biệt của vi xử lý RISC-V - 5c ccccststsrerrrree 16 Bảng 2.7: Tập lệnh đặc biệt của vi xử lý RISC-V - cà Street 16
Bảng 3.1: Tín hiệu của khối CPU_MeM_SCal aL 5-5 SE *‡Ekveekeekrrrrerrre 22
Bảng 3.2: Tín hiệu của khối pc_scalar 2¿©222+++22222++tSEEEEE2SEEEErrrtrrkrrrrrrkrvee 24 Bảng 3.3: Tín hiệu của khối issuing -.-¿ 2222222222 22222322233 teEEEEvrrrrrrrrrrrrrrrvee 26 Bang 3.4: Mô tả tín hiệu khối forwarding logic -.- :: 22cvccccescccvvvvvccrerrrrrr 27 Bang 3.5: Tín hiệu của khối aÌu -:¿¿-522222222++z222EEEEEYvrttEEEEkkrrrirtrrrtrrkrrrrrerrri 29 Bảng 3.6: Các phép tính của khối alu 29
Bang 3.7 Mô tả tín hiệu khối Is_logic
Bảng 3.8: Mô tả tín hiệu của khối Branch
Bang 3.9: Tín hiệu của khối MMU 33 Bang 3.10: Tín hiệu của khối cache _2port sscccscsssessssssssesscssssecsessseesssssuseesssssecesssueseessseeees 36
8 N0 0.0 an ẽ.ẽ.ẽ (-gÄậäẴHẬH)H, 39 Bang 4.2: Tín hiệu khối imem 22:+£©2V©VVv2+++2222EEEEY22222221111121.212111112 ecrrrrg 40 Bảng 4.3: Tín hiệu khối dmem 22: 2+©EE+++2EEE+++tEEEEEvttEEEEEvetrrkrrrrrrrrrrrrrg 41
Bang 4.4: So sánh kết qua đạt được với hai công trình khóa luận trước đây 72
vi
Trang 9DANH MỤC HÌNH
Hình 2.1: Định dạng lệnh của RISC-VIÍ, - ¿-5++2x+Ex2Y23122157121211211211211 212121 re 7
Hình 2.2: Các thành phan trong một khối của Cache -c++222vvvveccczrrrr 11
Hình 2.3: Tim 6 nhớ của các phương pháp: Trực tiếp, Tồn phan, Kết hop 14
Hình 3.1: Các giai đoạn thực thi của vi xử lý sau khi tích hợp Cache và MMU 20 Hình 3.2: Khối CpU_ H€T_SCãÏäT 5525 S252 SE S£E#ESEEEEEEEEEEEEEErkEErrerrkrkrkrrrrre 22
Hình 3.3: Khối pc salar -22-©22222922E2++92E2211122221112221111222211112221112221111 2221 xe 23 Hình 3.4: Khối issuing -2+-22222222222++t2E22111222211122711111721111227111222111 1 xe 25
Hình 3.5: Khối forwarding logic csccccsssssesssssssesssssssessssssecsessseesessssscsesssiseesssseeessssseseeessees 26 Hình 3.6: Khối aÏu -22222222vvEvvrvvvtrrrrrrrrrrt 11 T re 28
Hình 3.7: Khối Is_logic -222222222+22222EEE 2222111 rrrrrii 30 Hình 3.8: Khối branch ¿522222++22ES+++2EEEE++22221111222331122211112212112222112 22 ve 31
Hình 3.9: Sơ đồ khối đơn vi quản lý bộ nhớ -222222vvvvvvvvvvvrrerrerrrrrrrrrrrree 32
Hình 3.10: Khối MMU -.¿2:¿¿2222222222222222111 2222221111112 reo 33 Hình 3.11: Sơ đồ khối bộ nhớ đệm
Hình 4.5: Mơ hình các kịch bản kiêm thử - - + 5+ **k‡*‡E‡EkEkEkekekrrrkrkerrrrrkrkrke 42
Hình 4.6: Quá trình nạp tập lệnh vào khối imem -2- 2s +‡EEtEEEEEEEEEEEEEkkerkrerkree 44
Hình 4.7: Đoạn câu lệnh trong “Test 1”
Hình 4.8: Chương trình “Start” và xử lý ngoại lệ lỗi trang của “Test 1” - 46
Hình 4.9: MMU khi xảy ra ngoại lệ lỗi trang -::-©+:c222vvvttvEtxvrrrrrrtrrrrrrrree 47
Hình 4.10: MMU Page Table sau khi thực hiện chương trình “Exc_ tesf” - 48 Hình 4.11: Chương trình “Main” và xử lý ngoại lệ Syscall của “Test l” - 49 Hình 4.12: Chương trình “Main” của “Test Ï”” - ¿65c 5xcc+tertetererrrterrrrrerrree 50
Hình 4.13: Register File của “Test 1” từ phần cứng và cơng cụ kiểm thử 51
Hình 4.14: Đoạn câu lệnh trong “Test 2”” -¿-¿- - St S+S+ k2 221211211111 re 52
vii
Trang 10Hình 4.15: Chương trình “Start” trong “Test 2”
Hình 4.16: Chương trình “Main” trong “Test 2”
Hình 4.17: Register File của “Test 2” từ phần cứng và công cụ kiểm thử 55
Hình 4.18: Doan câu lệnh trong “Test 3” cccccsceeseeseseseseeesseseecseseseseseseesesessseseeeaeen 56 Hinh 4.19: Chuong trinh “Start” trong “Test 3” Hinh 4.20: Chuong trinh “Main” trong “Test 3” Hình 4.21: Hoạt động của Cache khi hệ thống yêu cầu dữ liệu có sẵn trong Cache 59
Hình 4.22: Register File của “Test 3” từ phan cứng và công cụ kiểm thử - 60
Hình 4.23: Doan câu lệnh trong “Test 4”” ¿- - + S211 2111111111711 tri 61 Hình 4.24: Chương trình “Start” trong “Test 4” -¿cccs+cekskserrrrersrerrerkrerrril 62 Hình 4.25: Cache và MMU khi thực hiện chương trình ““Starf” - - «+ << 63 Hình 4.26: MMU Page Table sau khi thực hiện chương trình “Start” trong “Test 4” 64
Hình 4.27: Chương trình “Main” trong “Test 4” + s+s+sscexsesereererersrrevrerererril 65 Hình 4.28: ICache và DCache khi thực thi chương trình “Main” trong “Test 4” 66
Hình 4.29: MMU khi thực thi chương trình “Main” trong “Test 4” -. - 67
Hình 4.30: Các giai đoạn của CPU khi thực thi chương trình “Main” trong “Test 4” 68
Hình 4.31: Register File của “Test 4” từ phần cứng và công cụ kiểm thử 69 Hình 4.32: Tài nguyên sử dụng của khối ris€V -2¿+++z+222E++ztttvzxzerrrrrscee 70
Hình 4.33: Xung clock chính trong khối risev - ¿z2z++22v+z222v+vee+tzsscee 70
Hình 4.34: Phân tích Timing cho khối riscv
Hình 4.35: Báo cáo năng lượng tiêu thụ của khối risev - -¿++22sccz+ccsscee 71
Hình 5.1: Kiến trúc chung của giao thức AXI4 -ccc-¿¿2222©vvveceetrrrrrkrreerrrrrrer 74
Hình 5.2: Một transaction đọc của giao thức AXI44 «5: S+ttttteghướn 75 Hình 5.3: Một transaction ghi của giao thức AXI4 ¿+55 c+cscstzesrerereree 76
Hình 5.4: Thiết kế tổng quan của Block Design -2 222+2222+2zttvvzveerrrrrscee T7 Hình 5.5: Block Design trên phần mềm Vivado -:-¿2v+zz222vs+ze+zvvscee 78 Hình 5.6 IP Microblaze giao tiếp với IP Local memOry - -: :©cs+cz+2cssc+z 78
Hình 5.7: Khối IP Uart Lite -52c2cvv2vvcvccttc22222222222E21 1E tre 79
Hình 5.8: Phân tích Timing cho Block Design 5252555525 S+S+2++x+xexsxerscxe 80 Hình 5.9: Tài nguyên sử dụng trong Block Design - ¿+55 csc+c+veceesreeeee 80
Trang 11Hình 5.10: Báo cáo năng lượng tiêu thụ của Block Design
ix
Trang 12DANH MỤC TỪ VIẾT TẮT
ALU Arithmetic Logic Unit Khối số học logic
Cache Cache Bộ nhớ đệm
CPU Central Processing Unit Bộ xử lý trung tâm
DCache Data Cache Bộ nhớ đệm dữ liệu
Vi mạch tích hợp cỡ lớn dùng cầu
FPGA Field Programmable Gate Array trúc mảng phần tử logic mà người
dùng có thé lập trình
MMU Memory management unit Don vi quan lý bộ nhớ
loT Internet of Things Internet vạn vật
ICache Instruction Cache Bộ nhớ đệm lệnh
RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên
RISC | Reduced Instruction Set Computer | May tính với tập lệnh đơn giản hóa
Trang 13TOM TAT KHÓA LUẬN
Nội dung chính của khóa luận xoay quanh công việc nghiên cứu và thiết kế bộ vi xử
lý RISC-V theo kiến trúc superscalar song luông, sau đó là tích hợp bộ nhớ đệm (Cache Associative 4-way) hỗ trợ cải thiện tốc độ truy xuất dữ liệu và đơn vị quản lý bộ nhớ
(MMU) hỗ trợ việc truy xuất bộ nhớ chính.
Bộ nhớ đóng vai trò cung cấp các lệnh và dữ liệu cho các chương trình đang thực
thi trong Bộ xử lý (Central Processing Unit - CPU) Do đó, tốc độ truy xuất bộ nhớ có
ảnh hưởng quan trọng đến hiệu suất của hệ thống máy tính Tuy nhiên, các bộ nhớ có tốc
độ truy xuất càng nhanh thì giá thành càng cao Vì vậy, tổ chức một hệ thống bộ nhớ hợp
lý sao cho có thể truy xuất các thành phần cần cho các chương trình một cách nhanh
chóng nhất là một yêu cầu cấp thiết.
Các máy tính ngày nay sử dụng kiến trúc bộ nhớ phân cấp — một kiến trúc bộ nhớ
nhiều lớp bộ nhớ khác nhau các về mặt dung lượng và tốc độ truy xuất dữ liệu Bộ nhớ
có tốc độ truy xuất nhanh hơn sẽ có giá thành trên một đơn vị bộ nhớ cao hơn, do đó các
lớp bộ nhớ có tốc độ truy xuất nhanh sẽ có dung lượng nhỏ trong hệ thống bộ nhớ phân cấp Các hệ thống máy tính ngày nay thường có nhiều lớp bộ nhớ khác nhau nhưng
chúng có thể được chia thành hai lớp chính là bộ nhớ đệm (Cache), Bộ nhớ chính (Main
Memory).
Cache đóng vai trò rất quan trọng trong việc nâng cao hiệu suất của Bộ xử lý bởi vì
tốc độ của các Vi xử lý ngày nay nhanh hơn Bộ nhớ chính rất nhiều tạo nên nhu cầu có
một lớp bộ nhớ trung gian có tốc độ truy xuất dữ liệu cao nhằm giảm thời gian truy xuất
dữ liệu giữa Vi xử lý và Bộ nhớ chính.
Bộ nhớ chính trong các kiến trúc máy tính ngày nay thường được phân vùng để lưu trữ và bảo vệ dữ liệu, nhiệm vụ này được hệ điều hành đảm nhiệm Từ đấy sinh ra nhu cầu về việc hiện thực một đơn vị quan lý bộ nhớ (MMU) nhằm hỗ trợ vi xử lý truy xuất
đữ liệu và bảo vệ Bộ nhớ chính.
xi
Trang 14Việc tích hợp bộ nhớ đệm (Cache) và đơn vị quản lý bộ nhớ (MMU) vào vi xử lý
RISC-V và vai trò của chúng trong hệ thống là hướng nghiên cứu chính trong khóa luận
này.
xi
Trang 15Chương 1 Giới thiệu đề tài
1.1 Tổng quan đề tài
Ngày nay, thuật ngữ Internet of Things (IoT) không còn xa lạ mà đã trở thành
xu hướng phát triển nóng ở quy mô công nghiệp Xu hướng này sẽ ảnh hưởng đến
mọi mặt của đời sống con người, từ các vấn đề cá nhân (thông qua Smart các thiết bị thông minh cá nhân, Smart Home - ngôi nhà thông minh, eHealth-các
Wearable-thiết bị chăm sóc sức khỏe ) cho đến các vấn đề xã hội và doanh nghiệp (thông qua
Smart City: thành phố thông minh, Smart environment - môi trường thông minh,Smart Enterprise- doanh nghiệp thông minh, Industrial control — điều khiển côngnghiệp ) Đề phục vụ cho sự phát triển của IoT, một số lượng lớn các thiết bị đang
và sẽ được tạo ra, kết nối với nhau Theo những nghiên cứu mới nhất, số lượng thiết
bị IoT toàn cầu đã lên tới hơn 7 ty thiết bị, con số này đã vượt qua số thiết bị diđộng sử dụng trên toàn cau Cụ thê, theo IoT Analytics, số lượng thiết bị IoT trên
toàn cầu là hơn 7 tỷ thiết bị vào năm 2018 và ước tính sẽ có 22 tỷ thiết bị vào năm
2025 Trong khi đó, theo Gartner, số lượng thiết bị IoT trên toàn cầu là 14.2 tỷ thiết
bị vào năm 2019 và ước tính sẽ có 25 tỷ thiết bị vào năm 2021
Các thiết bi dùng trong mạng IoT hầu hết đều tích hợp ít nhất một bộ vi xử lý
dé phuc vu cho viéc kết nối, thu thập, xử lý, điều khiến, lưu trữ va truyền tải dữ liệu,
cũng như đưa các quyết định tương tác ngược lại với bên ngoài Do đó nhu cầu sốlượng vi xử ly còn cao hon sé luong thiét bi IoT Cộng thêm là các thiết bị dùngtrong mạng IoT yêu cầu vi xử lý cần có hiệu năng đa dạng từ thấp đến cao nhưngvới chi phí thấp và đặc biệt là phải tiết kiệm năng lượng Điều đó đặt ra những thách
thức mới cho các nhà sản xuất thiết bị khi lựa chọn các bộ vi xử lý cho thiết kế của
mình.
Thứ nhất, hiện tại những công ty thành công với kiến trúc tập lệnh của mìnhđang thống trị thị trường vi xử lý như Intel, ARM, IBM, đều có những bằng sángchế trên kiến trúc tập lệnh mà họ đang sở hữu, do đó các công ty này đều tính phíbản quyền đối với việc sử dụng kiến trúc tập lệnh của các công ty này đồng thời
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 1
Trang 16ngăn cam việc thiết kế các bộ vi xử lý sử dụng kiến trúc tập lệnh của họ nếu không
được họ cấp phép Bất kì một thỏa thuận nào liên quan đến bản quyền sử dụng kiến
trúc tập lệnh đều phải tốn từ 6-24 tháng trao đổi và chi phí phải tốn khoảng từ một
đến mười triệu đô la Mỹ, và tất nhiên thỏa thuận với trường đại học hay những công
ty có quy mô nhỏ lẻ thường bị loại trừ Việc độc quyền đã cản trở sự cạnh tranh vàđổi mới bằng việc ngăn không cho nhiều người thiết kế và chia sẻ những vi xử lý cónhững kiến trúc tập lệnh tương thích với nhau
Thứ hai, các sản phẩm vi xử lý được thiết kế mang tính chất tổng quát cho mỗi
phân khúc sản phẩm nhất định, không tùy chỉnh được thiết kế dé tối ưu về hiệu
năng xử lý, mức tiêu thụ năng lượng và giá cả cho từng dòng sản phẩm IoT
Thứ ba, mỗi kiến trúc tập lệnh của mỗi hàng sử dụng một hệ sinh thái phần
mềm riêng, làm tăng chi phi phat triển Thậm chí trên cùng một thiết bị lại sử dụngnhiều phần mềm khác nhau của những kiến trúc tập lệnh khác nhau
Những thách thức đó là tiền dé, là động lực dé cho ra đời những vi xử lý mã
nguồn mở đi cùng là những kiến trúc tập lệnh miễn phí nhưng thống nhất Mộttrong số đó là RISC-V (phát âm là "risk-five", RISC viết tắt từ Reduced InstructionSet Computer), là một kiến trúc tập lệnh mở, được xây dựng dựa trên những nguyêntắc của kiến trúc tập lệnh RISC, đã và đang thu hút được sự phát triển và ứng dụng
từ các nhà khoa học cũng như các công ty sử dụng vi xử lý trên thế giới Trái ngược
với hầu hết các kiến trúc tập lệnh khác, RISC-V hoàn toàn miễn phí cho bất kỳ mục
đích sử dụng nào Nó cho phép bat kỳ ai có thé thiết kế, sản xuất và bán các sảnphẩm phần cứng và phần mềm sử dụng RISC-V, Điều đó sẽ đem đến rất nhiều lợiich quan trọng cho nền công nghiệp máy tính nói chung và sự phát triển của IoT nóiriêng, như lôi kéo được nhiều ý tưởng sáng tạo thiết kế hơn, các thiết kế bộ vi xử lý
có thé được trao đôi, tái sử dụng, dễ tối ưu hơn làm cho chỉ phi của bộ vi xử lý trởnên rẻ và phù hợp với các ứng dụng kiểu như IoT
Ngoài ra RISC-V còn có những mong muốn khác là tạo ra một kiến trúc tậplệnh tiêu chuẩn chung dé có thé thống nhất và tái sử dụng phần mềm trên nhiều hệ
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 2
Trang 17thống khác nhau và ồn định trong vài chục năm thay vì sử dụng nhiều kiến trúc tập
lệnh khác nhau trên cùng một hệ thống System on Chip (SOC) như trước đây Dé
hiện thực điều đó, RISC-V cho phép mở rộng tập lệnh theo hướng phù hợp cho từng
ứng dụng cụ thé, thông qua phan tập lệnh mở rộng (tiêu chuẩn hoặc do người thiết
kế CPU tự định nghĩa)
RISC-V được phát triển lần đầu tiên bởi Đại học California, Berkeley vào năm
2010 Cho đến nay đã có hàng chục bộ vi xử lý được phát triển dựa trên kiến trúctập lệnh này nhằm vào nhiều mục đích ứng dụng và phân khúc khác nhau
Tại Việt Nam, vào ngày 15/1/2022, Viện Công nghệ thông tin, Đại học Quốcgia Hà Nội đóng góp hai bài trình bày về nền tảng hệ thống trên chip sử dụng viđiều khiến RISC-V công suất thấp cho các ứng dụng Internet vạn vật và thiết kế các
hệ thống trí tuệ nhân tạo nhỏ gọn cho các thiết bị nhúng trên nền tảng RISC-V Ứngdụng các vi xử lý dùng kiến trúc tập lệnh mở RISC-V cho các ứng dụng an toànthông tin, bao mật phần cứng va phát triển các ứng dụng thông minh đang là hướng
nghiên cứu được quan tâm tại Viện Công nghệ Thông tin.
Bên cạnh đó, tốc độ truy xuất bộ nhớ có ảnh hưởng quan trọng đến hiệu suấtcủa hệ thống Các bộ nhớ có tốc độ truy xuất càng nhanh thì giá thành càng cao Vìvậy, tổ chức một hệ thống bộ nhớ hợp lý sao cho có thé truy xuất các thành phancần cho các chương trình một cách nhanh chóng nhất là một yêu cầu cấp thiết
Cache là bộ nhớ đệm được tích hợp vào bộ xử lý trung tâm của máy tính nhằm giảm
thời gian truy cập dữ liệu từ bộ nhớ chính vì tốc độ của các Vi xử lý ngày nay nhanhhơn Bộ nhớ chính rất nhiều
Quản lý bộ nhớ là việc điều hành bộ nhớ máy tính ở cấp độ hệ thống Mụcđích quan trọng của việc quản lý bộ nhớ chính là cung cấp những cách thức dé cấpphát các vùng nhớ cho chương trình khi được yêu cầu và giải phóng các nó khi
không sử dụng Ngoài hỗ trợ quản lý bộ nhớ, đơn vị quản lý bộ nhớ (MMU) còn
cung cấp khả năng bảo vệ bộ nhớ chính bằng các tín hiệu ngoại lệ lỗi trang
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 3
Trang 18Nhận thấy được sự cần thiết và tiềm năng của hệ thống nhóm đã lựa chọn thiết
kế vi xử lý RISC-V sử dụng kiến trúc superscalar hỗ trợ associative Cache 4-way vàđơn vị quản lý bộ nhớ trên FPGA làm khóa luận tốt nghiệp
Ngoài ra, như đề cập ở phía trên, nhu cầu của các sản phẩm IoT rat đa dạng về
hiệu năng xử lý cũng như hiệu quả trong sử dụng năng lượng, và giá cả phải rẻ, cho
nên cần có nhiều giải pháp thiết kế linh hoạt đáp ứng từng dòng sản phẩm IoT cuthé Do đó, luận văn này cũng hướng đến việc đề xuất một thay đổi thiết kế đóng
gop thêm giải pháp cho các sản pham IoT
1.2 Mục tiêu của đề tài
e = Nghiên cứu kiến trúc tập lệnh RV32I cho lõi vi xử lý RISC-V 32 bit
e _ Thiết kế phan cứng cho bộ vi xử lý RISC-V 32 bit theo kiến trúc superscalar
băng ngôn ngữ thiết kế phần cứng Verilog
e _ Thiết kế bộ điều khiến Cache va đơn vị quản lý bộ nhớ (MMU) bằng ngôn ngữ
thiết kế phần cứng Verilog
e Tích hợp bộ điều khiến Cache và MMU vào lõi vi xử lý RISC-V 32 bit
e Tích hợp bus AXI 4 dé giao tiếp với các module liên quan
e Kiểm tra các lệnh của vi xử ly và các địa chỉ được chuyển đối bên trong MMU
thông qua mô phỏng trên phần mềm Vivado
e Hiện thực thiết kế lên kit FPGA
Trang 19Chương 2 Cơ sở lý thuyết
2.1 Kiến trúc tập lệnh RISC-V
2.1.1 Tổng quát
Kiến trúc tập lệnh RISC-V được thiết kế theo kiểu module nhằm cho phép cácnhà phát triển vi xử lý RISC-V có thé linh hoạt lựa chọn được kiến trúc phù hợp
nhất cho ứng dụng của họ RISC-V định nghĩa kiến trúc tập lệnh số nguyên 32-bit
RV32I là kiến trúc tập lệnh cơ sở Với kiến trúc tập lệnh cơ sở này, vi xử lý RISC-V
đã có tất cả những lệnh cơ bản như những lệnh điều khiến luồng, bộ thanh ghi, bộnhớ, cách đánh địa chỉ bộ nhớ vv đủ để hiện thực một vi xử lý dạng tổng quát hỗtrợ đầy đủ cho phần mềm và trình biên dịch
Từ kiến trúc tập lệnh cơ sở này, nhà phát triển vi xử lý RISC-V có thể linhhoạt chọn kết hợp với một hay nhiều tập lệnh mở rộng tùy chọn khác cho các ứngdụng mục tiêu Tập lệnh mở rộng có thể là tập lệnh mở rộng chuẩn của nhà sáng lậpRISC-V hoặc tập lệnh mở rộng phi tiêu chuẩn của nhà phát triển vi xử lý RISC-V
cho một sản phẩm mục tiêu nhất định Các tập lệnh được mô tả chi tiết trong Bảng
2.1.
Bảng 2.1: Bảng các tập lệnh cơ sở và mở rộng của RISC-V
Tên viết tắt Tên day đủ Chú thích
của tập lệnh
RV32I Base Integer Instruction Set, 32-bit 4 tap lệnh cơ sở
RV32E Base Integer Instruction, (embedded)
RV64I Base Integer Instruction Set, 64-bit
RV128I Base Integer Instruction Set, 128-bit
M Integer Multiplication and Division Những tap lệnh mở rộng
A Atomatic Instructions tiêu chuẩn
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 5
Trang 20m Single - Precision Floating Point
Double - Precision Floating Point
Quad - Precision Floating Point
QO} A}; Oo Decimal Floating Point
RISC (Reduced Instructions Set Computer) là một phương pháp thiết kế các
bộ vi xử lý theo hướng đơn giản hóa tập lệnh, trong đó thời gian thực thi tất cả cáclệnh đều như nhau Hiện nay các bộ vi xử lý RISC phổ biến là ARM, SuperH,
MIPS, SPARC, DEC Alpha, PA-RISC, PIC, và PowerPC.
Vi xử lý RISC được thiết kế với kiến trúc tập lệnh, tài nguyên tiêu tốn sẽ nhỏnhằm đáp ứng hoạt động của các loại máy tính có kích thước giới hạn Do đó, vi xử
lý sẽ có tân sô va toc độ xử lý sẽ cao hơn so với vi xử lý CISC — được thiệt kê với
kiến trúc tập lệnh dày đặc Tập lệnh RISC chứa ít hơn 100 lệnh và sử dụng địnhdạng lệnh cố định Phương pháp này sử dụng một số chế độ địa chỉ đơn giản sửdụng lệnh dựa trên thanh ghi Trong cơ chế phát trién trình biên dịch này, LOAD /STORE là các lệnh riêng lẻ duy nhất dé truy cập bộ nhớ
Vi xử ly RISC được thiết kế thường có các đặc điểm chính sau:
Mỗi lệnh được thực hiện trong một chu kỳ (one cycle execution time): Các vi
xử lý RISC thường có một CPI (clock per instruction) trong một chu kỳ Day
là sự thừa hưởng từ việc tối ưu mỗi lệnh trên CPU và một kỹ thuật gọi là ốngdẫn.
Kỹ thuật ống dẫn (pipeline): Là kỹ thuật cho phép thực thi đồng thời từngphan, từng trạng thái nhằm tăng thêm hiệu quả của quá trình thực thi lệnh
Có số lượng thanh ghi lớn (large number of registers): Trong thiết kế RISC
thường kết hợp số lượng lớn thanh ghi nhằm giảm thiểu sự tương tác với bộ
nhớ.
Các vi xử lý RISC mang những ưu điểm sau:
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 6
Trang 21e _ Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản.
e RISC có nhiều thanh ghi tong quan giúp giảm số lần truy cập vào bộ nhớ
chính.
e Thời gian thực thi các giai đoạn của lệnh giống nhau, giúp vi xử lý tăng tốc
nhờ vào kỹ thuật ống dẫn
e _ Cung cấp kha năng định dạng địa chỉ rộng rãi dé quản lý bộ nhớ
Tuy nhiên, RISC cũng có những nhược điểm sau:
e _ Cấm thâm nhập bộ nhớ đối với tat cả các lệnh ngoại trừ lệnh đọc và ghi vào bộ
Nếu xét về định dạng của lệnh thì RV32I được chia thành 6 nhóm: R — type, I
— type, § — type, B — type, U — type, J — type Trong đó R, I, S, U là bốn nhómchính, hai nhóm B và J giống hoàn toàn nhóm S và U ngoại trừ khác nhau về phan
toán tử “immediate” như Hình 2.1 minh họa dưới đây.
31 30 25 24 21 20 19 15 14 12 II 8 716 0
funct7 rs2 | rsl funct3 rd opcode | R-type
imm[11:0] rsl funct3 rd opcode I-type
imm[11:5] rs2 | rsl funct3 imm[4:0] opcode S-type
imm[12] imm[10:5] rs2 | rsl | func3 imm[4:1] imm[11] | opcode B-type
imm[31:12] rd opcode | U-type
imm[20], imm[10:1] imm[Il] | imm[19:12] rd opcode J-type
Hình 2.1: Dinh dang lệnh của RISC-V!!!
BAO CAO KHOA LUAN TOT NGHIEP Trang 7
Trang 22Về thanh ghi, RV32I có một thanh ghi PC và 32 thanh ghi Register File gồm
một thanh ghi x0 luôn mang giá trị 0 và 31 thanh ghi đa mục đích xI- x31 Tat cả
đều có độ rộng 32-bit (với RV64I độ rộng của các thanh ghi này trở thành 64-bit)
Tương tự như kiến trúc tập lệnh RISC, RV32I cũng có kiến trúc LOAD-STORE.Điều đó có nghĩa là chỉ có các lệnh Load và Store được cấp quyền truy cập vào bộnhớ, còn lại các phép toán số học vv đều chỉ sử dụng các thanh ghi Register
File Ngoài ra RV32I có nghĩa là không gian địa chỉ là 32-bit và sử dung little
endian Tương ứng, RV64I có nghĩa là không gian địa chỉ là 64-bit và RV128I có
không gian địa chỉ là 128-bit RV64I và RV128I cũng được xem là những kiến trúctập lệnh cơ sở Bên cạnh đó, còn một kiến trúc tập lệnh cơ sở nữa là RV32E địnhnghĩa cho những hệ thống nhúng RV32E chỉ có 16 thanh ghi 32-bit registers vànhững bộ đếm của RV32I được tùy chọn có hay không
2.1.3 Các tập lệnh và tập thanh ghi được sử dung trong hệ thống
Sau đây là tập lệnh được sử dung dé nghiên cứu và thiết kế vi xử lý RISC-V
như Bảng 2.2 trong khóa luận này.
Bảng 2.2: Tập lệnh của vi xử lý RISC-V
STT | Lệnh Tên đầy đú Hành động xử lý Kiểu lệnh
1 ADD Add | Rd =rsl +rs2 R-type
2 AND And Rd =rsl & rs2 R-type
3 OR Or Rd =rsl | rs2 R-type
4 SLT Set On Less Than Rd =rsl <rs2 R-type
Set On Less Than Rd =rs1 <rs2 (không
5 SLTU , R-type
Unsigned dau)
6 SUB Subtract Rd =rsl —rs2 R-type
7 XOR Exclusive Or Rd =rsl ^rs2 R-type
8 SLL Shift Left Logical Rd=rsl << rs2 R-type
Shift Right Rd = rsl >> rs2 (giữ bit
9 SRA , R-type
Arithmetic dau)
BAO CAO KHOA LUAN TOT NGHIEP Trang 8
Trang 2310 SRL | Shift Right Logical Rd =rsl >> rs2 R-type
Set On Less Than
11 SLTI Rd =rsl <imm I-type
Immediate
12 ORI Or Immediate Rd =rsl limm I-type
13 ADDI Add Immediate Rd =rsl +imm I-type
14 ANDI And Immediate Rd= rs1 and imm I-type
Set On Less Than Rd =rs1 << shamt
Shift Left Logical
17 SLLI Rd = rsl << shamt I-type
Immediate
Shift Right Logical
18 SRLI Rd =rsl >> shamt I-type
21 LW Load Word rd = mem[rs! + imm] I-type
Load Byte rd = mem[rs1 + imm](gitt
Trang 24Branch less than
32 BLTU 1f(rsl<rs2) pe= pe + B-tvpe
usigned imm(khéng dau) 3P
Branch great than P
33 BGEU g if(rs1>=rs2) ; B-type
usigned pc=pc+imm(không dâu)
34 JAL Jump And Link | +d = pc+4, pe = pc + imm J-type
35 SB Store Byte mem[imm + rs1] = rs2 S-type
36 SH Store Halfword mem[imm + rs1] = rs2 S-type
37 SW Store Word mem[imm + rs1] = rs2 S-type
Các vi xử lý RISC-V gồm có 32 thanh ghi Register File, mỗi thanh ghi có kíchthước 32 bit được mô tả chỉ tiết trong Bảng 2.3
Bang 2.3: Tập thanh ghi của vi xử lý RISC-V
Chỉ số thanh ghi
Tên thanh ghi Chức năng của thanh ghi
(Hệ Decimal)
$x0 0 Chứa hằng số giá trị 0
$ra 1 Địa chỉ trả về của hàm
Trang 25Các thanh ghi đã lưu (nếu con trỏ
$s0 - $s11 8 — 6, 18 — 27 khung không được sử dung, x8 sé
Cache là thuật ngữ tong quát dùng dé miêu tả một nơi lưu trữ tạm thời các dữ
liệu đã được sử dụng tích hợp trong các vi xử lý.
Đề phân biệt được một khối đang chứa dữ liệu có phải là bản sao với một khốinào đó trong Bộ nhớ chính ta cần thêm một bit cho mỗi khối trong Cache , được gọi
là valid (V) như Hình 2.2 Ta sẽ xét bit V đó theo hai trường hợp, với trường hợp
thứ nhất là tại địa chi cần xét dit liệu của cache dang rỗng không thé so sánh, thi ta
sẽ cho cache miss trực tiếp, trường hợp thứ hai V có giá trị ta sẽ xét xem giá trịtrong dữ liệu có bằng giá trị chúng ta nạp vào hay không Nếu V là 1 thì khối tươngứng đang chứa dữ liệu của một khối nào đó trong Bộ nhớ chính, ngược lại (V là 0)thì khối này không chứa dữ liệu của bat kì khối nào trong Bộ nhớ chính Tổng số bit
cho từng khối trong Cache được thể hiện trong công thức (1)
Trang 26Tên tín hiệu Độ rộng Mô tả
Vv 1 Cho biết khối có phải ban sao của lớp
bộ nhớ thấp hơn hay không
Tag t Cho biết Tag của mỗi khối tương ứng
Data d Dữ liệu chứa trong khôi đó
Số Bit của một khối =l+t+d_ (1)2.2.1 Giải thuật FIFO dé cấp phát bộ nhớ
Thay thế khối là việc chọn một khối trong các khối tiềm năng (candidates)trong Cache có thé dùng chứa khối đang được đọc lên từ bộ nhớ chính trong trườnghợp tat cả các khối tiềm năng đều đang chứa dit liệu (Bit hợp lệ của các khối này là
1).
Phương pháp FIFO (First in, first out) sẽ tìm kiếm trong số các khối tiềm năng
và thay thé khối đầu tiên trong Cache Phương pháp FIFO là phương pháp hiện thực
đơn giản tiết kiệm phần cứng nhưng vẫn đảm bảo tốc độ cho hệ thống
2.2.2 Phương pháp cập nhật lại bộ nhớ chính
Mô hình Ghi dữ liệu Write-throuph:
Mô hình Write-through là mô hình ghi dữ liệu đơn giản nhất CPU sẽ tiến
hành ghi dữ liệu ở cả hai mức là Cache và Bộ nhớ chính mỗi khi thực hiện lệnh Ghi
dt liệu Do đó, sự đồng nhất dữ liệu giữa hai mức Cache và Bộ nhớ chính là luôn
được đảm bảo.
Trong trường hợp Word cần ghi đang được chứa trong Cache ( một lần Hit)
thì việc ghi theo chiến lược Write-through là đơn giản Ngược lại, khi Word cần ghi
không nằm trong Cache (một lần Miss) thì cần chép khối Word cần khi từ Bộ nhớ
chính lên Cache và sau đó thực hiện thao tác ghi như trường hợp Hit Tức là cập
nhật Word cần ghi trong Cache và ngay sau đó cập nhật giá trị của Word này trong
Bộ nhớ chính.
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 12
Trang 27Mô hình là lựa chọn cho hệ thống trong khóa luận này bởi sự đơn giản về phầncứng của nó đồng thời vẫn đáp ứng về mặt thời gian.
Mô hình Ghi dữ liệu Write-back:
Đối với chiến lược ghi dữ liệu Write-back, khi thực hiện ghi dữ liệu, CPU chỉ
cập nhật giá trị của Word trong Cache mà không cập nhật giá trị của nó trong Bộ nhớ chính như trong phương pháp Write-through Giá trị này chỉ được cập nhật vào
Bộ nhớ chính khi khối chứa Word này trong Cache bị thay thế
Việc không thực hiện Ghi giá trị vào Bộ nhớ chính ở mỗi lệnh ghi dữ liệu như
phương pháp Write-through sẽ cải thiện hiệu suất đáng kể Tuy nhiên, việc hiện
thực phương pháp Write-back sẽ phức tạp hơn phương pháp Write-through, phương
pháp này sẽ cần dùng thêm các Bit nhớ ở mỗi khối trong Cache để ghi nhận lại
trạng thái của khối đó đã cập nhật giá trị hay chưa Khi một khối trong Cache bị
thay thế, dựa vào Bit trạng thái này mà CPU sẽ tiến hành cập nhật giá trị của khối
trong Bộ nhớ chính hay không.
2.2.3 Ưu điểm và lý do chon Cache associative 4 - way
So với hai phương pháp còn lại, phương pháp Kết hợp cho thấy sự cân bằnggiữa việc tìm kiếm khối và cách t6 chức khối trong Cache nên mang lại hiệu quả
cao hơn cho hệ thông máy tính như Hình 2.3
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 13
Trang 28Direct mapped Set associative Fully associative
Search Search [ ] Seren TTT TTT TT
Hình 2.3: Tim 6 nhớ của các phương pháp: Trực tiếp, Toàn phan, Kết hopTrong cả ba phương pháp tô chức Cache trên, đối với phương pháp ánh xạtrực tiếp thì việc tìm kiếm dữ liệu sẽ nhanh nhất nhưng tỉ lệ cạnh tranh cao, phươngpháp ánh xạ toàn phần phải tìm khối dữ liệu cùng lúc toàn bộ Cache nên việc tìmkiếm sẽ làm giảm hiệu suất hệ thống, trong khi đó phương pháp ánh xạ kết hợp giớihạn việc tìm kiếm bằng cách chia Cache thành các Set nhỏ từ đó giúp cải thiện đáng
kể thời gian trung bình truy xuất hệ thông bộ nhớ
So sánh Cache 2-way với Cache 4-way
Mặc dù Cache 2-way có độ trễ khi truy xuất dữ liệu thấp hơn so với Cache
4-way, nhưng lại có tỉ lệ Miss cao hơn Do đó, ta cần cân nhắc lựa chọn Cache dựa
vào nhu câu đê cho ra hiệu năng tôt nhât.
Dưới đây là đề tài nghiên cứu liên quan và kết quả như Bảng 2.5 về hai yếu tốđược sử dụng dé đánh giá hiệu suất của bộ đệm Cache được đề xuất: mức tiêu thụnăng lượng trung bình (Ec) và thời gian truy cập trung bình (Tas) Nếu xem xét lỗi
bộ nhớ cache, và tính toán được hai phương trình công thức theo đề tài nghiên cứu
Trang 29Với m là số lượng associative được điều chỉnh (1,2,4, n).
H là tốc độ truy cập của bộ nhớ cache
P là chu kỳ lỗi miss bị bỏ lỡ.
Erag và Eaaa biểu thị năng lượng được truyền trong bộ nhớ tag và bộ nhớ data tương
Tas 1.278 1.2667 1.2351
Ec 1.156 2.2748 4.5155 FSXZZ
Tas 1.3582 1.3214 1.3128
Ec 1.156 2.2567 4.4638 IVEX
TAs 1.2776 1.2508 1.2457
Ec 1.156 2.2978 4.584 SPIC
Tas 1.1392 1.1227 1.1152
BAO CAO KHOA LUAN TOT NGHIEP Trang 15
Trang 302.3 Đơn vị quản lý bộ nhớ - MMU
$cause 15 Loại ngoại lệ
$epc 16 Địa chỉ trả về của ngoại lệ
$index 17 Dia chỉ của mục trong MMU
Sentry 18 Giá trị dé lưu vào mục trong MMU
$context 19 Dia chỉ cua thư mục trang
Tập lệnh cơ sở của vi xử lý được thiết kế không có khả năng giao tiếp với cácthanh ghi đặc biệt, do đó thiết kế đề xuất một tập các lệnh đặc biệt được sử dụng dégiao tiép với các thanh ghi đặc biệt Tập lệnh đặc biệt có vai trò hỗ trợ hoạt độngcủa CPU trong van dé xử lý ngắt và giao tiếp với MMU
Dựa vào bảng các giá trị thanh ghi đặc biệt ở trên dé giao tiếp dé giữa CPU và
MMU, ta có các tập lệnh mới phục vụ cho khóa luận được trình bay trong Bang 2.7.
Bảng 2.7: Tập lệnh đặc biệt của vi xử lý RISC-V
Lệnh Cấu trúc Hành động xử lý
mfc0 mfc0 rd, rs2 rs2 (CPO) -> rd (regFile)
mtc0 mtcO rd, rs2 rs2 (regFile) -> rd (CPO)
syscall syscall Nhảy đến dia chỉ thực
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 16
Trang 31của ngoại lệ Syscall
Nhảy về dia chỉ ảo trả về eret eret của ngoại lệ (chứa trong
thanh ghi $epc)
mtcO mic0 r20, x0 Cho phép ghi vào MMU
Các lệnh đặc biệt mfc0 và mtc0 dùng các thanh ghi từ Bảng 2.7 dé chuyên dữ
liệu từ các thanh ghi Register File đến các thanh ghi đặc biệt hoặc ngược lại, lệnh
mtc0 r20, x0 là một lệnh đặc biệt được thiết kế riêng có chức năng cho phép ghi vào
MMU.
Muốn cập nhật một mục trong MMU, chúng ta phải sử dụng các tập lệnh phầnmềm dé thực hiện Đầu tiên, ta cần cập nhật địa chỉ của một mục trong MMU tạithanh ghi $index, sau đó là thay đôi địa chỉ của thư mục trang tại thanh ghi $contextnếu can, lưu dit liệu cần ghi vào mục trang trong thanh ghi $entry và cuối cùng là sửdụng lệnh mtc0 r20, x0 dé cho phép ghi vào mục trong MMU
Khi CPU muốn truy cập vào bộ nhớ chính, nó sẽ gửi một địa chỉ ảo cho MMU,dựa vào địa chỉ ảo, MMU sẽ tra cứu các mục trong bảng trang, sau đó xuất địa chỉthực chứa trong mục nhập ay xuống bộ nhớ chính nếu mục đã được cấp quyền (bít
valid của mục bằng 1) Nếu CPU truy cập vào một mục không được cấp quyền truy
cập bộ nhớ, MMU sẽ báo về một ngoại lệ lỗi trang, CPU sau đó sẽ nhảy đến địa chỉ
thực chứa các câu lệnh xử lý ngoại lệ lỗi trang và thực hiện chúng Việc xử lý ngoại
lệ lỗi trang được kết thúc bởi câu lệnh eret, thanh ghi PC sẽ nhảy về địa chỉ trongthanh ghi $epc và CPU sẽ tiếp tục chương trình chính
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 17
Trang 322.3.2 Chức năng
Các chương trình chạy trên vi xử lý sử dụng các địa chỉ hiện tại của nó để truycập không gian địa chỉ trống Bộ xử lý có thể diễn giải vùng địa chỉ này theo một
trong hai cách, tùy thuộc vào địa chỉ cung cấp:
e Ở chế độ thực, các địa chỉ hiện tại được sử dụng dé truy cap truc tiép vao vung
dia chỉ thực trong bộ nhớ vat lý Ở chế độ này, MMU sẽ chuyên tiếp địa chỉnhận được từ CPU xuống bộ nhớ chính
se Oché độ ảo, các địa chỉ hiện tại được phần cứng quản lý bộ nhớ ảo trong bộ
xử lý chuyên thành địa chỉ vật lý theo cơ chế tra cứu mục nhập bảng trang và
đưa xuống bộ nhớ chính
e Bộ nhớ ảo chia bộ nhớ chính thành các bảng trang và ánh xa chúng thông qua
các mục nhập bảng trang trong MMU.
e Chế độ ảo cung cấp cho phần mềm hệ thống khả năng định vi lại các chương
trình và đữ liệu ở bất kỳ đâu trong không gian địa chỉ vật lý Phần mềm hệthống có thé di chuyên các chương trình và dit liệu không hoạt động ra khỏi bộnhớ vật lý khi các chương trình và dữ liệu đang hoạt động yêu cầu không gian
e Chế độ ảo cung cấp khả năng kiểm soát tốt hơn đối với việc bảo vệ bộ nhớ
Các khối nhỏ đến 2 Kb có thé được bảo vệ riêng khỏi truy cập trái phép Bao
vệ và tái định vị cho phép phần mềm hệ thống hỗ trợ đa nhiệm Khả năng nàycho phép thực hiện đồng thời hoặc gần đồng thời nhiều chương trình
Các tính năng của MMU vào bộ vi xử lý được bao gồm:
° Chuyển các địa chỉ hiện tại thành địa chỉ thực
e Kiểm soát quyền truy cập trang trong khi dich địa chỉ
e_ Cung cấp khả năng kiểm soát bảo vệ bộ nhớ thông qua việc sử dụng các khu
vực khác nhau.
e©_ Cung cấp khả năng kiểm soát độc lập đối với việc dịch và bảo vệ địa chỉ lệnh
và địa chỉ dữ liệu.
Van dé gặp phải với hệ thống sử dụng bộ nhớ chung:
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 18
Trang 33e _ Hệ thống có bộ nhớ vật lý ít hơn không gian địa chỉ của nó.
e Phân mảnh bộ nhớ chung.
e Vấn đề nhiều chương trình trong hệ thống sử dung chung bộ nhớ
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 19
Trang 34Chương 3 Thiết kế vi xử lý RISC-V
3.1 Mô tả tổng quan hệ thống
Nhằm tăng tốc độ xử lý cho CPU, khóa luận này đề xuất việc tích hợp ICache
- chứa tập lệnh, DCache - chứa dir liệu từ data memory đã được sử dung và một
MMU hé trợ cho việc truy xuất bộ nhớ chính vào hệ thống.
Trong hệ thống, ICache và DCache được cập nhập tự động bằng thuật toán ởphần cứng, còn đơn vị quản lý bộ nhớ MMU được cập nhập bằng phần mềm bởi
các tập lệnh.
Thiết kế vi xử lý RISC-V 5 tầng được tích hợp các Cache và MMU, các câu
lệnh được xử lý qua các giai đoạn như Hình 3.1.
Trang 35e Giai đoạn IF: PC cung cấp địa chỉ cho ICache và giải quyết các van đề xung
đột dữ liệu, xung đột đường ống giữa 2 lệnh song song
e Giai đoạn ID: Giải mã lệnh, đọc dữ liệu thanh ghi trong Register File, xử lý
xung đột dữ liệu trong đường ống bằng phương pháp nhìn trước, xử lý rẽ
nhánh/ nhảy.
e Giai đoạn EXE: Thực thi các lệnh tính toán số học hoặc tính toán địa chỉ đọc
trong DCache cho giai đoạn MEM.
e Giai đoạn MEM: Thực thi lệnh ghi dữ liệu vào DCache, doc dữ liệu từ DCache
hoặc từ ALU dé lưu vào Register File Ở giai đoạn này hệ thống chỉ cung cấpmột đường dé giao tiếp với DCache nhưng lại có 2 lệnh chạy song song, do đó
có thể xảy ra xung đột đường ống, công việc giải quyết xung đột này được
thực hiện ở giai đoạn IF.
© Giai đoạn WB: Chọn dữ liệu để ghi vào Register File
Do việc tích hợp ICache và DCache năm ở các vị trí khác nhau trên đườngống, việc đồng bộ phải được xử lý Các tín hiệu đồng bộ được xử lý trong giai đoạn
IF và gửi đên các giai đoạn khác.
Do vi xử lý được thiết kế để xử lý song luồng, ICache giao tiếp với bộ nhớchính thông qua 2 công, còn DCache thì thông qua 1 công
Đầu ra của MMU giao tiếp với bộ nhớ chính là các địa chỉ thực được dịch Khiđịa chỉ mà CPU cấp cho MMU trỏ đến một mục không được cấp quyền trong bảngtrang (valid = 0), MMU sẽ gửi trả về giai đoạn IF một ngoại lệ lỗi trang Ngoại lệlỗi trang là một ngoại lệ mà CPU sẽ xử lý bằng cách nhảy đến vùng địa chỉ thựctrong bộ nhớ chính chứa tập lệnh dé xử lý ngoại lệ lỗi trang
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 21
Trang 363.2 Thiết kế vi xử lý RISC-V
3.2.1 Khối cpu mem scalar
Khối cpu_mem_scalar là một vi xử lý RISC-V sau khi tích hợp các bộ nhớ
đệm (Cache) và đơn vị quản lý bộ nhớ (MMU) Sau khi tín hiệu “reset” được tích
Hinh 3.2: Khéi cpu_mem_scalar
cực và nhận được tín hiệu “start” tích cực, vi xử lý bắt đầu hoạt động
Chức năng của khôi cpu_mem_scalar:
e Giao tiếp với bộ nhớ chính: xuất địa chỉ và nhận lại các lệnh từ bộ nhớ chính
và thực hiện chúng, đồng thời ghi và đọc các dữ liệu từ bộ nhớ chính thông
rst_n I 1 Tin hiệu reset tích cực mức thấp
Trang 37start I 1 Tin hiéu kich hoat hé thong
A_inst I 32 Lệnh A được nạp vào B_inst I 32 Lệnh B được nạp vào
imem_ready I 1 Tín hiệu hợp lệ của lệnh được nap vào
dmem_ dout I 32 Dữ liệu từ data memory
dmem_ ready I 1 Tín hiệu hợp lệ của dữ liệu từ data memory
A_imem_addr O 32 Dia chỉ lệnh được nạp vao A_inst
B_imem_addr O 32 Dia chi lénh duoc nap vao B_inst
imem_strope O 1 Tín hiệu hợp lệ của địa chỉ lệnh
data_mem_addr | O 32 Dia chi truy xuất vào data memory
dmem_din O 32 Dữ liệu ghi vào data memory
dmem_ strope O 1 Tín hiệu hop lệ truy cập vào data memory
dmem_rw O 1 Tín hiệu doc/ghi data memory
Trang 38Chức năng khối pc_scalar:
e Cung cấp địa chỉ lệnh: Khối pc_Scalar là một đơn vị điều khiển trong vi xử lý,
được sử dụng dé cap phát các dia chỉ lệnh cho ICache
e Khối pc_scalar cấp phát 2 địa chỉ lệnh cho ICache mỗi khi có tín hiệu hợp lệ
cho dữ liệu đầu vào
Khối pc_scalar được mô tả trong Hình 3.3 và chi tiết từng tín hiệu được mô tả
A_pc_sel I 1 Tín hiệu báo lệnh A là lệnh nhảy
A_jump_ data I 32 Dia chỉ nhảy của lệnh A
B_pc_sel I 1 Tín hiệu báo lệnh B là lệnh nhảy
B_jump_data I 32 Dia chi nhay cua lénh B
roll_back I 1 Tín hiệu báo chu kỳ trước chỉ xử lý một lệnh
intr_sel I 3 Tín hiệu xảy ra ngoại lệ
epc I 32 Dia chỉ nhảy của lệnh eret
pc_valid_1n I 1 Tín hiệu hợp lệ cho các lệnh đầu vào
dmem_valid_in I 1 Tín hiệu từ data mem dé xử ly đồng bộ CPU
mem_ wait | 1 Tín hiệu từ giai đoạn MEM dé xử ly đồng bộ
CPU
dmem_valid out| I 1 Tín hiệu từ giai đoạn MEM dé xử lý dong bộ
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 24
Trang 39pe O 32 Dia chi lệnh tiếp theopc_add_4 O 32 Địa chỉ lệnh tiếp theo tiếp theo
pc _add_§ O 32 Địa chỉ lệnh tiếp theo tiếp theo tiếp theo
pc_valid_ out O 1 Tín hiệu hợp lệ cho các đữ liệu đầu ra
A_ uncached O 1 Tín hiệu báo địa chỉ lệnh A không sử dụng
e Khối issuing xử lý các van đề về xung đột giữa 2 lệnh được cấp phát cùng lúc
như xung đột dữ liệu, xung đột đường ống (do thiết kế chỉ có một đường ống
dé truy cập vào DCache)
e© Một số xung đột chỉ có một lệnh được di qua đường ống, tín hiệu roll_back sẽ
được bật Nếu xung đột cần đổi chỗ 2 lệnh, tín hiệu swap sẽ được bat
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 25
Trang 40Khối issuing được mô tả trong Hình 3.4 và chi tiết từng tín hiệu được mô ta
trong Bảng 3.3.
Bảng 3.3: Tín hiệu của khối issuingTín hiệu | I/O | Số bit Mô tả
A_inst I 32 Lénh A hién tai
B_inst I 32 Lénh B hién tai
A_pipe | O 32 Lệnh A sau khi xử ly xung đột.
B_pipe | O 32 Lệnh B sau khi xử lý xung đột.
roll_back | O 1 Tín hiệu báo chi xử lý một lệnh
swap | O 1 Tín hiệu báo có lệnh bị đôi chỗ
3.2.4 Khối fowarding logic
BÁO CÁO KHÓA LUẬN TÓT NGHIỆP Trang 26