Tong quan dé tai 1.1 Tổng quan tình hình nghiên cứu ~ Tình hình nghiên cứu ngoài nước: > Năm 2019, Sandro Pinto va Cesare Garlati đã công bố công trình nghiên cứu về việc áp dụng quá trì
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG ĐẠI HỌC CÔNG NGHỆ THONG TIN
KHOA KỸ THUẬT MÁY TÍNH
NGÔ HOÀI PHONG NGUYÊN MINH TÂM
KHÓA LUẬN TÓT NGHIỆP
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
NGO HOAI PHONG - 17520894 NGUYEN MINH TAM - 17521004
KHOA LUAN TOT NGHIEP
THIET KE BO XU LY RISC-V HO TRO
CHE DO GIAM SAT
DESIGN A RISC-V PROCESSOR SUPPORT
SUPERVISOR MODE
KỸ SƯ NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
ThS HO NGỌC DIEM
TP HO CHi MINH, 2021
Trang 3THONG TIN HOI 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ố 462/QD-DHCNTT
ngày 23 tháng 07 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1 Nguyễn Minh Sơn - Chủ tịch
2 Nguyễn Thanh Thiện - Thư ký
3 Trương Văn Cương - Ủy viên
Trang 4LỜI CẢM ƠN
Để có thể hoàn thành tốt được khóa luận tốt nghiệp này, nhóm xin chân thành cảm ơn các thầy cô 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 và các thầy cô thuộc khoa Kỹ thuật Máy
tính nói riêng, đã truyền đạt cho chúng em những kiến thức và kinh nghiệm quý báu trong suốt 4 năm qua.
Kế đến, nhóm xin cảm ơn những người bạn đã luôn động viên cũng như
hỗ trợ em tìm kiếm những thông tin và hướng giải quyết những van đề khó khăn trong suốt thời gian làm khóa luận tốt nghiệp.
Cuối cùng, nhóm xin chân thành cảm ơn cô Hồ Ngọc Diễm và thầy Trần
Đại Dương đã dành thời gian quý báu cũng như kiến thức và kinh nghiệm của
mình đề truyền đạt, hướng dẫn và giúp đỡ chúng em rất nhiều trong suốt thời gian qua.
Lời cuối cùng, nhóm xin chúc quý thầy cô và các bạn luôn có thật nhiều
sức khỏe và thành công trong công việc.
Nhóm sinh viên
Ngô Hoài Phong
Nguyễn Minh Tâm
Trang 5ĐÈ CƯƠNG CHI TIẾT
TEN DE TÀI TIENG VIỆT: THIẾT KE BỘ XỬ LÝ RISC-V HO TRỢ CHE ĐỘ
GIÁM SÁT
TEN DE TÀI TIENG ANH: DESIGN A RISC-V PROCESSOR SUPPORT
SUPERVISOR MODE
Cán bộ hướng dẫn: Ths Hồ Ngọc Diễm, Trường Dai học Công nghệ Thông tin
Thời gian thực hiện: Từ ngày 08/03/2021 đến ngày 25/06/2021
Sinh viên thực hiện: Nguyễn Minh Tâm - 17521004
Ngô Hoài Phong - 17520894
Nội dung đề tài
1 Tong quan dé tai
1.1 Tổng quan tình hình nghiên cứu
~ Tình hình nghiên cứu ngoài nước:
> Năm 2019, Sandro Pinto va Cesare Garlati đã công bố công trình nghiên cứu về việc áp dụng quá trình xử lý ngoại lệ ở chế độ người dùng vào hệ điều hành nhúng thời gian thực FreeRTOS cho bộ xử lý MultiZone nhằm bảo mật những thiết bị IOT sử dụng kiến trúc tập lệnh RISC-V [1].
e Kết quả nghiên cứu chỉ tập trung vào quá trình xử lý ngoại lệ ở chế độ người
dùng.
- Tình hình nghiên cứu trong nước:
> Năm 2020, sinh viên An Xuân Tuấn đã thiết kế bộ xử lý 32 bit đơn chu kỳ dựa
trên kiến trúc RISC-V hỗ trợ chế độ giám sát [2].
e Kết quả bộ xử lý thực thi đúng chức năng của 37 lệnh thuộc kiến trúc R V321,
7 lệnh hệ thống và xử lý các ngoại lệ Tuy nhiên bộ xử lý được thiết kế đơn chu kỳ nên tần số hoạt động vẫn còn rất thấp.
Tài liệu tham khảo:
[1] Pinto, Sandro & Garlati, Cesare (2019) User Mode Interrupt: A Must for
Securing Embedded Systems.
[2] An Xuân Tuần (2020) Thiết ké bộ xử lý kiến trúc RISC-V hỗ trợ chế độ giám sát.
Trang 61.2 Lý do thực hiện đề tài
- RISC-V là một kiến trúc tập lệnh mở (Open-sourse ISA) dựa trên các nguyên tắc
máy tính tập lệnh rút gon RISC (Reduced Instruction Set Computer) và hiện đang nhận được sự quan tâm lớn của các nhà nghiên cứu.
- RISC-V đang rất mới, ở Việt Nam hiện ghi nhận 1 vài công trình nghiên cứu liên
quan đến bộ vi xử lý dựa trên kiến trúc tập lệnh RISC-V, và chỉ mới ghi nhận 1 công trình bộ vi xử lý RISC-V kết hợp chế độ giám sát và xử lý ngoại lệ.
- Công trình nghiên cứu này góp phần giúp Việt Nam bắt kịp xu thế phát triển của thế giới trong lĩnh vực thiết kế vi mạch nói chung và thiết kế vi xử lý kiến trúc RISC-V
nói riêng.
2 Mục tiêu của đề tài
- Thiết kế bộ xử lý 32 bit áp dụng kỹ thuật pipeline dựa trên kiến trúc tập lệnh RISC-V kết hợp các khối hỗ trợ ché độ giám sát và xử lý ngoại lệ từ nghiên cứu của sinh viên
An Xuân Tuan vào bộ xứ lý Bao gồm:
> Thực thi 37 lệnh cơ bản thuộc kiến trúc tập lệnh RV32I và lệnh ECALL.
> Thực thi 7 lệnh hệ thống thuộc chế độ giám sát gồm: SRET, CSRRW, CSRRS,
CSRRC, CSRRWI, CSRRSI, CSRRCI.
> Xử lý các ngoại lệ: software interrupt, timer interrupt, lệnh chuyên chế độ và các lệnh bat hợp pháp.
> Tần số hoạt động 50Mhz.
3 Phương pháp thực hiện
- Phương pháp nghiên cứu tài liệu: Tìm hiểu lý thuyết kiến trúc tập lệnh RISC-V R V321, trạng thái hoạt động của chế độ giám sát, chế độ người dùng và bộ xử lý các ngoại lệ.
- Phương pháp thiết kế: Altera FPGA Design Flow.
- Phương pháp mô phỏng: Sử dụng testbench mô phỏng trên ModelSim.
- Phương pháp thực nghiệm: Hiện thực và kiểm tra thiết kế trên FPGA (Kit DE2).
4 Các nội dung chính và giới hạn của đề tài
1 Thiết kế datapath:
- Khối PC.
- Khối Instruction Memory.
- Khối Register Eiles.
Trang 7- Khối ALU, ALU control.
- Khối Data Memory.
- Các thanh ghi IF_ID, ID_EX, EX_MEM và MEM_WB.
- Khối Hazard Detection Unit (HDU).
-Khối Branch Forward Unit và Bypass.
2 Thiét ké control unit:
- Tín hiệu điều khiển 37 lệnh cơ bản, lệnh ECALL và các lệnh hệ thống.
- Tín hiệu xác định chế độ giám sát và chế độ người dùng tại từng chế độ hoạt
động.
- Tín hiệu xử lý ngoại lệ.
3 Thiết kế các khối xử lý ngoại lệ
- Các thanh ghi xử lý ngoại lệ.
- Khối xác định độ ưu tiên.
- Khối Stack.
- Khối xác định nguyên nhân gây ra ngoại lệ.
4 Thiết kế khối tạo Timer Interrupt.
5 Mô phỏng hệ thống trên ModelSim.
6 Hiện thực và kiểm tra bộ xử ly trên FPGA
5 Kế hoạch thực hiện:
STT Công Thời gian dự kiến Người thực
việc hiện
1 | Tìm hiểu kiến trúc tập lệnh RISC-| 08/03/2021 — 21/03/2021 | Minh Tâm +
V Tìm hiểu kỹ thuật pipeline (2 tuan) Hoài Phong
2 | Thiết kế datapath pipeline 22/03/2021 - 11/04/2021 | Hoài Phong
(3 tuan)
3 | Kết hợp các khối xử lý ngoại lệ 12/04/2021 - 25/04/2021 | Minh Tâm
vào datapath (2 tuân)
4 | Thiết kế control unit 26/04/2021 - 23/05/2021 | Minh Tâm +
(4 tuân) Hoài Phong
5 | Mô phỏng hệ thống trên Model 24/05/2021 - 06/06/2021 | Minh Tâm +
Sim (2 tuân) Hoài Phong
Trang 86 | Hiện thực và kiểm tra trên FPGA | 07/06/2021 — 20/06/2021 | Hoài Phong
(2 tuân)
7| Viết báo cáo 21/06/2021 - 25/06/2021 | Minh Tâm
(1 tuân)
Xác nhận của CBHD TP HCM, ngày 2 tháng 3 năm 2021
(Ký tên và ghi rõ họ tên) Sinh viên
(Ký tên và ghi rõ họ tên)
Trang 91.3 Phương pháp nghiên cứỨu - + ++++x+E+EvEvE+kekertrrkekrkererkrkrkerrre 4
Chương 2 CƠ SỞ LÝ THUYÉTT °-se2+secVEvveeeevvxesererreesee 5 2.1 Chế độ đặc quyên -cc:¿-222222E2+rrrrEEEEEEvrrrrrrrrrrrkrrrrrrrrrrres 5
2.2 Bộ xử lý hai chế độ -222::+2222++t2EEEEEtEEEEEvrttrkkrrrtrrkrrrrrrrvee 5 2.3 Trạng thái hoạt động của bộ xử lý hai chế độ . +22 7 2.4 Các định dạng lệnh thuộc kiến trúc RISC-V -zz2 0
2.5 _ Chức năng các lệnh RV32I và lệnh hệ thống "“ - 1
2.6 Kỹ thuật pipeline cv Hư 4
2.6.1 Tổng quan -cccc2222vcrSEEEErrrtrrttrrrrrrrrrrrrrrrve 4
2.6.2 Các vấn đề của pipeline -ccc-:+2222cvvvrvrrrrrrrrvrrrrrrrrrrr 5
2.6.2.1 Xung đột cấu trúc (Structural hazard) -s-c-cecccscxsrxeer 6
2.6.2.2 Xung đột dữ liệu (Data hazard)
2.6.2.3 Xung đột điều khiển (Control/Branch hazard) §
Chương 3 THIET KE HE THONG.
3.1 _ Thiết kế hệ thống tổng quát -2¿-+2++++22E++z+tttzxxersrrrserrrrr 9 3.2 _ Thiết kế hệ thống chỉ tiết.
Trang 103.2.1 Khối Timer -c:2222+ccSCCvvrrrerrkrrrrrrrtrrrrrrrrvee 21 3.2.2 Khối Datapath c2222cccSccvrrrrerrtrrrrrrrtrrrrrrrrve 22 3.2.2.1 Các khối cơ bản -222¿2222++t2222EEtEE2EEEEEEEEErrrrtrrrrrrr 24 3.2.2.1.1 Khối Program Counter
3.2.2.1.2 Khối Instruction Memory -. -eeeeeeee e 26 3.2.2.1.3 Khối Register File -ceeeeeerereereeeeseroe 27
3.2.2.1.4 Khối Sign extend usssesmennneusienanisienenutuennutenenees 2B 3.2.2.1.5 Khối ALU control -««e.eeeeeeoseeeoe 3Ô 3.2.2.1.6 Khối AL/U «caro 33 3.2.2.1.7 Khối Data Memory seceeeeeeeeeereerereeeee.x 30 3.2.2.1.8 Khối Branch _COMP eves OO 3.2.2.1.9 Khối Branch _€onITOI .‹c-sssecsevecsssexseeeessseeseeerssseeseeeee AL 3.2.2.2 Các khối xử lý dành cho pipeline -ccc: cccscccc2 42
3.2.2.2.1 Khối Hazard Detection Unit (HDU) 42 3.2.2.2.2 Khối Branch Forward Unit e-eeeeeeeee 4D 3.2.2.2.3 Khối Bypass reo, 7 3.2.2.2.4 Khối id bypass -eerrrrrrrrrrrreeeeroe 50
3.2.2.2.5 Các thanh ghi pipeline -. -ereeeeceeveeerrrrrrrreaooee DD
3.2.2.3 Các khối xử lý ngoại lệ -::+++¿+22222222222221121211222222Xe, 62
3.2.2.3.1 Khối Reason Exceptions Ô 2 3.2.2.3.2 Khối System Register Eile eeceeeee.v OF 3.2.2.3.3 Khối PC_handling_exc_ addr c‹«.eeeeeereeeeer 1A 3.2.2.3.4 Khối PC_return_addi ceeeroeeeeesereeoeoroe 7 6
3.2.3 Khối Control Unit -c-:©2222+c22E2S+tSEEEEerrrrrkerrrrrrrvee 71
Trang 11Chương 4 MO PHONG VÀ ĐÁNH GIA KET QUA -«- 85
4.1 RISC-V-tests
4.2 Bộ chương trình kiêm tra ngoại 16 - «- - c+c‡+ccsrekeeererrrkree 89
4.3 — Giai đoạn trước tông hợp luận lý
4.4 Giai đoạn sau tổng hợp luận lý - -¿-5222+zctzczrxerrrrrreererrree 99
4.5 Giai đoạn hiện thực trên FPGA
4.5.1 Kiểm tra trên FPGA với bộ test_ - : -ccc:+ccvsccsecrveccee 05
4.5.2 Kiểm tra trên FPGA với bộ test_2
4.6 So sánh kết quả thực thi 3 giai đoạn mô phỏng -. -: 12 4.7 So sánh kết quả với các nghiên cứu đã thực hiện
Chương 5 KET LUẬN VÀ HƯỚNG PHÁT TRIÊN - 116
5.I - Kếtluận 222.c 22222222221 crrrree 16
5.2 Hướng pháttriển .-ccc+cccvrrrrrrrrrrrrrrtrrrrrrrrrrrer 16
TÀI LIEU THAM KHAO s22 +2<c22it+eeeSEttrcrzEEttrrrrvrtrrrrrrre 117
Trang 12DANH MỤC HÌNH
Hình 2.1: Mô hình lớp của bộ xử lý kết hợp hai chế độ - : -+ 6
Hình 2.2: Trang thái hoạt động của bộ Xử lý ¿+cc+ccrsrkrkekererree 7
Hình 2.3: Các thủ tục xử lý ngoại 16 ¿-¿- ¿cty 9
Hình 2.4: Quá trình lệnh thực thi tuần tự [3] -.¿¿- c¿+52sscc+ccvsccerz 14
Hình 2.5: Quá trình lệnh thực thi theo pipeline [3] - - - - 2 555 55+<+s<++ 14
Hình 2.6: Cấu trúc tổng quát bộ xử lý sử dung kỹ thuật pipeline - l5
Hình 2.7: Xung đột dữ liệu [3] - :¿ 22222222+z+tt2EEEEEvErrrrtrtrrrrrrrrrrrrrrrrrree l6 Hình 2.8: Gửi vượt trước dữ liệu [3] ¿¿2+++222+++++22vvvrrztrrxeerrrrkscee 17 Hình 2.9: Chèn bước trì hoãn [3] „17
Hình 2.10: Xung đột điều khiển [3] „18 Hình 3.1: Cấu trúc tông quát của bộ xử lý hỗ trợ chế độ giám s 20 Hình 3.2: Cấu trúc khối Timer „21
Hình 3.3: Cấu trúc chỉ tiết khối datapath -¿ 2c+++22222vvvrrrrrrrrrrrsee 23
Hình 3.4: Cấu trúc khối Program COunIer -¿¿++z++222++z++22+zz++zzxseez 24 Hình 3.5: Cấu trúc khối Instruction MemOrry -¿¿+22+++++22++z+zvsscez 26 Hình 3.6: Cấu trúc khối Register File .-: ¿++©2++222v+++etvvvvresrrvsrrerrr 27
Hình 3.7: Cấu trúc khối Sign extend -¿¿+2++++22EE+++222E++etrtrrxerrrrrkscee 29
Hình 3.8: Cầu trúc khối ALU control -¿-+z+2++z+22++z+t2zv+z+zvvszrzsrr 30 Hình 3.9: Cấu trúc khối AILU ¿+2++++22V++++EEE+++ttEEEE+vetEEEvrrerrrrrrrrrr 33
Hình 3.10: Cấu trúc khối Data Memory -c2¿+2cccvccvscrrcrsscecrcsec r 3Õ
Hình 3.11: Cấu trúc khối Branch_COmp ¿+ Street 38 Hình 3.12: Cấu trúc khối Branch_control - ¿2++++22+++++22++z++zvxseez 4I Hình 3.13: Cấu trúc khối Hazard Detection Unit ¿©2scz+2c5scczzz 43
Hình 3.14: Cấu trúc khối Branch_fwd - -: 222v2++++tcvvvvvvrrrrerrrrrrvrev 45
Hình 3.15: Cấu trúc khối Bypass 22222+++222EEEEvrrrirtrtrtrtrrrrrrrrrrrrrrev 47 Hình 3.16: Cầu trúc khối id_bypass -¿:222+2z2V22++ttEEEEvrettrrvrrsrrrrrrrrrr 50
Hình 3.17: Cấu trúc thanh ghi IF_ID -+22222E2+vv++z+tttvvvvsecccee 53 Hình 3.18: Cấu trúc thanh ghi ID_ EXX - che 55
Hình 3.19: Cấu trúc thanh ghi EX_MEM c222c++22 2v vvvrrrrrrrrrrrrrrrree 59
Trang 13Hình 3.20: Cấu trúc thanh ghi MEM_WH LH HH HH Hư 61
Hình 3.21: Cấu trúc khối Reason Exception - 2s + ++z+xzxerxerxerxrrsrxee 62
Hình 3.22: Cấu trúc khối System Register File - 2 2+ 2 xecxs£xsrersxez 65 Hình 3.23: Cấu trúc thanh ghi sepc - 2: 2¿+¿+2++2E++EE+2Ex2EEtrkterkezrxerrecree 69 Hình 3.24: Cấu trúc thanh ghi scause 2- 2222 E+E+£E£+EE+EE+EEezEezEesrxerxerex 70
Hình 3.25: Cấu trúc thanh ghi sstatus - 2-22 22 E+SE+2E£2EE+EEtEEerEEzEEerxerkerex 70
Hình 3.26: Cấu trúc thanh ghi sie - 2-2 2S +E£SE#EE#EESEEEEEEEEZEEEEEEEerkerkrrkrree 71 Hình 3.27: Cấu trúc thanh ghi stveC c.ccecccccccsscsssesessescssessessessesscssessesscsssessessessesseaee 71 Hình 3.28: Cấu trúc thanh ghi Cur_ImOd€_ TB - c5 5 332111 EEEssrersereree 72 Hình 3.29: Cấu trúc thanh ghi ecall_reg -:-2¿©2¿5¿22+2x++£x++zxzrxerxeeree 73 Hình 3.30: Cấu trúc thanh ghi sret_from_ calÏ_ reg, «<< <+ss+sseeesee 74 Hình 3.31: Cấu trúc khối PC_handling_exc_addr 2-2 s+2s£+zs+cs+zxzsz 74 Hình 3.32: Cấu trúc khối PC_return_addr - cccc+cccccxeererrverrrrkerrre 76 Hình 3.33: Cấu trúc khối Control Unit ¿22 + >x+2+++££+£++zxtzx++xe+rxerxezez 77
Hình 4.1: Bộ test rv32ui cho tập lệnh RV321 oo ececeseeseeseeseeeeeeeeeeeeeeeeeeseeaeeneens 86
Hình 4.2: Cấu trúc bên trong của | tập tin kiểm tra cho lệnh “ađđ” 87
Hình 4.3: Nhãn fail, pass ở cuối mỗi tập tin kiỂm tra oe eeceecseccsessseessecstesseesseesseens 88 Hình 4.4: Cấu trúc bộ chương trình kiểm tra ngoại 16 - ¿2s szxz+sz 89 Hình 4.5: Kết quả kiểm tra giai đoạn trước tổng hop luận lý với 37 lệnh 90
Hình 4.6: Giá trị các thanh ghi ở giai đoạn trước tong hop luận lý 92
Hình 4.7: Giá trị các ô nhớ ở giai đoạn trước tông hợp luận lý 92
Hình 4.8: Waveform mô tả hoạt động của bộ xử lý với lệnh ECALL 93
Hình 4.9: Waveform mô tả hoạt động của bộ xử lý với lệnh SRET 94
Hình 4.10: Waveform mô tả chế độ hoạt động của bộ xử lý sau lệnh ECALL 94
Hình 4.11: Waveform mô tả vị trí trả về của bộ xử I0 95
Hình 4.12: Waveform mô tả việc xử lý lệnh bắt hợp pháp (1) «« 95
Hình 4.13: Waveform mô tả việc xử lý lệnh bat hợp pháp (2) - - 96
Hình 4.14: Waveform mô tả việc xử ly software 1nf€rrUpI . « «<< «<<s<s++ 96 Hình 4.15: Waveform mô tả kết quả khi thực thi các lệnh CSR - 97
Hình 4.16: Waveform mô tả việc xử lý timer interrupt «55s «<< £++ss++ 98
Trang 14Hình 4.17: Waveform mô tả việc kích hoạt timer interrupt ở User mode 98
Hình 4.18: Waveform mô tả việc xử ly timer interrupt (Ï) - ««+ss«<+<<s++ 99 Hình 4.19: Waveform mô tả việc xử lý timer interrupt (2) - - «<< s+++sss+ 99 Hình 4.20: Kết quả kiểm tra giai đoạn sau tông hợp luận lý với 37 lệnh 100
Hình 4.21: Giá trị các ô nhớ ở giai đoạn tổng hợp sau luận lý - 101
Hình 4.22: Waveform xử lý timer interrupt ở chế độ giám sát (1) 102
Hình 4.23: Waveform xử ly timer interrupt ở chế độ người dùng (2) 102
Hình 4.24: Waveform xử lý lệnh bat hợp pháp - - 2 s2 s2 ++£z+sz+xz£: 103 Hình 4.25: Tần số hoạt động tối đa của bộ xử lý - ¿:- ++cx+c+xzrrrerrees 103 Hình 4.26: Mạch kiểm tra trên FPGA - - 2k k+EEEE‡EEEEEESEEEEEEEEEEEkrkerkrkerkree 104 Hình 4.27: Bộ test_1 kiểm tra hoạt động của lệnh “add” trên FPGA 106
Hình 4.28: Kết quả giá trị mong đợi của thanh ghi -2- 2 2 s+sz+£z+cseẻ 106 Hình 4.29: Giá trị trong thanh ghi x4 được xuất ra trên FPGA . -: 107
Hình 4.30: Giá trị trong thanh ghi x10 được xuất ra trên FPGA : 107
Hình 4.31: Hình ảnh kiểm tra xử lý ngoại lệ trên FPGA (1) -. - 108
Hình 4.32: Hình ảnh kiểm tra xử lý ngoại lệ trên FPGA (2) «+ «<+ 108 Hình 4.33: Hình ảnh kiểm tra xử lý ngoại lệ trên FPGA (3) -«+- 109
Hình 4.34: Hình anh kiểm tra xử lý ngoại lệ trên FPGA (4) -.-« - «<2 109 Hình 4.36: Hình anh kiêm tra xử lý ngoại lệ trên FPGA (Š) .-‹ -<<- 110 Hình 4.35: Hình ảnh kiểm tra xử lý ngoại lệ trên FPGA (6) .-« -«<2 110 Hình 4.37: Hình ảnh kiểm tra xử lý ngoại lệ trên FPGA (7) - : - 110
Hình 4.38: Hình ảnh kiểm tra xử lý ngoại lệ trên FPGA (8) -«- 111
Hình 4.39: Hình ảnh kiểm tra xử lý ngoại lệ trên FPGA (9) - : - 111
Trang 15DANH MỤC BANG
Bang 1.1: Các lệnh cơ bản thuộc kiến trúc tập lệnh R'V321 2-2-5525: 2Bảng 2.1: Cấu trúc các định dạng lệnh RỶV32l .-SSĂ St eeee 10Bảng 2.2: Cau trúc lệnh ECALL và SRETT 2-22 5¿2+2££+£x++£xzzxzxesrxe 10Bảng 2.3: Cấu trúc các lệnh truy cập thanh ghi hệ thống 5-52 52 11Bang 2.4: Chức năng 37 RV32I và 6 lệnh hệ thong 2-2-5 5 s2 s+£+2 5+2 11Bảng 3.1: Tín hiệu input va output khối Tïmer 2- 22 5c 5+ sz2zx2z++zx+srsz 21Bang 3.2: Trang thái hoạt động của khối Timer - - 2 2 2 x+2E£+£e+£x+zxzsz 22Bảng 3.3: Tín hiệu input và output của khối Program Counter -s¿ 24Bang 3.4: Trạng thái hoạt động của khối Program CounIer - 5-22 s2 25Bảng 3.5: Tín hiệu input và output của khối Instruction Memory - 26Bảng 3.6: Trạng thái hoạt động của khối Instruction Memory - 5: s2 26Bảng 3.7: Tín hiệu input và output của khối Register File . : 5¿ 27Bang 3.8: Trang thái hoạt động khối Register File 2-2 2sz+zz+cxszxzsz 28Bảng 3.9: Tín hiệu input và output của khối Sign extend 5-5 sec ss2 29
Bang 3.10: Các giá tri tc thỜI - + c1 111211113111 91 11 1119 HH ng ng 29
Bảng 3.11: Tín hiệu input và output của khối ALU control .: -: =5+ 30Bảng 3.12: Trạng thái hoạt động khối ALU control -¿-s- + s+s+s+sexs+x+zezezxzsez 31Bảng 3.13: Tín hiệu input va output của khối ALLU -:-2¿©¿©cs¿5c+>s+e=s+ 33Bang 3.14: Tín hiệu điều khién thực thi các phép toán trong khối ALU 35Bang 3.15: Tín hiệu input và output của khối Data Memory -2- 36Bang 3.16: Trạng thái hoạt động khối Data Memory khi lưu đữ liệu 37Bảng 3.17: Trạng thái hoạt động khối Data Memory khi đọc dit liệu 37Bảng 3.18: Tín hiệu input va output của khối Branch COITD ĂcSS« + 38Bang 3.19: Trang thái hoạt động của khối Branch_comp -. :- ¿25+ 40Bảng 3.20: Tín hiệu input va output của khối Branch_control -:-¿ 41Bang 3.21: Trạng thái hoạt động của khối Branch control . ¿- ¿25+ 42Bang 3.22: Tín hiệu input va output của khối HDU 2-2-5 5 s2 s+£s2 5+2 43Bảng 3.23: Hoạt động của khối HDU đối với các lệnh RV321 - 45
Bảng 3.24: Hoạt động của khối HDU đối với lệnh hệ thống - 45
Trang 16Bảng 3.25: Tín hiệu input và output của khối Forward Unit Branch - 46
Bảng 3.26: Trạng thái hoạt động của khối Branch_ fwd (1) - cs-sesecxsxz 47 Bảng 3.27: Trạng thái hoạt động của khối Branch _fWd (2) ccssxscecscxz 47 Bảng 3.28: Tín hiệu input và output của khối Bypass .2 5¿55+ 552552 48 Bang 3.29: Trạng thái hoạt động của khối Bypass 2- 5 ©522cscxszxczez 49 Bang 3.30: Tín hiệu input và output của khối ¡d_bypass - 2- 25555552 50 Bảng 3.31: Trạng thái hoạt động của khối id_bypass (1) 5-5 sec 5s2 51 Bang 3.32: Trang thái hoạt động của khối id_bypass (2) -. 5-5 s+csz 5+2 52 Bang 3.33: Tin hiệu input va output của thanh ghi IF_ ID - s5 55+ <<s<++<ss+ 53 Bang 3.34: Tín hiệu input va output của thanh ghi ID_EX - -<+-+2 55 Bảng 3.35: Tín hiệu input và output của thanh ghi EX_ MEM - - -«- 59
Bảng 3.36: Tín hiệu input va output của thanh ghi MEM_WB «- 61
Bảng 3.37: Tín hiệu input và output của khối Reason Exception - 63
Bang 3.38: Nguyên lý hoạt động của khối Reason Exception - 5: s¿ 63 Bảng 3.39: Mô tả các ngoại lỆ -. - <6 c1 1 HH TH ngư 64 Bảng 3.40: Tín hiệu input va output của khối System Register File - 65
Bảng 3.41: Các giá tri CSR truy cập vào các thanh ghi hệ thống - 69
Bang 3.42: Giá trị của tường vector mode khi xảy ra ngoại lỆ - -‹- 72
Bảng 3.43: Tín hiệu input và output khối PC_handling_exc_addr 74
Bảng 3.44: Trạng thái hoạt động của khối PC_handling_exc_addr - 75
Bảng 3.45: Tín hiệu input và output của khối PC_ return_addr - 76
Bang 3.46: Trạng thái hoạt động của khối PC_ return_addr -z-s 77 Bảng 3.47: Tín hiệu input va output khối Control Unit -. -¿ s¿sz55+2=s+ 78 Bang 3.48: Trạng thái hoạt động của khối Control Unit 2 s2 s52 83 Bang 4.1: Kịch bản kiểm tra cho quá trình mô phỏng của bộ xử lý - 85
Bảng 4.2: Kết quả mô phỏng tín hiệu khối Control Unit khi thực thi lệnh 90 Bảng 4.3: So sánh kết quả 3 giai đoạn mô phỏng 2:2 5+csz2z++css+¿ 112
Bảng 4.4: Kết quả so sánh với đề tài nghiên cứu User Mode Interrupt: A Must for
Securing Embedded SŠySf€TNS G1 11H HH ng ng ệp 112
Bảng 4.5: Kết quả so sánh với dé tài Bộ xử ly RISC-V hỗ trợ chế độ giám sát 1 14
Trang 17Bảng 4.6: Kết quả so sánh với dé tai “Open-Source RISC-V Processor IP Cores for
FPGAs — Overview and Evaluation” ccescceesecesseceneeeeneeececeaceceaeeesaeeeneeeatersas 115
Trang 18DANH MỤC TỪ VIET TAT
FPGA Field-Programmable Gate Array
RISC-V Reduced Instructions Set Computer V
RV32I Reduced Instructions Set Computer V 32-bit Instruction
UM User Mode
SM Supervisor Mode
HM Hypervisor Mode
MM Machine Mode ABI Application Binary Interface SBI Supervisor Binary Interface SEE Supervisor Execution Environment
Tang IF Instruction Fetch stage
Tang ID Instruction Decode stage
Tang EX Execution stage
Tang MEM Memory stage
Tang WB Write Back stage
scause Supervisor Cause Register
stvec Supervisor Trap Vector Base Address Register sepc Supvisor Execution Program Counter Register sie Supervisor Interupt Enable Register
sstatus Supervisor Status Register
Trang 19USIE User Software Interrrupt Enable
SSIE Supervisor Software Interrrupt Enable UTIE User Timer Interrupt Enable
STIE Supervisor Timer Interrrupt Enable
Trang 20TÓM TẮT KHÓA LUẬN
Kiến trúc tập lệnh RISC-V là một kiến trúc tập lệnh mở Do đó, các côngtrình nghiên cứu và ứng dụng dựa trên kiến trúc này hiện nay rất nhiều và rất được
ưa chuộng Với một bộ xử lý kiến trúc tập lệnh RISC-V cơ bản bao gồm các khối
Control Unit, Program Counter, Instruction Memory, Register File, Immediate
Generation, ALU control, ALU va Data Memory Tuy nhiên, bộ xử ly kiến trúc tập
lệnh RISC-V hỗ trợ chế độ giám sát của nhóm thực hiện đề tai đã bổ sung thêm cáctín hiệu điều khiển cũng như các khối thực thi khác như khối Reason Exception,System Register File, nhằm phục vụ quá trình xử lý ngoại lệ và quá trình thực thi
37 lệnh thuộc kiến trúc RV32I, lệnh ECALL và 6 lệnh hệ thống khi bộ xử lý hoạt
động ở chế độ giám sát và chế độ người dùng Những bổ sung này được phát triển
dựa trên quá trình phân tích và đánh giá chỉ tiết các trạng thái hoạt động của bộ xử
lý Thêm vào đó, vì bộ xử lý được thiết kế dựa trên luồng thiết kế FPGA nên các tín
hiệu điều khiến cho từng trạng thái hoạt động của bộ xử lý trong khối Control Unitđược thiết kế theo dạng case (cầu trúc của một bộ chọn dữ liệu - mux) nhằm cải thiệnhiệu suất làm việc cho bộ xử lý Quá trình mô phỏng kết quả sẽ được thực hiện bang
cách mô phỏng chức năng và thời gian thực thi của bộ xử ly thông qua việc kiểm tra
waveform trên ModelSim và mô phỏng tự động với bộ chương trình kiểm tra V-tests Sau đó, phân tích và đánh giá hiệu suất của bộ xử lý Cuối cùng, nhóm sẽkiểm tra quá trình thực thi và hoạt động của bộ xử lý trên FPGA (DE2 kit)
Trang 21RISC-Chương 1 TONG QUAN DE TÀI
1.1 Tổng quan tinh hình nghiên cứu
1.1.1 Tình hình nghiên cứu ngoài nước
Năm 2019, Sandro Pinto và Cesare Garlati đã công bố công trình nghiên
cứu về việc áp dụng quá trình xử lý ngoại lệ ở chế độ người dùng vào hệ điều hànhnhúng thời gian thực FreeRTOS cho bộ xử lý MultiZone nhằm bảo mật những thiết
bị IOT sử dụng kiến trúc tập lệnh RISC-V [1] Kết quả nghiên cứu chỉ tập trung vàoquá trình xử lý ngoại lệ ở chế độ người dùng
1.1.2 Tinh hình nghiên cứu trong nước
Năm 2020, sinh viên An Xuân Tuấn đã thiết kế bộ xử lý 32 bit đơn chu kỳdựa trên kiến trúc RISC-V hỗ trợ chế độ giám sát [2] Kết quả bộ xử lý thực thi đúngchức năng của 37 lệnh thuộc kiến trúc RV32I, 6 lệnh hệ thông và xử lý các ngoại lệ
Tuy nhiên bộ xử lý được thiết kế đơn chu ky nên tần số hoạt động vẫn còn thấp.
1.2 Mục tiêu đề tài
1.2.1 Mục tiêu tong quát
Mục tiêu tổng quát của nhóm thực hiện dé tài là thiết kế một bộ xử lý 32 bit
áp dụng kỹ thuật Pipeline dựa trên kiến trúc tập lệnh RISC-V có kết hợp chế độ giám
sát và xử lý ngoại lệ.
1.2.2 Mục tiêu chỉ tiết
Từ mục tiêu tổng quát, nhóm sẽ chia thành 4 mục tiêu chỉ tiết sau:
e_ Mục tiêu thứ nhất: bộ xử lý khi ở chế độ người dùng phải thực thi được 37
lệnh cơ bản thuộc kiến trúc tập lệnh RV32I và lệnh ECALL Tương tự, khi
ở chế độ giám sát, bộ xử lý không những thực thi được 37 lệnh, lệnh ECALL
mà còn phải thực thi được 6 lệnh hệ thống, cụ thé như Bảng 1.1
Bảng 1.1: Các lệnh cơ bản thuộc kiến trúc tập lệnh RV32I
Trang 22Định dạng lệnh Lệnh
R-type add, and, or, xor, sll, srl, slt, sltu, sub, sra
addi, andi, ori, xori, slti, sltiu, slli, srli, srai, 1b, Ih, I-type
lw, Ibu, Thu, jalr, ECALL S-type sb, sh, sw
SB-type beq, bne, blt, bge, bltu, bgeu UJ-type jal
U-type auipc, lui
, CSRRW, CSRRS, CSRRC, CSRRWI, CSRRSI, Lénh hé thong
CSRRCI, SRET
e Mục tiêu thứ hai: bộ xử ly phải xử lý được các ngoại lệ bao gồm software
interrupt, timer interrupt, các lệnh bat hợp pháp và lệnh chuyên chế độ.Trong quá trình xử lý ngoại lệ, bộ xử lý phải chuyên sang chế độ giám sát.Sau khi xử lý xong, bộ xử lý sẽ trở về chế độ phù hợp bằng cách thực thi
lệnh SRET.
e_ Mục tiêu thứ ba: đánh giá kết quả hoạt động của bộ xử lý theo luồng thiết kế
Altera FPGA Design Flow thông qua 3 giai đoạn:
o Giai đoạn trước tong hợp luận lý: mô phỏng kết quả thực thi của bộ xử
lý trên ModelSim.
o Giai đoạn sau tổng hợp luận lý: Kiểm tra thời gian và kết quả thực thi
của bộ xử lý trên ModelSim và Quartus.
o_ Giai đoạn hiện thực hóa: Kiểm tra quá trình thực thi và kết quả hoạt động
của bộ xử lý trên FPGA (DE2 kit).
e_ Mục tiêu cuối cùng: so sánh kết quả mô phỏng và thực nghiệm với các đề
tài nghiên cứu đã thực hiện.
Trang 231:3 Phương pháp nghiên cứu
e Phương pháp nghiên cứu tài liệu:
o Tìm hiểu lý thuyết về kiến trúc tập lệnh RISC-V
© Quá trình thực thi các lệnh của bộ xử lý.
o Phân tích, đánh giá và đưa ra các trạng thái hoạt động của bộ xử lý.
e_ Phương pháp thiết kế: Altera FPGA Design Flow
e Phuong pháp mô phỏng:
o Viết test bench mô phỏng chức năng trên Model Sim
o_ Kiểm tra thời gian thực thi của bộ xử lý trên Quartus và ModelSim
e Phương pháp thực nghiệm: Hiện thực và kiểm tra trên FPGA (sử dụng DE2
kit).
e Phương pháp phân tích, đánh giá và so sánh kết quả: Thực hiện việc so sánh
kêt quả với các đê tài nghiên cứu đã thực hiện.
Trang 24Chương 2 CƠ SỞ LÝ THUYET
2.1 Chế độ đặc quyền
Trong tài liệu nghiên cứu về các chế độ đặc quyền của RISC-V [4], bộ xử lý
tại một thời điểm chỉ có thé chạy ở một trong 4 chế độ đặc quyền theo mức đặc quyền
tăng dân sau:
1 Chế độ người dùng (User Mode - UM): Được dùng cho các ứng dụng
người dùng.
2 Chế độ giám sát (Supervisor Mode - SM): Được dùng dé thực thi Kernel
của Hệ điều hành
3 Chế độ siêu giám sát (Hypervisor Mode - HM): Được sử dụng nhằm hỗ
trợ việc ảo hóa (Virtualization).
4 Chế độ máy (Machine Mode - MM): Day là mức đặc quyền cao nhất và
có quyền truy cập cũng như sử dụng toàn bộ tài nguyên phan cứng củacác chế độ thấp hơn Chế độ máy thường được dùng dé chay Bootloader
sẽ chuyên sang trạng thái xử lý ngoại lệ ở chế độ có mức đặc quyên cao hơn Sau khi
xử lý xong, bộ xử lý sẽ trở về tại vị trí xảy ra trap (đối với interrupt) hoặc sau vị tríxảy ra trap (đối với exception) dé tiếp tục chương trình
2.2 Bộ xử lý hai chế độ
Một bộ xử lý hiện đại thường có hai chế độ hoạt động gồm chế độ ngườidùng và chế độ giám sát như Hình 2.1
Trang 25o_ Thực thi các ứng dụng và phần mềm của người dùng.
o Có thé chạy nhiều tiến trình cùng một lúc Mỗi tiến trình sẽ bao gồm
một ứng dụng của người dùng (Application).
o_ Quá trình thực thi của ứng dụng được mã hóa bang giao diện nhị phân
ứng dung (Application Binary Interface - ABI) dé có thể chạy các ứngdụng người dùng hoặc gửi yêu cầu cho chế độ giám sát
o_ Không có quyền truy cập vào chế độ hệ thống cũng như thực thi các
lệnh hệ thống
© Chế độ giám sát
o_ Thuộc về chế độ hệ thống
o Quản lý hoạt động của toàn bộ hệ thống bao gồm phân chia tài nguyên
cho các ứng dụng, xử lý các ngoại lệ và yêu cầu từ chế độ giám sát và
chế độ người dùng
© Bộ xử lý sẽ sử dụng Hệ điều hành dé hỗ trợ các ứng dụng chế độ
người dùng giao tiếp với chế độ giám sát
o Các yêu cau từ chế độ người dùng và chế độ giám sát sẽ được gửi tới
giao diện nhị phân chế độ giám sát (Supervisor Binary Interface
-SBD từ OS và được mã hóa thành các mã lệnh.
Trang 26o Sau đó, các mã lệnh sẽ được gửi tới môi trường thực thi chế độ giám
sát (Supervisor Execution Environment - SEE) đề tiến hành xử lý các
yêu cầu đó
o Có quyên truy cập vào bat kỳ tài nguyên trong bộ xử lý ké cả các ứng
dụng người dùng cũng như thực thi được toàn bộ các lệnh của bộ xử
Z
lý.
2.3 Trang thái hoạt động của bộ xử lý hai chế độ
Dựa trên cơ sở lý thuyết [3] [4], nhóm đã phân tích và thiết kế ra các trạng
thái hoạt động chính của bộ xử lý kiến trúc tập lệnh RISC-V có hỗ trợ chế độ giám
sát như Hình 2.2.
Trở về chê độ người dùng
Thực thi tiến
trình chê độ người dùng
o Bộ xử lý sẽ ở chế độ người dùng và thực thi các tiến trình chế độ
người dùng bao gồm thực thi 37 lệnh cơ bản thuộc kiến trúc tập lệnh
RV32I và lệnh ECALL.
Trang 27o Khi xảy ra ngoại lệ, bộ xử lý sẽ nhảy sang chế độ giám sát và chuyên
trạng thái hoạt động sang trạng thái xử lý ngoại lệ từ chế độ người
dùng.
©_ Trong quá trình thực thị, nếu bộ xử lý thực thi lệnh SRET thì bộ xử
lý vẫn ở chế độ người dùng
e Chế độ giám sát
o Bộ xử lý sẽ ở chế độ giám sát và thực thi các tiến trình chế độ giám
sát bao gồm thực thi 6 lệnh hệ thống, 37 lệnh cơ bản thuộc kiến trúc
tập lệnh RV32I và lệnh ECALL.
o_ Khi xảy ra ngoại lệ, bộ xử lý vẫn ở chế độ giám sát và chuyền trạng
thái hoạt động sang trạng thái xử lý ngoại lệ từ chế độ giám sát
©_ Trong quá trình thực thi, nếu bộ xử lý thực thi lệnh SRET thì bộ xử
lý sẽ trở về chế độ người dùng
e - Trạng thái xử lý ngoại lệ
o Bộ xử lý sẽ ở chế độ giám sát Đồng thời, bộ xử lý sẽ lưu lại trạng
thái hoạt động khi xảy ra ngoại lệ, xác định nguyên nhân xảy ra ngoại
lệ và tiến hành xử lý ngoại lệ
o Sau khi xử lý ngoại lệ xong, bộ xử lý sẽ trả về chế độ người dùng nếu
ngoại lệ xảy ra từ chế độ người dùng Ngược lại, bộ xử lý sẽ trả vềchế độ giám sát nêu ngoại lệ xảy ra từ chế độ giám sát
o_ Khi tiến hành xử lý 1 ngoại lệ, các thủ tục được kích hoạt như trong
Hình 2.3.
Trang 28scause.interrupt = 1: Xác định e scause.SPP: Lưu lại chế độ lúc xảy
có ngoại lệ xảy ra ra ngoại lệ
scause.Exception_code: Lưu e sstatus.SIE: Cho phép ngắt xảy ra
nguyên nhân xảy ra ngoại lệ e sstatus.SPIE: Lưu giá trị SIE trước
như trong Bảng 3.38 đó
Xứ lý ngoại lệ
Thanh ghi sepc Thanh ghi stvec
Lưu lại giá trị PC tại vị trí chương e Nếu (Stvec.mode == Direct) thì
trình bi gián đoạn dùng làm địa PC = stvec.Base
chỉ trả ve e Nếu (Stvec.mode == Vectored) thì
PC= stvec.Base+(Exception_code*4)
Hình 2.3: Các thủ tục xử lý ngoại lệ
o Khi xử lý xong ngoại lệ (thực thi lệnh SRET), các thủ tục được kích
hoạt như sau:
v Trở về chế độ hoạt động lúc chưa xảy ra ngoại lệ sử dụng bit
sstatus.SPP.
Y Địa chỉ PC trở về vị trí lúc xảy ra ngoại lệ được lây lại từ thanh
ghi sepc.
Vv sstatus.SIE = SPIE, sstatus.SPIE = 0.
o Chi tiết về các bit cũng như thanh ghi trong quá trình xử lý ngoại lệ
được mô tả chỉ tiết trong Chương 3
Trang 292.4 Các định dạng lệnh thuộc kiến trúc RISC-V
Như đã đề cập trong phần 1.2.2, nhóm sẽ tập trung thiết kế bộ xử lý có khả
năng thực thi 37 lệnh RV32I, lệnh ECALL và 6 lệnh hệ thống Các lệnh này có cautrúc được mô ta như Bảng 2.1, Bang 2.2 va Bảng 2.3.
imm imm | imm
imm[10:5] rs2 rsl funct3 opcode S
[11] [4:1] | [0]
imm imm | imm
imm[10:5] rs2 rs] funct3 opcode SB
Trang 30Bảng 2.3: Cấu trúc các lệnh truy cập thanh ghi hệ thống
Dựa vào Bảng 1.1 , 37 lệnh RV32I sé được phân chia theo các định dạng lệnh
R-type, I-type, S-type, SB-type, U-type và UJ-type Do đó, khi thực thi các lệnh này,
bộ xử lý sẽ dựa vào cấu trúc của từng định dạng lệnh như Bảng 2.1 dé xác định lệnhcần thực thi Tương tự với lệnh ECALL và 6 lệnh hệ thống, bộ xử lý cũng sẽ dựa vàocau trúc như Bảng 2.2 và Bang 2.3 dé thực thi đúng chức năng của từng lệnh
2.5 Chức năng các lệnh RV32I và lệnh hệ thống
Chức năng của các lệnh khi thực thi được mô tả như Bảng 2.4.
Bang 2.4: Chức năng 37 RV32I và 6 lệnh hệ thống
Định dạng
Lệnh Chức năng lệnh
Trang 31ori Rird] = R[rs1] limm
xori Rird] = R[rs1]^ imm
Trang 32beq If(R[rs1] == R[rs2]) PC = PC + {imm,1’b0}
bne If(R[rs1] != R[rs2]) PC = PC + {imm,1’b0}
blt If(R[rs1] < R[rs2]) PC = PC + {imm,1’b0}
SB-type
bge If(R[rs1]>=R[rs2]) PC = PC + {imm,1’b0}
bltu If(R[rs1] < R[rs2]) PC = PC + {imm,1’b0}
bgeu If(R[rs1] >= R[rs2]) PC = PC + {imm,1’b0}
UJ-type jal R[rd] = PC +4; PC = PC + {imm,1’b0}
Trang 33CSRRCI R[rd] = CSR; CSR = CSR & ~imm
Trang 34Bộ xử lý sử dung kỹ thuật pipeline sẽ thực thi đồng thời nhiều lệnh bang
cách chia chu kỳ thực thi lệnh thành các tầng (stage) Tại một thời điểm, một lệnh chỉ
được thực thi tại một tầng
Cấu trúc pipeline 5 tang được biểu diễn trong Hình 2.6 Giữa các tầng với
nhau sẽ chèn thêm thanh ghi nhằm lưu trữ dữ liệu từ đầu ra của tang trước và cung
câp cho tâng sau đó.
Thanh Thanh Thanh Thanh
Hình 2.6: Cấu trúc tổng quát bộ xử lý sử dụng kỹ thuật pipeline
Mỗi tầng ở Hình 2.6 đảm nhiệm một công việc khác nhau trong quá trìnhthực thi lệnh của bộ xử lý, gồm:
e Tang IF: Nạp lệnh từ bộ nhớ
e Tang ID: Giải mã lệnh và đọc các thanh ghi cần thiết
e Tang EX: Thực thi các phép tính hoặc tính toán địa chỉ
e Tang MEM: Truy xuất các toán hạng trong bộ nhớ
e Tang WB: Ghi kết quả vào thanh ghi
2.6.2 Các van đề của pipeline
Tình huống lệnh tiếp theo không thê thực thi trong chu kì pipeline ngay sau
đó được gọi là xung đột (hazard).
Ba nguyên nhân dẫn đến xung đột trong pipeline gồm xung đột cấu trúc(Structural hazard), xung đột dữ liệu (Data hazard) và xung đột điều khiến
(Control/Branch hazard).
15
Ũ
Trang 352.6.2.1 Xung đột cấu trúc (Structural hazard)
Xung đột cấu trúc xảy ra khi hai hay nhiều lệnh cùng truy xuất vào một tài
nguyên phan cứng tại cùng một thời điểm
Giải pháp: sử dụng riêng 2 bộ nhớ dành cho tập lệnh và dữ liệu.
2.6.2.2 Xung đột dữ liệu (Data hazard)
Xung đột dữ liệu xảy ra khi lệnh sau phụ thuộc vào việc hoàn thành truy cập dữ liệu của lệnh trước đó.
Xét ví dụ về nguyên nhân xảy ra xung đột dữ liệu ở Hình 2.7
sẽ đọc giá trị từ x2 Thanh ghi x2 được cập nhật giá tri tại giai đoạn WB (ghi kết quả
vào thanh ghi đích) ở chu kỳ clock thứ 5 Vậy tất cả các yêu cầu đọc giá trị từ thanh
ghi x2 trước chu ky clock thứ 5 sẽ gây ra xung đột dữ liệu.
Giải pháp:
e Sử dụng gửi vượt trước (Forwarding) kết quả ngay sau khi giá trị được
tính toán hoặc được lưu vào bộ nhớ, không cần chờ đến khi kết quả
16
Trang 36được lưu vào thanh ghi Dựa vào Hình 2.8, kết quả của lệnh add đã có
sau tang EX Thay vì phải đợi đến tang WB dé kết quả được ghi vào
thanh ghi, ta có thé lay kết quả đã được tính toán sau tang EX làm giá
trị cho toán hạng đâu vào của lệnh sub phía sau.
e Khi load một giá trị từ bộ nhớ ra thanh ghi, ít nhất phải sau tang MEM
giá trị tại ô nhớ mới được xuất ra và nạp vào thanh ghi Tuy nhiên nếu
lệnh ngay sau đó yêu cầu giá trị chưa được load ra này làm đầu vào chokhối tính toán sẽ dẫn đến xung đột dữ liệu kiêu load-use Vì vậy trường
hợp này sẽ sử dụng chèn bước trì hoãn (stall và chèn bubble) như trong Hình 2.9.
Trang 372.6.2.3 Xung đột điều khiển (Control/Branch hazard)
Xung đột điều khiển xảy ra khi một lệnh rẽ nhánh được thực hiện và bộ xử
lý sẽ không biết lệnh tiếp theo phải nạp là lệnh nào vì tại các thời điểm nạp lệnh chưa
xác định được kết quả của lệnh rẽ nhánh đó.
Xét ví dụ về xung đột điều khiển ở Hình 2.10
Time (in clock cycles) =
e Sử dụng dự đoán rẽ nhánh tĩnh: Luôn luôn dự đoán không thực hiện rẽ
nhánh (Predict branch not taken) và thực thi tuần tự các lệnh phía sau.Sau khi tính toán chính xác nếu dự đoán sai sẽ xóa các lệnh đã nạp vàotang IF và tang ID (flush)
Như trong Hình 2.10, ta có thé thay các số bên trái lệnh (40, 44, 48 ) là
địa chỉ của các lênh Vì lệnh beq hoàn tất việc so sánh và quyết định có nhảy hay
không ở chu kỳ clock thứ 4, nên 3 lệnh tuần tự theo sau (and, or và add) sẽ được tìmnạp và bắt đầu thực thi Nếu lệnh beq được thực thi sẽ nhảy đến địa chỉ 72 xử lý lệnh
ld Bên cạnh đó sẽ xóa 3 lệnh tuần tự theo sau (flush và set tín hiệu điều khiến về 0)
18
Trang 38Chương 3 THIẾT KE HE THONG
độ giám sát và xử lý ngoại lệ như Hình 3.1.
19
Trang 40Hình 3.2: Cấu trúc khối Timer
Các tín hiệu input va output được mô tả trong Bảng 3.1.
Bảng 3.1: Tín hiệu input và output khối Timer
ˆ Loại tín | Độ `
Tín hiệu Mô tả
hiệu rộng clk input 1 bit | Tín hiệu clock của bộ xử lý TSf input 1 bit | Tín hiệu reset của bộ xử lý
Tín hiệu cho phép load giá trị ban đầu của khối
load input 1 bit
Timer
enable input 1 bit | Tín hiệu kích hoạt hoạt động khối Timer
mode input 1 bit | Tin hiéu chon ché d6 hoat động
data input | 4bit | Giá trị ban đầu tùy chon cho khối Timer
inter timer | output | 1 bit | Tín hiệu nhận biết timer interupt
21