1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Nghiên cứu thiết kế bộ vi xử lý MIPS32 theo kiến trúc superscalar

98 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu thiết kế bộ vi xử lý MIPS32 theo kiến trúc superscalar
Tác giả Nguyen Cao Tuan
Người hướng dẫn Tien Si Nguyen Minh Son
Trường học Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 98
Dung lượng 48,65 MB

Nội dung

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 3

THÔ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 4

LỜ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 5

1⁄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 6

2.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 7

4.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 8

DANH 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 9

Hì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 10

Kế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 11

Hì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 12

DANH 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 13

Bả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 14

DANH 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 15

TOM 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 16

MỞ ĐÀ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 17

Chuong 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 18

Chip 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 19

Vi 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 20

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ử 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 21

e 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 22

bang, 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 23

Hì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 25

Cá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 26

Tiế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 27

Opcode: 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 28

ADDIU 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 29

Shift 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 30

Chươ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 31

e 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 32

WEA 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 33

2.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 34

Chứ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 36

2.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 37

2.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 38

2.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 39

Chứ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 40

Chứ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

Ngày đăng: 23/10/2024, 01:38