Chúng lớn hơn vì chúng yêu cầu nhiều bóng bán dẫn hơn Kiến trúc RISC 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,
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
NGUYEN CAO TUẦN
KHÓA LUẬN TÓT NGHIỆP
Trang 2ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
NGUYEN CAO TUAN - 17521216
KHÓA LUẬN TÓT NGHIỆP
NGHIÊN CỨU THIET KE BỘ VI XU LY MIPS 32 THEO
KIEN TRUC SUPERSCALAR
RESEARCH DESIGN MIPS32 PROCESSOR WITH
SUPERSCALAR ARCHITECTURE
KY SU NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
TIEN SI NGUYEN MINH SON
TP HO CHi MINH, 2021
Trang 3THÔNG TIN HỘI ĐÒNG CHÁM KHÓA LUẬN TÓT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 62/QD-DHCNTT
ngày 14 tháng 02 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến thay hướng dẫn Tiến sĩ Nguyễn Minh Son, thay đã tận tình hướng dẫn em 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 ý để em
có thê hoàn thành khóa luận một cách tốt đẹp.
Bên cạnh đó, em cũng xin gửi lời cảm ơn đến Thầy/Cô và bạn bè khoa Kỹ
thuật máy tính nói riêng và trường Đại học Công nghệ Thông tin — Dai 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, đồng hành và hỗ trợ em trong suốt quá trình học tập tại trường Dai
học Công nghệ Thông tin Những kiến thức và kinh nghiệm quý báu đó sẽ là hành
trang giúp em day tu tin khi bước vào đời
Cuôi cùng, em xin dành lời cảm ơn sâu sac đên ba mẹ và gia đình vì đã luôn sát cánh, động viên, tạo điêu kiện và là cho dựa tinh thân vững chắc trên con đường học tập của em.
Trong suốt quá trình thực hiện đề tài khóa luận, em không thể tránh khỏi
những khó khăn và sai sót do một số giới hạn liên quan đến chuyên ngành chuyên
sâu Vì thế, em mong các quý Thầy/Cô và các bạn sẽ thông cảm, và có thể đóng góp
ý kiến dé dé tai khóa luận này được phát triển và hoàn thiện hơn trong tương lai.
Một lần nữa em xin chân thành cảm ơn.
TP Hô Chi Minh, ngày 29 tháng 12 năm 2021
Sinh viên thực hiện
Nguyễn Cao Tuan
Trang 51⁄2 Kiến trúc MIPS -22-+22E+++t222EEE222211227111227112 2.2111 c1 crrrrveg 8
1.2.1 — Lịch sử phát tri@n i.e essseesssessseessseesssecsseessseessseesseessseessseesseeessees 8 1.2.2 Kién trúc tập lệnh cc¿©+++t2ccvrrerrrverrrrrrrrrrrrk 10
1.2.3 Các tập lệnh thực thi trong khóa luận - 5s 5s+s<+s+s>sc+x 13
Chương 2 THIẾT KE VI XỬ LÝ MIPS32 -2-2©++£+2E+++vxevcvseeeri 16
2.1 Tổng quan thiết kế vi xử Ys ccccssccssssssescsssseescossssscsssueccssssecsesssessessseesessseesessseess 16
2.2 Các khối chức năng trong VI XỬ ÌẾ - c5 + St + +EsEekereeerserrsrekerrrrke 17
2.2.1 Khối Block Memory Generafor -z-©se+2++e+cr+szrrseeere 172.2.2 Khối Program COunIer -c+2+++2++ettEEketEErkerrrkerrrrerek 192.2.3 Khối Control Unit 2¿2++e+22E+++ttEEExertrrrxrrrrrrrerrrre 19
2.2.4 — Khối Register File 222ccc2CcErrrrErkrrrrrrtrrrrrrrrrree 22 2.2.5 _ Khối Register High/LOow -2ccc222cccccEkerrrkkrerrkrrrrkecree 23
2.2.6 Khối ComparatOr -2-c+2E+e2EEEEEEEEEeEEEkkrrrrkrrrrrerrek 24
2.2.7 Khối Sign Extend -2cccc22cvxrreErEkerrrrrrrrrrrrkrrrrre 24
2.2.8 Khối ALU -2cccS22EEEEEEEErrEErkrrrrrrrrrrrrrrrree 252.2.9 Khối MulVDiv -2-2+c++2CE+EetEEEEEECEEEEErrrrrkrrrrrrrkeerrre 26
2.2.10 Khối xử lý MemLoad -¿ 2 ©£+2E+£+£+E+2EE++EExztErkrrrkerrrecrre 27
Trang 62.2.11 Khối Forwarding Unit ¿-cc+2++22E+eteEEketrrrkerrrkerrrrecrek 28 2.2.12 Khối Hazard Unit -ccccccrrrtrrerrrrrrrrrrrrrrrrrrrrriiee 30
2.3 Các xung đột đường ống cần giải quyết -++22+ze+cz+ererrrerrrrecee 32
2.3.1 Kiến trúc đường ống hóa của vi xử lý -c c-cc+ccxecerrsecre 32
2.3.2 KUNG GOt AT LSU 1 33 2.3.3 Xung đột Load Data oe eeeesesseeeeeeeeeeeeseeeeeseeeeseseeeeaeeeeeceeeeseeeeaees 35 2.3.4 Xung đột rẽ nhánh oo ee escsssseseeseseeeeeeeeeeeseeeeseeeeecseeeeseeeeeeeeeeeaees 37
Chương 3 THIET KE VI XU LY MIPS32 VOI GIAO THỨC AX14 39
3.1 Đóng gói vi xử ly MIPS với giao thức AXÍ4 5 5< c+cc+xserssesers 39
3.1.1 _ Kiến trúc vi xử lý trước khi đóng gói - sec 39 3.1.2 _ Kiến trúc vi xử lý khi đóng gói thành IP -+- 40
3.2 Giao thức AXĨ4 c1 HH HH HH re gh 4I
3.2.1 _ Tổng quan giao thức -=+2++£+2E+Et2EE+etEEEEerrrkerrrreerri 41
3.2.2 Các tín hiệu cụ thé của giao thức AXI trong khóa luận 44 3.2.3 Mô phỏng tổng quan năm kênh giao tiếp AXI 45
3.3 Bố sung các khối chức năng khác - 2 +2+++++2E++e+2E++trrxerrrrseee 46
3.3.1 Khối Control cccccccrrrrrrrrrrrtrttrrtrtrrrtrrtrrtrrtrrrrrrrriee 463.3.2 Khối StoreQueue s-cs xx‡Ext+EEtSEEEEEEEEEEESEEEEEEEEkrEEkrtrkerrkerrrrrs 47
Chương 4 THIẾT KE BLOCK DESIGN TREN VIVADO . - 49
4.1 Tổng quan thiết kế Block Design ccccccscccssssssssssssssesssssseccssssesessssesesssseesessseeeen 49
4.1.1 Kiến trúc tổng quan thiết kẾ ¿+2++2EE+etzEEErrrkerrrrkerrrred 494.1.2 Thiết kế trên Vivado evvevrriiiiiiiiiiiiiiriiiiiiiiirirrirrrie 50
4.2 Các IPcủa Xilinx dùng trong thiết kế Block Design - 50
4.2.1 IP Memory Interface Generator (MIG 7 S€r1e$) -‹ c 50
Trang 74.2.2 IP Central Direct Memory Access (IP CDMA) -+- 51
4.2.3 IP AXT Bram ControÏÏeT <5 S5 3+ * 3+3 # +2 ££#EeeEeeeeeeeeeeeees 51
Chương 5 MƠ PHONG VA ĐÁNH GIA THIET KE -2-©2+- 52
5.1 Mơ phỏng tập lệnh 2-++++2VE++++2EEE++tEEEEEEEEEEEEtEEEEEErrrrrkrrrrrrrkrree 52
5.1.1 Mơ hình kịch bản kiểm thử ¿¿2+2e+2EE++ettEErkeerrrrkeerrre 52
5.1.2 _ Kết quả mơ phỏng 22©++£+EE+EtEEEEEtEEEEEtEEEerrrrkrrrrrrrrrt 535.2 Kết quả tổng hợp, thực thi và đánh giá thiết kế 2- ¿c5 72
5.2.1 Két quả tong hợp, thực thi của IP vi xử lý MIPS - 72
5.2.2 Kết quả tong hợp, thực thi của Block Design - 745.2.3 — Đánh giá thiết kế ccccLeccErkerrrkerrrrkrrrrrrrree 76Chương 6 KÉT LUẬN VÀ HƯỚNG PHAT TRIÉN ¿-¿2 2z 77
6.1 Kết ane ccccccsscssssssssssisessstisetesesecsssseccssssseccssssccssstecessssssessssseccesssecessssecesssseses 71
6.1.1 Những kinh nghiệm tích lũy 5s ++s+s++e+e+ereeereeeeesreeree 77
6.1.2 _ Các vẫn đề tồn đọng -©222c+2E+ECEEEEECEEEEetEELkrrrkrrrrrkrrek 77 6.1.3 Kết quả đạt được ccc22ccxcrcccrxeeerrrxrrrrrrkrrrrre 78 6.2 Hướng phat triÊn - + ++e+2+k2EEE22E11227111711211127112711271 1X cixrre 78 TÀI LIEU THAM KHẢO 2 ©22£©++2EE+++EEEEEEEEEEEEEEEEEEEEEEEEerrrrkrrrrrrrrre 79
PHU LUC I KIT FPGA XILINX VIRTEX-7 VC707 2¿-©c¿22ccsscc+ẻ 80PHU LUC II CAC BUGC GENERATE BITSTREAM ccccssscssecssessseesseessceseeeseeess 83
Trang 8DANH MỤC HÌNH
Hình 1.2: Tesla Model S (MIPS I-class CPU) - 5-5 2 St St Skeirerrsreererree 9
Hình 2.2: Khối Block Memory enertOr -2-©++22++++222+++++tvvvzestrvseccee 17
Hình 2.3: Cách thức ghi va đọc của | port trong Block Memory Generator! 18
Hình 2.4: Khối Program COU€T -2- 2£ ©+£2++£+2EEE£EEEEESEEEECEEEEEEEEEEtEErkrrrrrkrrre 19
Hình 2.5: Khối Control Unit ccccccccccccctccc++‡EEEEEEEEktktttrrrrrrrrrrrrrrrrrrrrrrrrte 19
Hình 2.6: Khối 30101 11177 22
Hình 2.7: Khối Register High/LOW -22-2222++222E+++tEEEEEvrtEEEErrerrrkrrrrrrrrcree 23
Hình 2.8: Khối 098i i20 24
Hình 2.9: Khối Sign Extend cccccccscssesssssesssssesssssessssesssssesssseessssecssssesessecssssesesssesesseesesseeee 24
Hình 2.10: Khối ALU :tt,ttttrrhhhhiHHHHHeeerieg 25
Hình 2.11: Khối MulVDiV cccccccccctccrrrrtrrEttrttttrrirrrrrrrrrrrrrrrrrrrriiie 26
Hình 2.12: Khối xử 0/000 3G 27Hình 2.13: Khối Forwarding Unit -¿©++£+2E+++EE+Et2EEEEtEEEEerEEEerrrrkerrrrerrre 28
Hình 2.14: Khối Hazard Unit -cccccccccccccccc22‡EEEEEEEEttttttrrrirrrrrrrrrrrrrrrrrrrrtkke 30 Hình 2.15: Kiến trúc đường ông hóa của vi xử lý -¿¿se+c+xetzerxerrrreerr 32
Hình 2.16: Gửi vượt trước dữ liệu trong Vi Xử lý 5c Sssskserseererrsrke 34
Hình 2.17: Gửi vượt trước cho lệnh ghi MemOryy 5555 s+x+exseevssreeeee 35
Hình 2.18: Xung đột với các lệnh load dữ liệu - 5555 x+<£se+seesserseeee 36
Hình 2.19: Lệnh load dit liệu và tính toán dữ liệu - 5-5 +22 sssesesesxee 36
Hình 2.20: Lệnh rẽ nhánh xảy ra trong đường ống xử lý -: : 37
Hình 2.21: Lệnh rẽ nhánh ở vi trí B trong cặp lệnh «5= «+s+ss++ex+ess2 38
Hình 2.22: Lệnh rẽ nhánh cần dữ liệu từ lệnh trước - se s++:x++zx++zx++rss 38 Hình 3.1: Kiến trúc vi xử lý MIPS trước khi đóng gói -c¿csc+¿ 39
Hình 3.2: Kiến trúc vi xử lý MIPS khi đóng gói thành IP -¿- ¿+ 40
Hình 3.3: Kiến trúc chung của giao thức AXI4 ¿¿22+c++ccvvscrecrseccee 41
Hình 3.4: Một transaction doc của giao thức AXHÍổÌ, cv exsxsrsrerersrses 42
Trang 9Hình 3.5: Một transaction ghi của giao thức AXXHIÏổÌ, tt stststexerererrrsrerses 43 Hình 3.6: Mô phỏng hai kênh đọc AXI4 của Vi xử lý s- S5 cccscsecsesreseee 45
Hình 3.7: Mô phỏng hai kênh ghi AXI4 của vĩ Xử lý - 5 se cscsrseereereeeee 45
Hình 3.8: Mô phỏng kênh phản hồi tín hiệu ghi AXI4 của vi xử lý - 46
Hình 3.9: Khối ContrOl 2¿-++2EE+++22EE+++EEEEE++tEEEEEEEEEEEEtEEEEEErrrrrkrrrrrrkrree 46
Hình 3.10: Khối Store(Queue 2-2 ©+z+2+E£+EEEEEEE2EEEEEEE127121711127112712 211 47 Hình 4.1: Kiến trúc tổng quan thiết kế của Block Design 2- ¿+ 49 Hình 4.2: Block Design trên phan mềm Vivado 2¿2©s22+22£+z+£zxz+cvsez 50
Hình 4.3: IP Memory Interface Generator 5 + + 5+ EE+vEeEeeereeererrrreerke 50
Hình 4.4: IP Central Direct Memory Access (CDMA) ccccscsceereeee 51
Hình 4.5: IP Bram Controller va IP Block Memory GeneratfOr -s«-«¿ 51
Hình 5.1: Mô hình kịch bản kiểm thtte.cccccccccssssssssssssssssssssssscsssesssssessssesssssesseeseeeeeeeeeeees 52
Hình 5.2: Doan câu lệnh trong Initial - - ¿2+ 5+ *+s£+eE+eEek+eEeekeeeeerrseeerre 53
Hình 5.3: Yêu cầu đọc trên kênh địa chỉ dC ccecccsssssssesssesssessseesssesseessvesueesseeseceaneeneeens 53
Hình 5.4: Nhận dữ liệu qua kênh doc dữ liệu - 5+ 5+++£+++>++exez+e+ezsesss 54 Hình 5.5: Ghi dữ liệu được đọc từ bus AXI vào Instruction Memory 54
Hình 5.6: Quá trình thực thi trong vi xử lý [1] - 5< +<<+x+<+eeexeexeesereereess 55
Hình 5.7: Khối Mult/Div thực hiện tính toán -:-+++++++++++ttttttrrrrrrrrrrrrre 56
Hình 5.8: Quá trình thực thi trong vi xử lý [2] - 55+ +<>+x+s+eeexeexeeeereereere 56
Hình 5.10: Ghi giá tri trên bus AXÍ⁄4 55+ Sc + St SH grrrkg 57
Hình 5.11: Tín hiệu phản hồi ghi dữ liệu -. -¿¿¿2©+z+2E+z+zxzecvseerx 58
Hình 5.12: Quá trình thực thi trong vi xử lý [3] 5c cc+csxseeerereeesrseeee 58
Hình 5.13: Quá trình thực thi trong vi xử lý [4] - -cc+cs<c+ccsersexeeereerees 59
Hình 5.14: Quá trình thực thi trong vi xử lý [Š ] - s5 se cccsserseeererrreereeee 60
Hình 5.15: Kết quả Register File và High/Low Register [1] - 61 Hình 5.16: So sánh kết qua mô phỏng với phần mềm MARS [1] 62
Hình 5.17: Đoạn câu lệnh trong Main Ì - - 555 55+ ++£+k£++eEeeeeresseeeeeerere 62
Hình 5.18: Đoạn lệnh chương trình con Sub Ì - Ì 5s ++s+x+x+exse+exexeeeereeees 62
Trang 10Kết quả thực thi của Sub 1-1 -¿2++e+2E++tSEEEetEEEketrrkerrrrkeerrked 63
Kết quả mô phỏng của Sub1-1 trên MARS :-2¿©cscz- 63
Đoạn lệnh chương trình con Sub Í -2 ¿+ + +s++++sx+e+erseeseeeeesreeree 64
Giá tri lưu trên Data Memory trong MARS [1] - ‹ - 64
Kết quả lưu Data Memory trên vi xử lý [ Ï] . ¿zz5csez 64
Đoạn lệnh chương trình con Sub Ï -Ä ¿55+ s+ss+x+exsssexezeeeexssres 64
Kết quả thực thi của Sub Í -3 22-2sc+2E++c2EEEEtEEEEetEEEErrrkkrrrkrcrek 65
Kết qua mô phỏng của Sub1-3 trên MARS 2- zcsz+c5se¿ 65
Đoạn lệnh chương trình con Subl -4 -s+s++sssx+x+ereeeexereeesreeeee 66
Kết quả thực thi của Sub Í ~4 22-se+2E+Ec2EEEEtEEEEetEEEkrrrrkrrrrrerrek 66
Kết quả mô phỏng của Sub1-4 trên MARS cccecsceesrsreee 67
Đoạn câu lệnh trong Main 2 - c5 S5 5+ *+tSsxssereeersreereerrrrrrke 67
Doan câu lệnh trong Sub2-1 - ¿+ ++++2+E+eExkekxekeereeeeesererkerkre 68
Kết quả thực thi của Sub2-[ -2-2+2+2E++e+EEEEtEEEEetEEEkerrrkerrrreree 68
Kết qua mô phỏng của Sub2-1 trên MARS -2¿cs+- 68
Đoạn câu lệnh trong Sub 2 -2 - ¿+ + + ++£*+EeEexerekerrsrekereerrreerke 69
Kết quả thực thi của Sub22-2 -22¿+2++c2EExettEEkettrkkesrrkerrrrerrre 69Kết qua mô phỏng của Sub2-2 trên MARS -+-<+<++ecseees 70Kết quả vi xử lý khi hoàn tat kịch bản kiểm thử - 70 Kết qua mô phỏng trên MARS 2-22 ©2£2E£+EEE££EEEtEEEerrrxerrseee 71
Giá tri trong Data Memory của Vi XỬ Ìý c+ccsrereersreresreeeee 71
Giá tri Data Memory trong phần mềm MARS -2- ¿+ 71
Tai nguyên sử dụng của IP vi xử lý MIPS 555cc ssc+sersesee 72
Tài nguyên sử dụng của các khối logic trong IP vi xử lý MIPS 72
Xung clock chính trong IP vi xử lý MIPS 555 5<<<c<<xsesee 73
Phân tích Timing cho IP vi xử lý MIPS 5 Ăn Sesesrteeeriey 73
Bao cáo năng lượng tiêu thụ của IP vi xử lý MIPS - 74
Tổng số lượng xung clock trong thiết kỀ 2 ¿2se2cszeccsed 74
Phân tích Timing cho Block Des1gn . 5555 S<c++rseeexereesrseeee 75
Trang 11Hình 5.48: Tài nguyên sử dụng trong Block Design - 5c sscsserseeee
Hình 5.49: Báo cáo năng lượng tiêu thụ của Block Design -. -c+c++
Trang 12DANH MỤC BẢNG
Bảng 1.1: Tập thanh ghi trong MIPS 5 + 5S St St ererrekrereerrrrke II
Bang 1.2: Các thanh ghi khác -¿-¿- ¿+ + ++*+*+*E+E*E#E£kEkEkEkEEkEkEk TH ng ve 11
Bang 1.3: Cấu trúc định l;šp3g [dit 12
Bảng 1.4: Cau trúc định dang lệnh I 2 2¿©2+++22ES+++t2E+zretrxxrrrrrrrrcree 12 Bảng 1.5: Cau trúc định dạng lệnh ]J -. -2¿©+++222E++ttEE+vrrtrxxrrrrrrrecree 13
Bảng 1.6: Các nhóm câu lệnh Xử Ly - + 5+ + S+*+k+Ev+eEeEexerekersrsreerkrrrrrke 13
Bang 2.1: Các tín hiệu của khối -2 22©++++2E++2EEEECEEEEEtEEEErEEEkerrrrkrrrrkkrrre 18
Bảng 2.2: Các tín hiệu của khối Program CounIer 2-s++++z+2:+z2cvsezr 19
Bảng 2.3: Các tín hiệu của khối Control Unit -2:22++++22++z+ccvsccee 20
Bảng 2.4: Quy ước mã bit ALUControl -5- 5 S2 E22 E*E#EESE+eEekEeEskekekerkeekre 20
Bảng 2.5: Quy ước mã bit BranchÏni§ - - 5 + + +5 3x k*vEsEeSEskekrskekrserkerrerke 21
Bảng 2.6: Các tín hiệu của khối Register File - 2 ©s¿+2E+ee+evxzecrseeere 22
Bảng 2.7: Các tín hiệu của khối Register High/Low -c:+ccsscc+¿ 23
Bảng 2.8: Các tín hiệu của khối 0900 ìv 001 24Bảng 2.9: Các tín hiệu của khối Sign Extend - 2-2 ©s£+2E+ze+£vxee+rrseerr 25
Bảng 2.10: Các tín hiệu của khối AL/U -2¿-©++222++++22v+++tzvvxzesrrrsercee 25 Bảng 2.11: Các tín hiệu của khối Mult/Div -2©+£+2++e+EEEerrerxerrrreere 26 Bảng 2.12: Các tín hiệu của khối xử lý MemLoad -z-z+cssc+¿ 27
Bảng 2.13: Các tín hiệu của khối Forwarding Unit -+2ez+:+e+czszzr 28
Bảng 2.14: Các tín hiệu của khối Forwarding Unit .-: z2sc+2ccsscce2 28
Bảng 2.15: Các tín hiệu của khối Hazard Unit - 2-2 ©s£+2E+ze+EExee+czseerr 31
Bang 2.16: Tông quan xử ly xung đột trong đường ONG -: -c+¿ 32
Bang 3.1: Các tín hiệu trong AX 4 bus Ăn HH ri, 44
Bảng 3.2: Các tín hiệu của khối Control -+©++222++++222+++etvvxvrrerrseccee 47 Bảng 3.3: Các tín hiệu của khối StoreQueue ¿ 2++22+z++cvzxerrrrrseecee 48
Bảng 5.1: Kết quả tính toán lệnh [ Ï] - 2£ ©+£++++2EE+£2EE+£+EEEEe+Erxerrrreerr 55
Bảng 5.2: Kết quả tính toán lệnh [2] 2¿-¿£©2++222S++ttEvvvreerrxerrrrrseccee 57Bang 5.3: Két quả tính toán lệnh [3] eee eeeeseeseeseeeceeeseeseeeeeesecseeeeessetseeaeeeseeeaes 59
Trang 13Bảng 5.4: Kết quả tính toán lệnh [4]
Bảng 5.5: Kết quả tính toán lệnh [5]
Trang 14DANH MỤC TU VIET TAT
Internet of Thing Internet van vat
Advanced eXtensible Interface Giao diện bus mở rộng nâng cao Complex Instruction Set Computer | Máy tính với tập lệnh phức tạp Reduced Instruction Set Computer | Máy tính với tập lệnh đơn giản hóa
Advanced RISC Machines Máy học phát triển từ RICS
Microprocessor without Interlocked | Kiên trúc tập lệnh RISC phát triên Pipeline Stages bởi MIPS Technologies
FPGA | Field Programmable Gate Array trúc mang phan tử logic mà người
dùng có thê lập trình
Hệ thông kiểm soát tân số khép kín
Trình quản lý xung clock chế độ
MMCM | MixedMode Clock Manager
-hon hợp
Trang 15TOM TAT KHÓA LUẬN
Đề tài khóa luận bao gồm hai nội dung chính xoay quanh nghiên cứu thiết
kế bộ vi xử ly MIPS và đóng gói vi xử lý thành IP theo chuẩn giao tiếp AXH.
Nội dung thứ nhất là hướng đến nghiên cứu thiết kế vi xử lý MIPS theo
kiến trúc Superscalar Vi xử lý gồm có hai khối ALU giúp xử lý các lệnh liên quanđến số nguyên (có dấu và không dấu), bên cạnh đó bổ sung thêm khối Nhân/chia,giúp nhân chia các số nguyên (có dấu và không dấu) Tiếp đến là em sẽ dụng IP
Block Memory Generator cua Xilinx, được sử dụng làm Instruction Memory và
Data Memory.
Nội dung thứ hai của dé tài khóa luận là đóng gói bộ vi xử lý Hầu hết các
IP trên phần mềm Vivado giao tiếp với nhau thông qua bus AXI4 hoặc AXI.
Trong khóa luận này, MIPS sẽ được đóng gói theo chuẩn giao tiếp AXI4 Sau đókết nối MIPS với các IP khác trên Block Design của phần mềm Vivado đề tạo sự
liên kết giữa hai nội dung Trong Block Design, MIPS đóng vai trò là một Master,
yêu cầu đọc dữ liệu từ các Slaver thông qua bus AXI4, tính toán và lưu các giá trị
đó vào trong Data Memory, đồng thời trả các giá trị đó cho Slaver hoặc xuất ra
Uart.
Qua hai nội dung của khóa luận này, em hy vọng sẽ góp phần phô biến lợi
ích của vi xử lý MIPS, và đồng thời đề xuất các bước tiếp cận thiết kế một vi xử lý
MIPS nói riêng cũng như thiết kế các vi xử lý khác nói chung, nhằm đóng góp vào lĩnh vực phát triển vi mạch của đất nước Việt Nam.
Trang 16MỞ ĐÀU
Bước vào kỷ nguyên hiện đại của thế kỷ 21, công nghệ giao tiếp không dây được xem là xu hướng dẫn đầu của thời đại loT và là động lực thúc đây sự phát triển của rất nhiều ứng dụng IoT hữu ích Bên cạnh đó, sự gia tăng về tốc độ phát triển đô thị hóa, cùng với số lượng rất lớn người dùng thiết bị IoT trong cuộc sống
hiện đại đang đặt ra nhu cầu không lồ về các chip vi xử lý mạnh mẽ Tuy nhiên, giá
thành cấu tạo các vi xử lý còn cao do độ chế tạo phức tạp, thêm với đó là những khó
khăn đến từ vấn đề thiếu hụt nguyên liệu và nhân công do bối cảnh dịch Covid-19
kéo dài hiện nay Các vẫn đề trên càng làm tăng thêm sự quan trọng của các vi xử lý
trong các thiết bị IoT
Tu thực trạng được nêu trên, chúng ta thay được sự cần thiết trong việc tối
ưu hóa các bộ vi xử lý Một trong những giải pháp được dé xuất là thiết kế các vi xử
lý phù hợp với thiết bị loT Một vi xử lý với cấu trúc lệnh don giản dé có thể giảm
số lượng các công logic trên thiết kế, làm giảm năng lượng hoạt động cho vi xử lý,
khi ấy nhà sản xuất sẽ điều chỉnh giá thành cấu tạo hợp lý hơn, từ đó làm giảm giá thành khi đến tay người dùng.
Nhờ đó các vi xử lý không chỉ rẻ hơn, mà tốc độ xử lý cũng nhanh hơn, các thiết bị loT nhờ vậy mà xử lý tối ưu và linh hoạt hơn, phù hợp với tốc độ tăng
trưởng trong kỷ nguyên hiện đại ngày nay.
Từ những phân tích trên, nhóm chúng em đề xuất đề tài khóa luận mang tên
“NGHIÊN CUU THIẾT KE BỘ VI XỬ LÝ MIPS32 THEO KIEN TRÚC SUPERSCALAR”, đề tài khóa luận có hai nội dung Nội dung thứ nhất hướng đến
việc thiết kế vi xử lý MIPS theo kiến trúc Superscalar, tăng số lượng lệnh có thể xử
lý trong đường ống của vi xử lý Nội dung thứ hai đó là tinh chỉnh vi xử lý MIPS
thành một Master, có thé giao tiếp với các Slaver khác thông qua bus AXI4 Mục
đích của nội dung này hướng đến việc tiếp cận thiết kế theo kiến trúc của các vi xử
lý ngày nay, nhằm đóng góp cho sự phát trién vi mạch tại Việt Nam.
Trang 17Chuong 1 TONG QUAN
1.1 Kiến trúc vi xử lý
1.1.1 Tổng quan về vi xử lý
Với những sự tiến bộ công nghệ vượt bậc của nhân loại, các vi xử lý được
xuất hiện và phát triển nhanh chóng theo thời gian Những hãng sản xuất chip nổi
tiếng lần lượt cho ra đời những vi xử lý mang thương hiệu riêng của hãng và được
thương mại hóa rộng rãi như: Intel, Apple, AMD, Qualcomm, MediaTek
VỊ xử lý, hay gọi là là bộ vi xử lý, là một linh kiện điện tử máy tính được
chế tạo từ các transistor siêu nhỏ, được tích hợp trên một đơn vi diện tích Khối xử
lý trung tâm (CPU) là một bộ vi xử lý được nhiều người biết đến nhưng ngoài ra nhiều thành phần khác trong máy tính cũng có bộ vi xử lý riêng của nó, ví dụ card màn hình chúng ta cũng có một bộ vi xử lý Trước khi xuất hiện các bộ vi xử lý, các
CPU được xây dựng từ các mạch tích hợp cỡ nhỏ riêng biệt, mỗi mạch tích hợp chỉ chứa khoảng vào chục transistor.
Vào những năm đầu của thập niên 1970, chip xử lý đầu tiên xuất hiện và
được sử dụng cho các bộ tính toán điện tử hay sử dụng cho thuật toán trên số BCD.Ngay sau đó, các hệ thống vi xử lý 4-bit, 8-bit lần lượt ra đời Thiết kế 32-bit quantrong nhất là chip MC68000 (chip 68K) được giới thiệu vào năm 1979, có vùngkhông gian bộ nhớ lớn, tốc độ cao và giá thành hợp lý làm nó trở thành thiết kế
CPU nồi tiếng nhất Vi xử lý 32-bit đầu tiên trên thé giới bao gồm day đủ luồng dữ
liệu 32-bit, cấu trúc bus và địa chi 32-bit là chip BELLMAC-32A của hãng AT & TBELL.
Chip vi xử lý ARM xuất hiện đầu tiên vào năm 1985 Đây là vi xử ly 32-bit
với kiến trúc RISC ARM trở nên vượt trội trong lĩnh vực dùng vi xử lý cho hệ
thống nhúng, với ưu điểm là hiệu suất cao, và có nhiều lựa chọn cho việc sử dụngcông cu phát triển hệ thống Trong thời gian này, các vi xử lý khác cũng rất thành
công trong lĩnh vực vi xử lý RISC là MIPS R2000 và MIPS R3000.
Trang 18Chip vi xử lý 32-bit đầu tiên của Việt Nam là chip VN1632 do ICDREC
thiết kế, được công bố vào tháng 1/2010 Vi xử lý VN1632 được thiết kế với công
nghệ 120 nm, với tan số hoạt động tối đa 100MHz Nó đảm bảo hau hết các tính
năng của một vi xử lý 32-bit thông thường, tuy nhiên đội ngũ với tay nghề chưa
cao, gap nhiều khó khăn trong quá trình thiết kế, chip VN1632 vẫn chưa thé so sánhvới các vi xử ly 32-bit hiện đại trên thế giới vào thời điểm đó
Sự tiến bộ nhanh chóng của các vi xử lý một phần nhờ vào việc áp
dụng định luật Moore, nhờ đó hiệu suất cũng tăng lên một cách ồn định sau hàng năm Không chỉ vậy, thế giới đang ở giai đoạn cách mạng công nghiệp 4.0, ở đó
công nghiệp vi mạch được xác định là quan trọng hàng đầu, vì thế các vi xử lý ngày
càng phức tạp hơn, tinh vi hơn Đồng thời việc tìm hiểu về kiến trúc vi xử lý căn
bản giúp ta có được kiến thức cần thiết, tạo tiền đề cho việc phát triển các vi xử lý
hiện đại hơn trong tương lai nói riêng, cũng như góp phần vào lĩnh vực phát triển chip xử lý nói chung trên toàn cầu.
1.1.2 Kiến trúc CISC
CISC (Complex Instruction Set Computer) là vi xử lý được phát triển dé
phục vụ cho việc lập trình trình biên dich trở nên dé dang va đơn giản hơn Hình
thức đầy đủ của CISC là Máy tính Bộ hướng dẫn phức tạp Chúng là những con
chip dé lập trình dé sử dụng hiệu quả bộ nhớ CISC loại bỏ sự cần thiết cho các lệnhthao tác lên bộ xử lý Ví dụ: thay vì phải tạo một trình biên dịch, viết các câu lệnh
máy tính dài dong dé tính khoảng cách căn bậc hai, bộ xử lý CISC cung cấp một
khả năng tích hợp đề thực hiện việc này
Nhiều máy tính đầu tiên được lập trình bằng hợp ngữ Do đó bộ nhớ máytính chậm và đắt tiền CISC thường được thực hiện trong các máy tính lớn nhưPDP-11 và hệ thống DEC Và sau đây là những đặc điểm của vi xử ly CISC:
e Cac số lượng lớn các tập lệnh, do đó logic giãi mã sẽ phức tạp
e Cac lệnh đặc biệt được sử dụng không thường xuyên
e _ Một số câu lệnh có kích thước lớn hon 32-bit
Trang 19Vi xử lý CISC mang những ưu điểm sau đây:
Trong CISC, dễ dàng thêm các lệnh mới vào chip mà không cần thayđôi cau trúc của tập lệnh
Kiến trúc này cho phép bạn sử dụng hiệu quả trên bộ nhớ chính
Trình biên dịch không quá phức tạp, như trường hợp của CISC Các
tập lệnh có thé được viết dé phù hợp với cau trúc của các ngôn ngữ
bậc cao.
Tuy nhiên, CISC đi kèm với đó là các nhược điểm sau:
Các thế hệ trước của dòng vi xử lý chủ yếu được chứa dưới dạngmột tập con trong mọi phiên bản mới Do đó, tập lệnh và phần cứng
chip trở nên phức tạp sau mỗi thế hệ máy tính.
Hiệu suất của máy bị chậm lại vì chu kỳ xung clock được thực hiện bởi các câu lệnh khác nhau sẽ không bao giờ giỗng nhau.
Chúng lớn hơn vì chúng yêu cầu nhiều bóng bán dẫn hơn
Kiến trúc RISC
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ác
lê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ế để thực hiện một số loại lệnh cho máy tính có
kích thước nhỏ Do đó, nó có thể hoạt động với tốc độ cao hơn Dạng đầy đủ của
RISC là Máy tính Bộ hướng dẫn Giảm Tập lệnh RISC chứa ít hơn 100 lệnh và sử
dụng định dạng lệnh có định Phương pháp này sử dụng một số chế độ địa chỉ đơn
Trang 20giả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ử lý RISC được thiết kế thường có các đặc điểm chính sau:
Một chu kỳ thực thi trong một đơn vi thời gian (one cycle execution time): Các vi xử lý RISC thường có một CPI (clock per instruction)
trong một chu kỳ Đây 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à ống dẫn
Kỹ thuật ống dẫn (pipeline): Là kỹ thuật cho phép thực thi đồng thời
tùng phần, 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:
Diện tích của vi xử lý dùng cho bộ điều khiển giảm từ 60% (đối với
vi xử lý CISC) xuống còn 10% (đối với vi xử lý RISC) Do đó có thểtăng bộ nhớ cache, hay các công logic trong vi xử lý
Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản
RISC có nhiều thanh ghi tổng quan giúp giảm số lần truy cập vào bộ
nhớ chính
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 danCung cấp kha năng định dang đị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:
Cam 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ộ nhớ.
Có ít lệnh trợ giúp cho ngôn ngữ cấp cao
Trang 21e Kiến trúc RISC yêu cầu phan cứng trên chip phải được thiết kế mới
qua mỗi phiên bản
e Hiệu suất của bộ xử lý RISC phụ thuộc vào người lập trình hoặc
trình biên dịch Trình biên dịch đóng một vai trò quan trọng trong
khi chuyển đổi mã CISC sang mã RISC
1.1.4 So sánh CISC và RISC
Kiến trúc CISC và RISC là hai kiến trúc máy tính được sử dụng chủ yếu
hiện nay Sự khác biệt chính giữa RISC và CISC là ở số chu kỳ tính toán mà mỗi
câu lệnh của chúng thực hiện Với CISC, mỗi câu lệnh có thé sử dụng số lượng chu
kỳ lớn hơn trước khi hoàn thành so với RISC.
Lý do đằng sau sự khác biệt về số lượng chu kỳ được sử dụng là sự phức
tạp và mục tiêu của các câu lệnh trong hai loại kiến trúc Trong RISC, mỗi lệnh chỉ
nhằm đạt được một nhiệm vụ rất nhỏ Vì vậy, nếu muốn cần thực hiện một nhiệm
vụ phức tạp, thì cần rất nhiều các câu lệnh xâu chuỗi lại với nhau Với CISC, mỗi
lệnh tương tự như mã ngôn ngữ cấp cao Chỉ cần một vài câu lệnh để có được
những gì chương trình muôn vi môi lệnh thực hiện rat nhiêu giai đoạn.
Về danh sách các tập lệnh có san, RISC có câu lệnh dẫn dai hon CISC.
Điều này là do mỗi bước nhỏ có thé cần một lệnh riêng, không giống như trong
CISC nơi một lệnh đơn sẽ bao gồm nhiều bước Mặc dù CISC có thể dễ dàng hơn
cho các lập trình viên, nhưng nó cũng có nhược điểm Sử dụng CISC có thể không
hiệu quả như khi đang sử dụng RISC Điều này là do sự thiếu hiệu quả trong mã
CISC được sử dụng nhiều lần, dẫn đến các chu kỳ lãng phí Sử dụng RISC cho phép
lập trình viên loại bỏ mã không cần thiết và ngăn ngừa các chu kỳ bị lãng phí.
Sự khác biệt trước đây có thê có ý nghĩa với những người có khuynh hướng
công nghệ Nhưng đối với hầu hết người dùng, nó sẽ là vô nghĩa CISC đã có gắng
giành được vị trí dẫn đầu trong điện toán với sự thống trị của kiến trúc x86 củaIntel, là nền tảng cho tất cả các kiến trúc máy tính hiện đại khác Ngược lại, RISC
đã tìm cách hoạt động trên các thiết bị di động như điện thoại thông minh, máy tính
Trang 22bang, máy thu GPS và các thiết bị tương tự khác ARM là một trong những kiến
trúc RISC đáng chú ý được sử dụng trong các thiết bị này Hiệu quả cao hơn của
kiến trúc RISC làm cho nó được mong muốn trong các ứng dụng này, nơi các chu
kỳ và sức mạnh hiệu xuất thường bị thiếu hụt.
1.2 Kiến trúc MIPS
1.2.1 Lịch sử phát triển
MIPS (Microprocessor without Interlocked Pipeline Stages), là kiến trúc bộ
tập lệnh thuộc RISC phát trién bởi MIPS Technologies Ban đầu kiến trúc MIPS là
32bit, và sau đó là phiên ban 64 bit Qua nhiều lần sửa đổi và phát triển, MIPS bao
gồm MIPS I, MIPS II, MIPS II, MIPS IV, MIPS V, MIPS32 và MIPS64 Phiên
bản hiện tai là MIPS32 va MIPS64 Cũng có một vài tuỳ chon mở rộng, bao gồm
MIPS-3D với bộ tập lệnh SIMD, MIPS16e thêm khả năng nén vi lệnh để làm chương trình nhỏ hơn va MIPS MT thêm xử lý đa luồng.
Năm 1981, các nhà nghiên cứu thuộc đại học Standford do John L.
Hennessy đứng đầu đã bắt đầu nghiê cứu bộ vi xử lý MIPS đầu tiên Khái niệm cơbản là tăng hiệu năng thông qua sử dụng phương pháp đường ống lệnh, một côngnghệ được biết đến từ lâu nhưng khó phát triển
Sau đó Hennessy rời trường đại học Standford để thành lập công ty của
riêng mình là Computer System vào năm 1984 Thiết kế đầu tiên của công ty là
R2000 vào năm 1985, sau đó là R3000 vào năm 1988 Năm 1991, MIPS Computer
System cho ra đời vi xử lý đầu tiên là R4000 SGI — một trong những khách hàng
của MIPS đã mua lại công ty và đổi tên thành MIPS Technologies.
Hién tai, MIPS van da va dang duoc phat trién rộng rai trong các thiét biloT, Arduino, Automotive Cac vi xử lý MIPS hiện nay chú trong vào hiệu suất
và năng lượng hoạt động Cùng với sự phát triển về chức năng, kiến trúc cấu tạo
nên MIPS cũng đã phức tạp hơn nhiều lần so với phiên bản đầu tiên R2000 được
giới thiệu vào năm 1985 Và dưới đây là các thiết bị sử dụng vi xử lý MIPS:
Trang 23Hình 1.1: Nintendo 64 (MIPS R43001 CPU)
Được phát hành vào thang 6 năm 1996, Nintendo 64 là tay cầm choi game
đầu tiên sử dụng bộ xử lý 64-bit CPU của Nintendo 64 là NEC VR4300 dựa trên vi
xử lý MIPS R4300, chạy ở tốc độ 93,75 MHz và cung cấp 125 triệu câu lệnh mỗi
giây với hiệu suât thô.
Những chiếc xe Model S được sản xuất sau tháng 9 năm 2014 được trang bị
một loạt thiết bị được thiết kế để vận hành tự động, bao gồm camera gan trén kinh
chan gió, radar ở khoang dưới và cảm biến siêu âm ở trước và sau Ngoài ra, những
chiếc xe còn tích hợp chip thị giác máy tinh Mobileye EyeQ3 dựa trên thế hệ MIPSIclass, có hiệu suất cao cho phép Model S phát hiện biển báo đường, vạch kẻ làn
đường, chướng ngại vật và các phương tiện khác Sự kết hợp giữa cảm biến và phần
cứng thị giác máy tính này cho phép khả năng lái xe và đỗ xe bán tự động, bao gồm
tính năng Autopilot cho phép người lái xe có thé rảnh tay trên đường cao tốc.
MIPS là một kiến trúc RISC đơn giản, hợp lý, có khả năng mở rộng cao,
sẵn có dé cấp phép Theo thời gian, kiến trúc đã phát trién, tiếp thu các công nghệ
mới và phát triển một hệ sinh thái mạnh mẽ và hỗ trợ toàn diện cho ngành Với các
Trang 24đặc điểm cơ bản của MIPS - chăng hạn như số lượng lớn thanh ghi, số lượng và ký
tự của các lệnh và các khe trễ đường ống có thé nhìn thay - cho phép kiến trúc
MIPS mang lại hiệu suất cao cho các lõi IP, cũng như hiệu quả sử dụng điện năng
hợp lý cho các thiết kế SoC ngày nay.
1.2.2 Kiến trúc tập lệnh
Đối với nguyên tắc thiết kế bộ lệnh, khóa luận thiết kế MIPS32 theo kiến
trúc Superscalar tuân thủ theo các nguyên tắc của MIPS:
Cấu trúc lệnh đơn giản và có quy tắc: Kích thước câu lệnh cố định là32-bit với 6-bit đầu là Mã thao tác
Lệnh và bộ nhớ càng nhỏ càng xử lý nhanh với số chỉ thị; số thanh
ghi và chế độ giới hạn địa chỉ
Tăng tốc độ xử lý cho những trường hợp thường xuyên xảy ra: Các toán hạng lây từ thanh ghi, các chỉ thị chứa các toán hạng trực tiếp
Các câu lệnh tuân theo có ba định dạng chung
Tuân thủ đối với nguyên tắc lưu trữ dữ liệu trong bộ nhớ:
Nguyên tắc Alignment Restriction: đối tượng lưu trong bộ nhớ phải
bắt đầu tại địa chỉ là bội số kích thước đối tượng (bội số của 4)Nguyên tắc Big Endian: Byte cao được lưu trữ ở ngăn nhớ có địa chỉ
nhỏ hơn, byte thấp được lưu trữ ở ngăn nhớ có địa chỉ lớn hơn
MIPS có tư tưởng register-to-register - load/store, nghĩa là các lệnh đều
thao tác trên thanh ghi Khi cần sử dụng bộ nhớ, ta sẽ có các lệnh riêng đề nạp dữ
liệu từ bộ nhớ vào thanh ghi.
Mỗi thanh ghi lưu trữ một giá trị 32-bit Không như khái niệm biến ngôn
ngữ lập trình cấp cao, thanh ghi trong hợp ngữ không có kiểu dit liệu, cách ta sử dụng thanh ghi sẽ quyết định kiểu dữ liệu là gì.
10
Trang 25Các vi xử lý MIPS gồm có 32 thanh ghi tổng quan, mỗi thanh ghi có kích
$zero (*) PO Chứa hang sô gia tri 0
$at Phuc vu cho Assembler
Chia giá tri trả về sau khi su dụng
hàm hoặc thủ tục
$s0 - $s7 (*) 16-23 Thanh ghi lưu giá trị tính toán
$t8 - $t9 (*) Thanh ghi tam
Trang 26Tiếp theo em xin trình bày cấu trúc của các lệnh hợp ngữ khi được dịch
sang ngôn ngữ máy Mỗi lệnh trong MIPS đều có độ dài là 32 bit Có thể xem mỗi
lệnh như một hàm trong ngôn ngữ lập trình Vì vậy, ta cần có tên lệnh, các tham sốtruyền vào và kiêu của các tham số truyền vào, trong trường hợp này là kích thướccủa mỗi tham số truyền vào (vi không có khái niệm kiểu dữ liệu trong hợp ngỡ)
MIPS chú trọng tính đơn giản của tập lệnh, vì vậy có 3 kiểu lệnh chính sau:
R-format, I-format, J-format Mỗi câu lệnh máy có kích thước 32-bit, được chia
thành các nhóm bit khác nhau, gọi là trường, mỗi nhóm bit đều có vai trò riêng
trong câu lệnh Tùy thuộc và cấu trúc của lệnh mà mỗi nhóm lệnh có quy định khác
nhau Lệnh R có định dạng 6 tham số như sau:
Opcode: trường này sẽ cho máy biết lệnh này là lệnh nào Trong trường hợp
R-format thì các lệnh đều dùng chung opcode là 0
Rs (Register Source): Thanh ghi nguồn, chứa toán hạng thứ nhất
Rt (Register Target): Thanh ghi mục tiêu, chứa toán hạng thứ hai
Rd (Register Destination): Thanh ghi đích, chứa giá trị kết quả lệnhShamt: shift amount, số bit cần dịch trong lệnh dich trái và dịch phải
Funct: Vì các lệnh R-format đều có chung opcode bằng 0 nên ta thêm
trường này dé cho máy biết cần thực hiện lệnh nào
Tiếp theo là dạng lệnh I, dùng cho thao tác giữa thanh ghi và một hằng số
có săn trong lệnh:
Bảng 1.4: Cấu trúc định dạng lệnh I
16-bit
12
Trang 27Opcode: cho máy biết đây là lệnh gì Vì I-format không có trường funct nên
các lệnh I-format không dùng chung Opcode như các lệnh R-format
Rs (Register Source): Thanh ghi nguồn, chứa toán hạng thứ nhất
Rt (Register Target): Thanh ghi mục tiêu, chứa toán hạng thứ hai
Immediate: Chứa giá trị độ dời của địa chỉ, nhằm phục vụ việc truy xuất
trong lệnh nạp và lưu, hoặc giá tri tức thời cần tính toán
Lệnh J dành cho các lệnh nhảy, tương tự như goto trong C, ngoài ra còn có
lệnh j và jr, có câu trúc như sau:
Opcode: Mã thao tác, cho biết đây là lệnh nhảy giTarget address: Địa chỉ rút gọn của lệnh cần nhảy đến, địa chỉ gốc có 32 bit,
ta rút gọn 6-bit như sau:
e Xóa 2-bit thấp nhất của địa chỉ Vì địa chỉ của các lệnh trong MIPS
luôn chia hết cho 4 nên 2-bit thấp nhất luôn bằng 0
e 4-bitcao nhất xem như bằng với 4-bit cao nhất của lệnh hiện tại
1.2.3 Các tập lệnh thực thi trong khóa luận
Sau đây, em xin phép trình bày các nhóm lệnh được sử dụng để nghiên cứu
thiết kế vi xử lý MIPS trong khuôn khổ luận văn này:
Bảng 1.6: Các nhóm câu lệnh xử lý
Lệnh Tên đầy đủ Hành động xứ lý
Lệnh tính toán logic số học
13
Trang 28ADDIU Add Immediate * Unsigned
am —
ANDI And lmmediate Rt = rs & imm
LUI Load Upper Immediate Rt = imm << 16
Or Immediate Rt = rs limm
SLTI Set On Less Than Immediate
SLTHU | Set On Less Than Immediate Unsigned Rt = rs <imm
Exclusive Or Rd =rs “rt
Exclusive Or Immediate Rt = rs “imm
Divide Unsigned HI = rs % rt; LO = rs /rt
Multiply HI, LO = rs * rt
MULTU Multiply Unsigned HI, LO = rs * rt
Lệnh chuyên gia tri giữa thanh ghi tông quát va thanh ghi đặc biệt
Trang 29Shift Right Logical Variable
Lénh nhay/ré nhanh
Branch On Equal if(rs == rt) pc += offset * 4
BGEZ Branch On >= 0 if(rs >= 0) pc += offset * 4
131 = pc; if(rs >= 0) BGEZAL Branch On >= 0 And Link
pe += offset * 4
BGTZ Branch On > 0 if(rs > 0) pc += offset * 4
BLEZ Branch On <= 0 if(rs <= 0) pc += offset * 4
BLTZ Branch On < 0 if(rs < 0) pc += offset * 4
r31 = pc; if(rs < 0) BLTZAL Branch On < 0 And Link
pe += offset * 4
Branch On Not Equal if(rs != rt) pe += offset * 4
Jump Pc = pc_upper | (target << 2)
Jump And Link r31 = pc; pc= target << 2
Jump And Link Register Rd = pc; pc = rs
Jump Register Lệnh ghi hoặc doc trong bộ nhớ
LB Load Byte Rt = *(char*)(offset + rs)
LBU Load Byte Unsigned Rt = *(Uchar*)(offset + rs)
LH Load Halfword Rt = *(short*)(offset + rs)
LHU Load Halfword Unsigned Rt = *(Ushort*)(offset + rs)
LW Load Word Rt = *(int*)(offset + rs)
SH Store Halfword *(short*)(offset + rs) = rt
15
Trang 30Chương2 THIẾT KE VI XỬ LÝ MIPS32
2.1 Tổng quan thiết kế vi xử lý
Sau đây em xin trình bày nội dung thứ nhất của khóa luận, đó là hướng đến
nghiên cứu thiết kế vi xử lý MIPS theo kiến trúc Superscalar Vi xử lý gồm có hai khối ALU xử lý các lệnh liên quan đến số nguyên (có dau và không dấu), bên cạnh
đó bổ sung thêm khối Mult/Div, xử lý nhân chia các số nguyên Và sử dụng 2 IP
Block Memory Generator của Xilinx làm Instruction Memory và Data Memory.
IF1
Hình 2.1: Các giai đoạn xử lý của vi xử lý
Trong khóa luận này, em đề xuất thiết kế vi xử lý MIPS theo kiến trúcSuperscalar đã được đường ống hóa theo 6 giai đoạn như sau:
e Giai đoạn IF1: Program Counter xuất dia chỉ lệnh, va Instruction
Memory nhận các giá trị địa chỉ đó
e _ Giai đoạn IF2: Instruction Memory hoàn tat việc đọc câu lệnh
e Giai đoạn ID: Doc giá trị các thanh ghi trong Register File Trong
giai đoạn này, vi xử lý sẽ giải quyết các vấn đề về Hazard hoặc
Forwarding dữ liệu hoặc xử lý các lệnh rẽ nhánh/nhảy
16
Trang 31e Giai đoạn EX: Thực thi các lệnh tính toán số học hoặc lệnh đọc giá
trị từ Data Memory
e Giai đoạn MEM: Thục thi các lệnh ghi giá trị vào Data Memory
hoặc hoàn tất việc đọc dữ liệu nếu là lệnh đọc giá trị trong Data
Memory
se Giai đoạn WB: Chon giá tri từ khối Data Memory nếu là lệnh đọc dữ
liệu hoặc từ khối ALU để lưu vào Register File
2.2 Các khối chức năng trong vi xử lý
2.2.1 Khối Block Memory Generator
Hinh 2.2: Khéi Block Memory Genertor
Day là IP Block Memory Generator trong chế độ “True Dual-port RAM”
của Xilinx Trong khóa luận này, vi xử ly MIPS sẽ sử dung hai khối IP trên có vai
trò như sau, một là Instruction Memory và còn lại là Data Memory Các input và
output của hai khối Instruction Memory va Data Memory đều giống hình 2.2.
Sau đây là cách thức hoạt động của | port trong Block Memory Generator:
17
Trang 32WEA DINA[15:0]
ADDRA DOUTA[15:0]
ENA [| | | | |
Ị | write | WRITE ! Ị
DISABLED | READ MEM(bb)= MEM(cc)= READ
1111 2222
Hình 2.3: Cách thức ghi và đọc của | port trong Block Memory Generator!!!
Diễn giải xung đồ mô phỏng của Block Memory Generator hình 2.3:
e Doc dữ liệu: Memory nhận địa chỉ ADDRA tại cạnh lên xung clock,
dữ liệu tại đầu ra DOUTA sẽ ổn định sau khoảng 6.62ns (trong khóa
luận này, tốc độ cấp cho Memory là 100MHz)
e = Ghi dữ liệu: Memory nhận địa chỉ ADDRA, giá trị ghi DINA và tín
hiệu cho phép ghi WEA (phân biệt với đọc) tại cạnh lênh xung clock
e Luu ý: Memory chỉ phi hoặc đọc giá trị khi có thêm tín hiệu ENA
tích cực mức cao tại cạnh lên xung clock Các port ra/vào và ý nghĩa:
Bảng 2.1: Các tín hiệu của khối
Xung clock cua port A Gia tri can ghi cua port A Gia tri tai địa chi addra của port A
18
Trang 332.2.2 Khối Program Counter
Hình 2.4: Khối Program Couter
Chức năng của khối Program Counter:
e Khối Program Counter là đơn vi diéu khién trong vi xử ly, được sử
dụng dé theo dõi địa chỉ của lệnh hiện tại hoặc lệnh tiếp theo
e Khối Instruction Memory trong chế độ Dual port, do đó khối
Program Counter cũng sẽ cần xuất 2 địa chỉ lệnh dé đọc 2 câu lệnh
trong chế độ Dual port của Instruction Memory
Các port ra/vào và ý nghĩa:
Bảng 2.2: Các tín hiệu của khối Program Counter
Tén tin hiéu Y nghia
C—O Địa chi lệnh B của cặp lệnh trước
A_ Address Địa chỉ lệnh A hiện tại B_ Address Địa chỉ lệnh B hiện tại
Đây là tin hiệu Enable của khôi Program
ReadInstruction Counter gửi cho khối Instruction Memor
2.2.3 Khối Control Unit
Trang 34Chức năng của khối Control Unit:
e - Giải mã lệnh từ Opcode và Funct đê xuât các tín hiệu điêu khiên cho
Datapath
e Sau khi nhận được Opcode va Funct từ câu lệnh, khối Control Unit
sẽ giải mã đê cho ra các tín hiệu điêu khiên tương ứng với từng lệnh
đến từng giai đoạn
Các port ra/vào và ý nghĩa:
Bảng 2.3: Các tín hiệu của khối Control Unit
Gồm các tín hiệu sau: Sign, Jump, Branch, HItoReg,
LOtoReg, ALUSrc, RegDst, MemWrite, MemRead,
RegWri RegtoHI, RegtoLO
Tín hiệu cho biết khối ALU cần làm gi
Tín hiệu cho biét lệnh cân ghi vào Data Memory
như thế nào: sw, sh, sb Tín hiệu cho biết lệnh cần đọc từ Data Memory
như thé nào: lw, Ih Ihu, Ib, Ibu
Cho biết lệnh thuộc loại rẽ nhánh/nhảy nào
Tiếp theo là quy ước mã bit ALUControl, giúp khối ALU hay khối
Mult/Div phân biệt cần thực hiện lệnh gì:
Bảng 2.4: Quy ước mã bit ALUControl
ALUControl[4:0] Thao tác xử ly
00000 ADDU
ADD
SUBU SUB
AND
OR LUI
00101 Zal/MFHI/MFLO
00110 X
01H | — 1U
20
Trang 35(Zal là đại diện cho những lệnh rẽ nhánh/nhảy và link dia chi)
Cuối cùng là quy ước mã bit BranchIns Do vi xử lý có 12 lệnh rẽ
nhánh/nhảy khác nhau, vậy nên việc phân biệt là rất cần thiết.
Bảng 2.5: Quy ước mã bit Branchlns
BranchIns[11:0] Y nghia bit
Branchins(0 Branchins(1
Branchins[7]
Branchins[3]
Bmnohinjl4| | —— RGEZ
Branchindl5 Branchins(6
Trang 362.2.4 Khối Register File
Hình 2.6: Khối Register File
Chức năng của khối Register File:
e Quan lý đọc hoặc ghi kết quả tính toán của vi xử lý
e Nhan địa chỉ các thanh ghi qua đó đọc hoặc ghi vào giá tri tương
ứng, có thê đồng thời đọc và ghi trong cùng chu kỳ
Các port ra/vào và ý nghĩa:
Bảng 2.6: Các tín hiệu của khối Register File
B_WriteData
B_WriteRegister
B_Regwrite Tín hiệu yêu cau lưu giá tri của lệnh B
A_ReadDatalA_ReadData2
B_ReadDatal
B_ReadData2
22
Trang 372.2.5 Khối Register High/Low
e Thanh ghi cao (High register) và thanh ghi thấp (Low register) là hai
thanh ghi lưu kết quả nhân/chia, do kết quả nhân/chia là 64-bit.
e Khối Register High/Low năm ở giai đoạn ID, cùng vi trí với khối
Register File
Các port ra/vào và ý nghĩa:
Bảng 2.7: Các tín hiệu của khối Register High/Low
Tên tín hiệu
clk Xung clock
aresetn Tin hiệu reset tích cực mức thap A_ HighData Gia trị ghi vào 32-bit cao của lệnh A
A_LowData Gia trị ghi vào 32-bit thâp của lệnh A
Tin hiệu cho phép ghi vào bit cao hoặc
A_HiLoRegWrite bit thấp của lệnh A
A_ Read Tín hiệu đọc bit thấp (mặc định đọc bit cao)
B_HighData chi vào 32-bit cao của lệnh B
B_LowData Giá trị ghi vào 32-bit thap của lệnh B
: Tín hiệu cho phép ghi vào bit cao hoặc
B_HiLoRegWrite bit thấp của lệnh B
23
Trang 382.2.6 Khối Comparator
7"
IsThatBranch Read Data 1[3 1:0]
IsThatBranchZal ReadData2[31:0]) RTL
BranchTaken Branchins[1 1:0]
BranchZal
Hình 2.8: Khối Comparator
Chức năng của khối Comparator:
e So sánh hai giá trị ở hai đầu ReadData của khối, kết hợp với dãy tín
hiệu ở đầu vào Brachlns cho biết đây đang thuộc loại lệnh rẽ
nhánh/nhảy gì.
e Trong vi xử lý này gồm 8 loại lệnh rẽ nhánh và 4 loại lệnh nhảy,
khối Comparator sẽ hoạt động phụ thuộc vào tín hiệu Branchlns
Các port ra/vào và ý nghĩa:
Bảng 2.8: Các tín hiệu của khối Comparator
ReadDatal Gia trị đầu vào |
ReadData2 Giá trị đầu vào 2
Tín hiệu cho biệt lệnh thuộc loại lệnh
Immediate[1 5:0]
RTL SignEx[31:0]
Sign
24
Trang 39Chức năng của khối Sign Extend:
e Khdi Sign Extend với ngõ vào 16-bit được mở rộng thành 32-bit có
dấu hoặc không dấu tùy thuộc vào tín hiệu Sign
Các port ra/vào và ý nghĩa:
Bảng 2.9: Các tín hiệu của khối Sign Extend
16-bit cuôi của câu lệnh
e Có vai trò thực hiện các phép tính toán trong vi xử lý (trừ phép
nhân/chia và MFHI, MFLO)
e Nhận giá trị toán hạng từ hai đầu vào, tính toán theo yêu cầu từ
ALUControl, và xuất giá trị kết quả từ đầu ra
Các port ra/vào và ý nghĩa:
ALUControl Loai phép toan can thuc hién
Sô bit cân dịch, nêu cân tính
toán giá trị dịch
Result Két qua tinh toan
shamt
25
Trang 40Chức năng của khối Mult/Div:
e Tinh toán các lệnh liên quan đến phép nhân chia số nguyên (có dấu
và không dấu) hoặc thực hiện các lệnh chuyển giá tri từ Register File
sang Register High/Low
e Khối Mult/Div sử dung thuật toán phần cứng trong môn “Kiến trúc
máy tính” Có độ trễ 32 chu kỳ xung clock
e Lý do tách khôi Mult/Div ra khỏi khối ALU là do kết quả phép nhân
chia trong vi xử lý MIPS không trực tiếp lưu vào Register File, màcần lưu vào Register High/Low trước, sau đó mới chuyên giá trị đósang Register File, khi ấy nếu vi xử lý thực hiện lệnh tiếp theo (mà
không liên quan đến lệnh nhân chia) sẽ không cần chờ 32 chu kỳ tính
toán của khối Mult/Div
e Khối Mult/Div tính toán những câu lệnh sau: DIV, DIVU, MULT,
MULTU, MFHI, MFLO
Các port ra/vào va ý nghĩa:
clk Xung clock
Tin hiéu reset tich cuc muc thap
26