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 quy trình biên dịch cho MIPS core 32 bits và hiện thực giai đoạn P&R

75 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 quy trình biên dịch cho MIPS core 32 bits
Tác giả Hồ Nhật Minh
Người hướng dẫn 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 2022
Thành phố TP. HO CHÍ MINH
Định dạng
Số trang 75
Dung lượng 38,47 MB

Nội dung

TOM TAT KHÓA LUẬNKhóa luận “ Nghiên cứu quá trình biên dịch cho Mips core 32 bit” là khóa luận nghiên cứu tập trung tìm hiểu xây dựng hoàn chỉnh quá trình biên dịch cho Mips core 32 bits

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

HO NHAT MINH

KHOA LUAN TOT NGHIEP

NGHIEN CUU QUY TRINH BIEN DICH CHO MIPS

CORE 32 BITS

RESEARCH THE COMPILER FOR MIPS CORE 32 BITS

KY SU KY THUAT MAY TiNH

TP HO CHÍ MINH, 2022

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TÍNH

HO NHẬT MINH - 17520746

KHOA LUAN TOT NGHIEP

NGHIEN CUU QUY TRINH BIEN DICH CHO MIPS

CORE 32 BITS

RESEARCH THE COMPILER FOR MIPS CORE 32 BITS

KY SƯ KY THUAT MAY TÍNH

GIANG VIEN HUONG DAN

NGUYEN MINH SON

TP HO CHÍ MINH, 2022

Trang 3

THONG 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ố 62/QD-DHCNTT

ngày 14 tháng 02 năm 2022 của Hiệu Trưởng Trường Dai Học Công Nghệ Thông Tin.

Trang 4

LOI CAM ON

Dé hoàn thành khóa luận tốt nghiệp này, chúng em xin gửi lời cảm ơn chân

thành tới quý thầy cô khoa Kỹ thuật Máy tính nói riêng và các thầy cô trường Đại học

Công nghệ Thông tin- Đại học Quốc gia Thành phố Hồ Chí Minh nói chung đã dạy chúng em những kiến thức và truyền đạt những kinh nghiệm vô giá trong suốt chặng

đường học tập vừa qua.

Đặc biệt chúng em cũng xin chân thành cảm ơn thầy T.S Nguyễn Minh Sơn

và thầy TS Đoàn Duy đã giúp dành thời gian hướng dẫn và chỉ bảo chúng em trong suốt quá trình làm khóa luận để chúng em hoàn thành khóa luận tốt nghiệp, một lần

nữa em xin chân thành cảm ơn Thay.

Xin cảm ơn các anh chị, bạn bè, những người đã giúp đỡ chúng em trong tìm

kiếm thông tin trong suốt thời gian thực hiện khóa luận này Cảm ơn các bạn đã cùng đồng hành trong suốt chặng đường 5 năm học vừa qua.

Một lần nữa chúng em xin chân thành cảm ơn tới tất cả mọi người đã giành

thời gian, công sức giúp đỡ chúng em trong quá trình làm khóa luận tốt nghiệp Chúng

em xin gửi lời xin lỗi tới tat cả mọi người đo trong quá trình thực hiện khóa luận cũng không tránh khỏi những sai lầm và thiết sót, chúng em mong thay cô, các anh các chị, các bạn có thể bỏ qua và thứ lỗi.

Sinh viên thực hiện

Hồ Nhật Minh

Khoa Kỹ thuật Máy tính

Trang 5

MỤC LỤC

Chương 1 TONG QUAN 22522222 22xt 22 2212212122 re 3

1.1 Tình hình nước ngoài -eceeeeerrrrrrierretrrririiriirrirrrrririiirrrrriiT) 1.2 Tình hình trong nước eeeeeeeerrrrrrirrrrrrrrrrrrrrrrrrrrrei

1.3 LY do chon chẽ

Tu nao nh cố ẽẽẽ

Chương2 CƠ SỞ LÝ THUYẾT -22¿+2VE+++t222EEE+ttEEESzrrtrrrecree 6

2.1 Sơ lược về kiến trúc tập lệnh MIPS 32 bit -sseceeeeeex Ô

2.1.1 Quan điểm lịch sử -eeeeeeereereereereereererreereere.Ổ

2.1.2 Giới thiệu về kiến trúc MIPS 32 bit.

2.2 Các thành phần của kiến trúc bộ lệnh MIPS 32 bit Ở 2.2.1 _ Kiến trúc tập lệnh (ISA)

2.2.2 Kiến trúc tài nguyên phân quyền(PRA) 12 2.2.3 Các thành phan mở rộng tùy chon cho ứng dụng(ASE).

2.2.4 Câu lệnh được người dùng định nghĩa(UDIS) LS

2.2.5 Đồ hình truyền đữ liệu s-.eseeseereeeeeeeee 13 2.3 Kiến trúc lệnh và tập thanh ghi trong MIPS 14

2.3.1 Thanh ghi CPU ceeeeeeeeeerrrrrrrrrrrrrrrrseov LA 2.3.2 Thanh ghi chương trình(PC) sceeeeeeeeeerrrrrrrreeseeee LO 2.3.3 Các thanh ghi lệnh -.-eeeeeeeeeeeerrrree TỐ,

Trang 6

2.3.5.1 Dữ liệu trong thanh ghi FPU -cccccees««c.ee-eee x LO

2.3.6 0n 0 2.3.7 Cách thức đánh dia chỉ -ecccceeeeceseeeeeseeeseeeee 20 2.3.8 Tập lệnh của MIIPS e-ecsceererkrirriiiiriririiiiirriirirrrirrerseeroe 22

2.3.9 Các định dạng lệnh cơ bản eeeeeerrrrrrreorruu DA

2.3.10 Các lệnh cơ bản trong MIPS òceceeeeeerrrrrrrrreooe 2D

2.3.11 Quan lý bộ nhớ -ccscseeiereeereiriiirriiiiirrrriruee OL 2.3.12 Pipeline e2 Ï

2.4 Sự phát triển của kiến trúc - -.eereeeeeeeereeeereeeereeeeeee 3D

2.5 Trình biên dịch và các công cụ trong trình biên dịch 7

2.5.2 Khái niệm và các loại trình biên dịch ‹ see-cxves«eecxvee SO 2.5.2.1 Khái niệm eo OO! 2.5.2.2 Các loại trình biên dịch eo, 2

Chuong 3 PHÂN TÍCH THIẾT KE HE THÓNG - 40

3.1 Mô tả môi trường biên dịch -eesestrtrrrrrtrrrrrrrrrrrrrrrrreee LÔ 3.1.1 Các quá trình có trong môi trường biên dịch cho MIPS32 40

3.1.2 Thành phan môi trường biên dich.

3.1.2.1 Toolchain e«ccrkxeeereriiererriirrrrrrrrre 2 3.1.2.2 Linker

3.1.2.3 BOotlOadei eeeeeerrrrsrsaoue 4A 3.2 Xây dựng môi trường biên dich cho MIPS 32 BIT

3.2.1 Xay dung toolchain trên kernel Linux -. - 4O,

Trang 7

3.2.2 _ Tích hợp toolchain vào công cụ EcÏipse . -+

Chương 4 | KET QUA THỰC NGHIỆM VÀ KIEM THỬ

4.1 Kết quả từ môi trường biên dịch -ss.trresrrerrerrerrerrrrre

4.2 Kịch bản kiểm thử và kết quả kiểm thử s.errerrerrere

4.2.1 _ Kịch bản kiểm thử -escesreererrerrereerrrrrrrore 4.2.2 Kết quả kiểm thử với công cụ Mars 4.5 esereee

4.2.3 So sánh với trình biên dịch COMPILER EXPLORER

Chương 5 KÉT LUẬN VÀ HƯỚNG PHÁT

TRIẺN -5.1.2 Hướng phát triển eceeeeeeereererrrrerrerrrrrrrrre

50 51 51

52

52

54 61 64 64 64

Trang 8

DANH MỤC HÌNH

Hình 1.2.1: Giao diện của Mars 4.5 .essscssssssssssssssssssssscsssssesssssssssssessessessessscsacssssessassssssecssssaesaeees 4 Hình 1.2.2: Giao diện của Compiler Explorer cesses 4

Hình 2.1: Kiến trúc phan cứng của một MIPS 32 bit cơ bản s - 9

Hình 2.2: Các lệnh MIPS 32 cơ bản .cccccccccscceerstrserteritrtstrktrrrrrrrrrrrrrrrserkee 12

Hình 2.3: Sơ đồ truyền dữ liệu của MIPS32 -ccccccrrirceevvrrrrrrrereerrrrie 13

Hình 2.4: Quy ước các thanh gÌh1 -«-©-e<cerxetrrrxerrrxerrrrsrtrrkerrrrkerrrkerrrrkerrrke 17

Hình 2.5: Phân bồ trong thanh ghi của các lệnh -+ ss.+ccssrccztree 24

Hình 2.6: Ý nghĩa của các trường trong thanh ghi -. cceceerreeceerrcee 25

Hình 2.7: Lệnh nap ghl ss-s-+s<+xxEE xà HH Hà Hàng nà HH nnhườt 26

Hình 2.8: Các lệnh số học kiểu Immediate iicccccccccvvvvvvSvEvEEEEEEEEEEEEEEEEEEErrrrrrre 26

Hình 2.10: Các lệnh nhân và Chia - ¿5 c5c+Sc++tsecsErsersertersertsrtsrksrrsrrsersersrrssrk 27

Hình 2.11: Các lệnh nhãy và rẻ nhánh -«-c-«<+cxesekrxetsktetrrirkkririrrirke 28

Hình 2.12: Ví dụ về không có pipeline -«cestreeeerreeerrrererreretrrrrerrre 32

Hình 2.13: Ví đụ về có pipeline -+ccccstreceverrrreevvrrrrrrrrrrrrrrrrrrrrrrrrree 33

Hình 2.14: Đường dữ liệu trong DID€ÌIT€ e« ssc5s<esetskeerketkkeirrkrrtkeiirkrrrree 35

Hình 2.15: Sự phát trién của kiến trúc MIPS .ccesreeeerreeeerrreerrre 37Hình 2.16: Sơ đồ biên dịch cơ DAM cessssssssssssssssssssssssssssssssssssssssssssssssssssssssssssersesseseeseeeeeee 39

Hình 3.1: Các bước có trong môi trường biên dịch cơ bản . -« 41

Hình 3.2: Môi trường biên dịch cho IMIIPS32 -secccsetsrxirrkeierkerirrierrrke 42 Hình 3.3: Nguyên lý vận hành của LInIK€T - -ssc-5s<esetskeEEketkkeierkrtkeiirkrrrree 44

Hình 3.4: Các thư viện và phiên bản được sử dụng . -cc-cxeeeerseerxee 46

Hình 3.5: Lưu trữ các thư VIỆN c5 s55 Ssccs+tereEstttrErsrksrktrsrrsrkrrsrrrkrrsrrsrerrkrrsrkee 48 Hình 3.6: Cài đặt công cu gece và các thư viện trên Ïinux -« -ee «+ 48 Hình 3.7: Cai đặt ØlIDC cs-ccxe+crrxtrrkrtkrrtrrtirtkrirtrtirtrrrrrrtirrrkrtrrirrrrrerrrrierrree 49 Hinh 3.8: Cai dat kernel] LImuX 07 49

Hinh 3.9: Cai dat Binutils cc 49

Trang 9

Hình 3.10: Tích hợp toolchain vào ECÏIDSe -«-55<esetekeEkktkkirrirtikiirree 50

Hình 4.1: Chương trình C++ được dùng trong quá trình biên dịch 51

Hình 4.2: Kết quả biên dich từ Eclipse -ecccecrrreeeevverrrreeevvrrrrrrerrerrrrrre 52Hình 4.3:Kịch bản kiểm thử -:++2222SE22221511212121111712.1.24111172 21111.1 e 53Hình 4.4: Công cụ COMPILER EXPLORER dùng dé so sánh 53Hình 4.5: Công cu Mars 4.5 dùng dé kiểm thử -cccesrrecceerrreeere 54

Hình 4.6: Kết quả biên dịch của chương trình cộng -s-+- 54

Hình 4.7:Kiém thử trên Mars 4.5 của chương trình cộng - 55

Hình 4.8:Biên dịch cho chương trình phép nhân .‹ -cc+csscccsvccesecseecseee 55

Hình 4.9: Kiểm thử trên Mars 4.5 cho chương trình phép nhân 56

Hình 4.10:Biên dịch cho chương trình If-eÌS€ -.-cc ©cccesesecxeerrrrrvsrrrrreerre 56

Hình 4.11: Kiểm thử trên Mars 4.5 cho chương trình is else -s 57

Hình 4.12:Biên dịch cho chương trình switch CaSe «ccccccsreereeerieerreeriee 57

Hình 4.13: Kiểm thử trên Mars 4.5 cho chương trình Switch case - 58

Hình 4.14:Biên dịch cho chương trình ÍOF -cscccsccccevecxeevreeerxeerreeerrserrerrrsree 58

Hình 4.15: Kiểm thử trên Mars 4.5 cho chương trình for s 59

Hình 4.16:Bién dịch cho chương trình whIÏe -cse<cccssrerxeerrrxerxrxerrrreeree 59

Hình 4.17: Kiểm thử trên Mars 4.5 cho chương trình while -ss 60

Hình 4.18:Biên dịch cho chương trình ham COH -. -ssc5ssscxesercvsrsrxeerrrssree 60

Hình 4.19: Kiểm thử trên Mars 4.5 cho chương trình hàm con 61

Hình 4.20: Ví dụ chương trình biên dịch có chứa hàm local của trình biên dịch .61

Hình 4.21:So sánh về thời gian của hai trình biên dịch s - 62Hình 4.22: Ví dụ về sự khác nhau ở các địa chỉ lưu trữ ccceer.rccse 62

Hình 4.23: So sánh kết quả nhị phân của COMPILER EXPLORER (trai),

901050000 63

Trang 10

Số dấu cham động chính sát kép ¿- ¿2+ ©+++++zx++xxezxesres 19

Số dấu cham động chính sát kép -¿- ¿+ ©+++++zx++xx+zxesres 19

I5 troy Cap oo 29

Lệnh nạp .- 5 G111 HH TH HH HH re 30

10127 aa 3I

Di chuyền dữ liệu 2 25522222 22+2EE2EEE2EEEEEEEEESEErErkerrrerkrervee 31

Trang 11

DANH MỤC TỪ VIET TAT

Chữ viết tắt Chữ tường minh

GCC GNU Compiler Collection

MPFR Multiple-Precision Floating-Point

GMP GNU Multiple Precision

MPC Multiple-Precision Comple

GLIBC GNU Library C

CPU Central Processing Unit

ISL Interger Set Libary

GLOOG Chunky Loop Generator

MIPS Microprocessor Without Interlocked Pipeline Stages

GNU GNU's Not Unix

PRA Privileged Resource Architecture

ASE Modules and Application Specific Extensions

UDIs User Defined Instructions

FPU Floating Point Unit

ALU Arithmetic and Logic Unit

SIMD Single Instruction Multiple Data

MT Multi-Threading

DSP Digital Signal Processing

EVA Enhanced Virtual Addressing

ISA Instruction Set Architecture

Trang 12

TOM TAT KHÓA LUẬN

Khóa luận “ Nghiên cứu quá trình biên dịch cho Mips core 32 bit” là khóa

luận nghiên cứu tập trung tìm hiểu xây dựng hoàn chỉnh quá trình biên dịch cho

Mips core 32 bits trên kernel của linux, ứng dụng các thư viện và các công cụ dé

xây dựng môi trường biên dịch hoàn chỉnh từ chương trình bật cao C++ thành

Assembly và từ Assembly thành mã nhị phân từ đó Mips core có thé vận thành theo

chương trình đã được biên dịch.

Trong nghiên cứu này ,nhóm đã quyết định thực hiện 3 phần chính Phần đầunhóm tìm hiểu về các thư viện cần có đề biên dịch thành công đoạn mã C++ thành

Assembly sau đó là tìm cách liên kết chúng với nhau đề chúng có thể hoạt động

được với nhau từ đó xây dựng chúng trên kernel của linux dé tạo thành một môi

trường có thé biên dịch Phan tiếp theo xây dựng công cụ Binutils trên môi trường

dé chuyên Assembly thành kết quả cuối cùng đó là đoạn mã nhị phân là đầu vào củaMips core dé nó có thé hoạt động Phần cuối cùng là tích hợp môi trường đã được

xây dựng vào một editor cụ thé là Eclipse dé quá trình biên dịch được tự động hóa

và dé dàng thiết kế mã C++ hơn

Trang 13

Chương 1 TONG QUAN

1.1 Tinh hình nước ngoài

Ngày nay trong ngành công nghiệp bán dẫn chúng ta không còn xa lạ gì với

Mips core Các nước trên thé giới đang chạy đua về mặc công nghệ và cải tiễn Mips

nhăm nâng cao hiệu suât và ứng dụng của nó

Nhằm nâng cao hiệu suất và tối đa hóa tính ứng dụng của Mips một phần

không thê thiếu trong vận hành cũng như kiểm thử chức năng của chip đó là quá

trình biên dịch hiện nay trên thế giới đã có những công cụ biên dịch cho mips có độ

hoàn thiện cao như Mars 4.5, Compiler Explorer

MARS, Mips Assembly và Runtime Simulator, sẽ lắp ráp và mô phỏng việcthực thi các chương trình hợp ngữ MIPS Nó có thể được sử dụng từ một dòng lệnhhoặc thông qua môi trường phát triển tích hợp (IDE) MARS được viết bằng Java và

yêu cầu ít nhất Bản phát hành 1.5 của Môi trường chạy Java J2SE (JRE) để hoạt

động Nó được phân phối dưới dạng tệp JAR thực thi Trang chủ của MARS là

http://www.cs.missouristate.edu/MARS/ Tài liệu này có sẵn dé in ở đó Ké từ

Phiên bản 4.0, MARS lắp ráp và mô phỏng 155 lệnh cơ bản của tập lệnh MIPS-32,khoảng 370 lệnh giả hoặc biến thể lệnh, 17 chức năng syscall chủ yếu dành cho

bảng điều khiển và tệp I / O được định nghĩa bởi SPIM và thêm 22 syscalls cho các

mục đích sử dụng khác như đầu ra MIDI, tạo số ngẫu nhiên và hơn thế nữa Chúng

được liệt kê trong các tab trợ giúp riêng biệt.

Compiler Explorer là công cụ biên dịch được phát triển và tài trợ bởi Intel,

Solids Sands

Trang 14

Elle Edit Bun Settings Tools Help

Take one dovn pass it around, 68 Bottles of beer on the vail

2 ane down pass it around, 97 battles of beer on the vall

around, 96 battles of beer on the vall

1, 96 bottles of beer around, $5 bottles of beer on the vall

» 95 bottlers of beer, around, 94 bottles of beer on the wall bottles of & LU, 9 bottles of beer, Take ane dovn pass 1t around, 83 bottles of beer on the vall

bottles of of beer, Take one dovn pats it around, 92 bottles of beer on the vall

bottles of es of heer Take ane don pass it around, 61 bottles af beer on the vall

bottles of beer SL bottles of beer Take one dovn [bo bottles of beer of

it around, 90 bottles of beer on the vatL

S0 bottles af beer Take ane dovn pass it around, 82 bottles of beer on the vall

& bottles of beer Take one down pass it around, 68 bottles of beer on the vall

#8 bottles of beer Take ane dovn pass it around, 67 bottles af beer on the vall

of beer, Take one dovn pass it around, B5 bottles of beer on the vall

[Bs bottles of bee af beer, Take ane dovn pass 1% around, 65 bottles of beer on the vall

fis bottles of beer of the wal of beer, Take ane dovn pass it around, 64 bottles of beer on the vall

[aa nasties af heer nf the wall B4 hatsles af heat Take ane smn ass i2 armind #2 battles nf heer nthe xa}1

Hình 1.2.1: Giao diện của Mars 4.5.

Mơre * [Support avert in C++ with fncude <-> +] | spsintel ASA | share~ Policies ~

ee cae = x | MPffSeS (øjf cauetff OSWBiere+) x a sng-ormal #1 with MiPSipee 54 (e) X Dutput of MIPS góc 54 (el) (Compiler #1) ox

he er eee = Ì MIPS gee 5.4 (el ^ @ Compiler optic | | A7 CWraplines > Arguments 495tdin A> [Wnaplines

ee nan z Seas edior retinal vi

2 using namespace std; L using namespace std;

3 int mginQ( Fe ane maing) ¢

A |

3 | tne man, sa; ' uy JES ine mt = 3, —.

: COUR Kista 9iiS6E34/200@56P6161/5<<( _ Bs MIFSE# 900 54 °' B cout €€ "sum of entered numbers is: " << (numi + nunz

; MIPS gec 5.4 (el) # E return 8;

406930 'jal 400ca0 <

~ BÁC IPS ace Shel tte fa

Hình 1.2.2: Giao diện cua Compiler Explorer.

1.2 Tình hình trong nước

Quá trình biên dich cho các chip sử lý trong nước cũng nhận được rất nhiều sự

quan tâm nhưng chủ yếu xử lý quá trình biên dich cho ARM là chủ yếu vì độ phổ

biến của dòng chip nay Mặc cho tìm năng rat lớn trong ứng dụng cũng như cải tiễn

Trang 15

vê mặc hiệu năng các nghiên cứu về trình biên dich cho mips core chưa nhận được

nhiêu sự quan tâm

1.3 Lý do chọn đề tài

Trong quá trình phát triển và hoàn thiện các chức năng cũng như dé ứng dụng

và phát triển MIPS chúng ta cần thử nghiệm và phát triển ứng dụng bang các ngônngữ bật cao như C ,C++.Đề kiểm dinh và tối ưu ứng dụng chúng ta di sâu vào

nghiên cứu quá trình biên dịch từ ngôn ngữ bật cao sang nhị phân được đưa vào

chạy trên Chip từ đó ta hiểu sâu thêm về phương thức vận hành cũng như luồng

hoạt động từ lúc phát triển code đến lúc code được xử lý trong chip và từ đó điều

khiển các thiết bị ngoại vi.Hiện nay vì độ phô biến cũng như ứng dụng cao của

ARM core cũng đã có những nghiên cứu về biên dịch trên ARM core, nhận thấy tìmnăng của MIPS core trong tương lai sẽ phát triên nên nghiên cứu này sẽ cho ta cái

nhìn tông thê về nó.

1.4 Mục tiêu.

Mục tiêu của đề tài là nghiên cứu và xây dựng thành công môi trường biên

dịch trên kernel của linux bằng cách cài đặt các thư viện, công cụ kết hợp với nhau

dé có thé biên dịch từ ngôn ngữ bật cao C++ thành Assembly và từ Assemply thành

mã nhị phân từ mã nhị phân này qua bộ Bootloader từ đó mã được tải vào memory

của MIPS 32 bits Sau đó MIPS sẽ vận hành theo chương trình đã được biên dịch.

Từ nghiên cứu hiểu thêm về quá trình vận hành của máy tính từ chương trình

bật cao đên mã máy lây nó làm cơ sở đê kiêm thử và phát triên MIPS core vê sau.

Trang 16

Chuong 2 CƠ SỞ LÝ THUYET

2.1 Sơ lược về kiến trúc tập lệnh MIPS 32 bit

2.1.1 Quan điểm lich sử

Kiến trúc Bộ hướng dẫn MIPS (ISA) đã phát triển theo thời gian từ MIPS I

TM [SA ban đầu, thông qua MIPS V ISA, đến Kiến trúc MIPS32 và MIPS64 hiện

tại Khi ISA phát triển, tất cả các phần mở rộng đã tương thích ngược với các phiên

bản trước của ISA Trong cấp MIPS III của ISA, các số nguyên và địa chi 64-bit đã

được thêm vào tập lệnh.

Các cấp độ MIPS IV và MIPS V của ISA đã b6 sung các hoạt động dau phâyđộng được cải tiến, cũng như một tập hợp các hướng dẫn nham cải thiện hiệu quả

của mã được tạo và di chuyên dữ liệu Do yêu cầu tương thích ngược nghiêm ngặtcủa ISA, những thay đổi như vậy không có sẵn cho các triển khai 32-bit của ISA,

theo định nghĩa, các triển khai MIPS I hoặc MIPS II Mặc dù ISA ở chế độ người

dùng luôn tương thích ngược, nhưng môi trường đặc quyền được phép thay đổi trên

cơ sở môi lân triên khai.

Do đó, môi trường đặc quyền R3000® khác với môi trường đặc quyền

R4000 và các triển khai tiếp theo, trong khi tương tự với môi trường đặc quyền

R4000, bao gồm những khác biệt nhỏ Bởi vì môi trường đặc quyền không bao giờ

là một phần của MIPS ISA, một triển khai có thé linh hoạt dé thực hiện các thay đổicho phù hợp với việc triển khai cụ thé đó Thật không may, phần mềm hạt nhân bắt

buộc này sẽ thay đổi đối với mọi hệ điều hành hoặc môi trường hạt nhân mà việc

triển khai đó dự định chạy

Nhiều triển khai MIPS ban đầu được nhắm mục tiêu vào các ứng dụng giốngmáy tính như máy trạm và máy chủ Trong những năm gần đây, việc triển khai

MIPS đã đạt được thành công đáng kể trong các ứng dụng nhúng Ngày nay, hầu

hết các bộ phận MIPS được vận chuyên đều đi vào một số loại ứng dụng nhúng

Các ứng dụng như vậy có xu hướng có sự đánh đôi khác với các ứng dụng giông

Trang 17

như máy tính bao gồm tập trung vào chỉ phí thực hiện và hiệu suất như một hàm củachi phí và năng lượng Kiến trúc MIPS32 và MIPS64 nhăm giải quyết nhu cầu về

tập lệnh MIPS hiệu suất cao nhưng nhạy cảm về chỉ phí Kiến trúc MIPS32 dựa trênMIPS II ISA, thêm các lệnh được chọn từ MIPS III, MIPS IV va MIPS V dé cải

thiện hiệu quả của mã được tạo và di chuyên dữ liệu.

Kiến trúc MIPS64 dựa trên MIPS V ISA và tương thích ngược với Kiến trúcMIPS32 Cả hai Kiến trúc MIPS32 và MIPS64 đều đưa môi trường đặc quyền vào

định nghĩa Kiến trúc dé giải quyết các nhu cầu của hệ điều hành và phần mềm hat

nhân khác Cả hai cũng bao gồm điều khoản bổ sung Tiện ích mở rộng dành riêng

cho ứng dụng MIPS (ASE), Hướng dẫn do người dùng xác định (UDI) và bộ đồng

xử lý tùy chỉnh đề giải quyết nhu cầu cụ thé của các thị trường cụ thé.

Kiến trúc MIPS32 và MIPS64 cung cấp lợi thé về chi phí / hiệu suất đáng ké

so với việc triển khai bộ vi xử ly dua trên kiến trúc truyền thống Lợi thé này là kếtquả của những cải tién được thực hiện trong một số lĩnh vực liền kề: công nghệ quytrình VLSI, tổ chức CPU, kiến trúc cấp hệ thống, hệ điều hành và thiết kế trình biên

dịch.

2.1.2 Giới thiệu về kiến trúc MIPS 32 bit

Kiến trúc MIPS32 là một kiến trúc tiêu chuẩn công nghiệp có hiệu suất cao, làtrung tâm của hàng tỷ sản phẩm điện tử, từ vi điều khiển nhỏ đến thiết bị mạng caocấp Nó cung cấp một bộ hướng dẫn mạnh mẽ, khả năng mở rộng từ 32 bit đến 64

bit, một phô rộng các công cụ phát triển phần mềm và sự hỗ trợ rộng rãi từ nhiều

đôi tác và người được câp phép.

Kiến trúc MIPS32 cung cấp khả năng tương thích trở lên liền mạch với kiến

trúc MIPS64 64-bit, mang lại các tính năng mạnh mẽ, hướng dẫn chế độ đặc quyền

được tiêu chuẩn hóa và hỗ trợ cho các phiên bản ISA trước đây Kiến trúc MIPS32

kết hợp các chức năng quan trọng bao gồm SIMD (Đa dữ liệu hướng dẫn đơn) va ảohóa Những công nghệ này, kết hợp với các công nghệ như đa luồng (MT), phần mởrộng DSP va EVA (Địa chỉ ảo nâng cao) làm phong phú thêm kiến trúc dé sử dụng

Trang 18

với khôi lượng công việc phân mêm hiện đại yêu câu kích thước bộ nhớ lớn hơn,

tăng mã lực tính toán và môi trường thực thi an toàn.

Kiến trúc MIPS32 dựa trên tập lệnh có độ dài có định, được mã hóa thường

xuyên va sử dụng mô hình dữ liệu tải / lưu trữ Kiến trúc được sắp xếp hợp lý dé hỗtrợ thực thi tối ưu hóa các ngôn ngữ cấp cao Các phép toán số học và logic sử dụng

định dang ba toán hạng, cho phép trình biên dịch tối ưu hóa việc xây dựng các biểu

thức phức tạp Sự sẵn có của 32 thanh ghi có mục đích chung cho phép trình biên

dịch tối ưu hóa hơn nữa việc tạo mã cho hiệu suất băng cách giữ dữ liệu được truy

cập thường xuyên trong thanh ghi.

Một tập hợp các thanh ghi phan ánh cau hình của bộ nhớ đệm, MMU, TLB vàcác tính năng đặc quyền khác được triển khai trong mỗi lõi Bang cách tiêu chuan

hóa chế độ đặc quyền và quản lý bộ nhớ và cung cấp thông tin thông qua các thanh

ghi câu hình, kiến trúc MIPS32 cho phép các hệ điều hành thời gian thực, các công

cụ phát triển khác và mã ứng dụng được triển khai một lần và được sử dụng lại với

các thành viên khác nhau của ca MIPS32 và bộ xu lý MIPS64 các gia đình Tinh

linh hoạt của bộ nhớ đệm hiệu suất cao và sơ đồ quản lý bộ nhớ là điểm mạnh của

kiến trúc MIPS Kiến trúc MIPS32 mở rộng những ưu điểm này với các tùy chọn

kiêm soát bộ đệm được xác định rõ.

Kích thước của lệnh và bộ nhớ đệm dữ liệu có thé nằm trong khoảng từ 256

byte đến 4 MB Bộ đệm dữ liệu có thể sử dụng chính sách ghi lại hoặc ghi qua Một

tùy chọn không có bộ nhớ cache cũng có thể được chỉ định Cơ chế quản lý bộ nhớ

có thé sử dụng chính sách TLB hoặc chính sách Dịch địa chỉ khối (BAT) Với TLB,kiến trúc MIPS32 đáp ứng các yêu cầu quản lý bộ nhớ Windows CE, Linux và

Android.

Trang 19

Hình 2.1: Kiến trúc phần cứng của một MIPS 32 bit cơ bản.

2.2 Các thành phan của kiến trúc bộ lệnh MIPS 32 bit

Máy tính làm việc bởi lây lệnh ngôn ngữ máy từ bộ nhớ, giải mã và tính toán

chúng Ngôn ngữ máy và các giá trị sẽ được tính toán và mã hóa thành mã nhị phân.

Máy tính chỉ làm việc với các giá trị nhị phân, dé thực hiện xây dựng một kiến trúcmáy tính sử dụng kiến trúc MIPS thì các thành phần cơ bản phải bao gồm là:

- Program counter (PC): con trỏ chương trình.

- Mem: Bộ nhớ.

- Instruction Register: tập các thanh ghi lệnh.

- Register File: tập các thanh ghi.

- ALU: Khối đơn vị số học va logic

- CU: khối don vi kiểm soát

Trang 20

2.2.1 Kiến trúc tập lệnh (ISA)

Kiến trúc Bộ lệnh MIPS32 và MIPS64 xác định một họ lệnh tương thích xử lý

dữ liệu 32 bit va dữ liệu 64 bit (tương ứng) trong khuôn khổ của Kiến trúc MIPS

tong thé Bao gồm trong ISA là tat cả các hướng dẫn, cả đặc quyền va không đặc

quyên, theo đó người lập trình giao tiếp với bộ xử lý ISA đảm bảo khả năng tươngthích mã đối tượng cho các chương trình không có đặc quyền thực thi trên bat kỳ bộ

xử lý MIPS32 hoặc MIPS64 nào; tất cả các hướng dẫn trong MIPS64 ISA tương

thích ngược với các hướng dẫn trong MIPS32 ISA Trong nhiều trường hợp, các

chương trình đặc quyền cũng tương thích với mã đối tượng — sử dung macro hợp

ngữ hoặc biên dịch có điều kiện, thường có thể viết các chương trình đặc quyền

chạy trên cả triển khai MIPS32 và MIPS64

Trong triển khai Bản phát hành 6, khả năng tương thích mã đối tượng khôngđược dam bảo khi thực thi trực tiếp mã trước Bản phát hành 6, vì một số mã hóa

lệnh trước Ban phát hành 6 nhất định được phân bổ cho các hướng dẫn hoàn toàn

khác trên Bản phát hành 6.

Tuy nhiên, có một tập hợp con hướng dẫn hữu ích có các mã hóa giống nhau

trong cả Bản phát hành 6 và Bản phát hành trước 6 và một tập hợp con thậm chí còn

lớn hơn có thể được lưu giữ và mô phỏng Hơn nữa, sử dụng macro hợp ngữ hoặc

biên dịch có điều kiện, thường có thể viết phần mềm chạy trên cả triển khai Bản

phát hành 6 và Bản phát hành trước 6 Khả năng tương thích nhị phân có thê thu

được bang cách dịch mã nhị phan

Phiên bản 6 được thiết kế dé thay thế lệnh đơn giản có thê thực hiện tất cả cácbản dịch nhị phân như vậy, giảm thiêu ánh xa lại các địa chỉ lệnh Ví dụ: dé dịch /

vá nhị phân bản nhi phân trước Ban phát hành 6, các lệnh nhánh nhỏ gọn trong Ban

phát hành 6, không có khe trễ, có nghĩa là bat kỳ lệnh nào cũng có thé được thay thếbằng lệnh gọi lệnh đơn BALC đến một hàm mô phỏng - giả sử rằng hàm giả lập có

10

Trang 21

thé đạt tới mục tiêu nhánh với khoảng 26 bit / 256MB của nó và thanh ghi liên kết

có thê được ghi đè - điều mà một trình dịch nhị phân thường có thê sắp xếp Một chỉ

dẫn BC duy nhất tránh sử dụng thanh ghi liên kết, với chỉ phí tăng thêm điểm

đầu vào mô phỏng JC / JIALC cũng có thể được sử dụng, mặc dù độ lệch 16 bit

nhỏ hơn của chúng có thê yêu cầu trình dịch nhị phân sử dụng thêm một thanh ghi.Bản phát hành 6 và các bản phát hành tiếp theo sẽ tương thích ngược về sau, tức là

mã Bản phát hành 6 sẽ chạy trên tất cả các bản phát hành tiếp theo

11

Trang 22

1 Pull along perforation to separate card 2 Fold bottom side (columns 3 and 4) together

MIPS Reference Data Card (“Green Card”)

@® ARITHMETIC CORE INSTRUCTION SET @ orcove

Reference Data NAME, MNEMONIC MAT OPERATION (Hex)

Brinch On FPTrue belt FI iF Pcond)PC=PC+4+BranchAddr (4) 1L/8/1/—

CORE INSTRUCTION SET OPCODE

FOR- /FUNCT Brinch On FP False bere Fl if(!FPeond)PC=PC+4+BranchAddr(4) II/&M=

NAME, MNEMONIC MAT OPERATION (in Verilog) (Hex) —-Dividle div Ro LœR[nJ/R[n]: Hi=R[s]*4R[n] (M /1a

Pet att Ro R[ml=Rfn]+Rin| (1) 0/20,q, Divide Unsigned divs R Lo=R[mJ/E[n] Hi=R[s]SR[n] (6) ais

Add tmmediate sả T RỊi]=R[mjtSimEximm (l2) Be, EAU CC adda FR HINH EA Nà:FP Add dad pe TRIMLFIfM*I]I ={FI&FIS+H]} safilz

Add Imm, Linsigned addio 1 Rịm]= R[mj+ SignExtimm (2) Sex Double 8: {FIfJ.FIf+1])

Add Unsigned dạo Ro Rfrd]=Rfn]+Rin] 0/2),, FP Compare Single cx.s* FR FPcond=(F[fs] op FIf])? 1-0 LAD/—/y

nay FP Compare FPeond = ( {FUEfS).F[fs+1]} ap

And and R R[ml]=R[m]& Ri] 0/2 Hoable cxd* FR ee ee - 1<

And Immediate andi Í Rirt] = B{rs] & ZeroExtimm G) Chex * (xis eq, Lt or Le) (op is =, <, or <=) y is 32, 3c, or 3e)

if[R[rsịE=R[rt]) FP Divide Single 4:iv.s FR F[fd]=F[fs]/F[R] 11/103

Brinch On Equal beqs ÏÌ pCCp-+¿:DranchAddr (4) he FP Divide "“ÔÔÔ.Ô k na.

if[R{rs}'=R[r}) Double : {F[8].F[f+I]) :

Branch On NotEqualene 1 E ny4sHianchAddr (4) Fx FP Multiply Single murs FR F[fd]=F[f] * E[f] 11/10/-/2

s FP Multiply {FIMIFTfM*l]† = (FLAs].FLfs+1]} *

Jump 4 1 PC=lumpAdiẻr CG) new bret mai.d FR (aye) 2

Jump And Link jal 1 R31]-PCH8;PC=lampAddr (5) Sex FP Subtract Single sub FR F[fd}-F[ts] - F [A] 11/18/41

Jump Register jr R PC=R[n] 0/8, „ FP Subtract won ag FR PPLE) = CRUEL) = yyy

Ề R[rt]={24'b.MIR{rs] , Double {F[fJ,FIf+1])

Load Byte Unsigned abu I +SignExtizwm](T:0] 2) “Ẩh=ẽ = Load FP Single xe: Ï FIHEEM[E[mltSignEximm] (2) 3l+/—/~

: Load FP F[n}CMIR[r]+SignExtlmm]; (2!

Load Halfword rt}={ 16°bO, MIR[rs| " 1 35-J-'~ his mà Ị M16 OME m 15:0) - Ơy 25km mem h a a

bị Move From Hi — m£hi =Hi 0/~/-/10

Load Linked a1 1 Rịn]=M[R[njsSigaEximm] (27) nee Mtoe FromLo = afle R Ried] =Lo 0/~/-/13

Load Upperimm lui 1 Rirt] = |imm, 16°b0} Thạc Move From Control méco R R[rd]= CR{rs] 10 /0/-/0)

Load Word Iw l Rit]=M[R[rs}+SignExtimm) (2 23, Multiply sult Ro {Hilo} “R[m]* Rịn] 0/18

= so Multiply Unsigned euitu R {Hilo} =R[rs]* Rịn| (6) f=~1

Ề 0/27 là

Nor nor = R_OR[rd] =~ (Rfrs] | Rit) tinal ShiftRight Ante ara R Rnd] = Rt] >> shart Para

Or or R Rfrd] = Bes] | Rist] *hex Store FPSingle svc: | M[R[rs}+SignExtimm]=F[rt} (2) 39-2¬/~

Or Immediate øri 1 R[n]=R[]|ZeroExtimm B) địa Store FP sac; 1 MUR[es}+SignExthmm)=F[rt}; (2) sa

Set Less Than sit oR R[n|“(R[m]<R[d])?1:0 O/ 2a, Double M[R{[rs}+SignExthmm+4)=F[rt+1) ˆ Set Less Thanimm siti I R{n]=(R{rs]<SignExtimm)?120(2) mex FLOATING-POINT INSTRUCTION FORMATS

Set Less Than Imm ; Rịn] = (Rj{m] < SignExtimm) FR | opcode fmi ñ 5 fd funct

mu 1 1

Unsigned “It 21:0 G6 e ls A eee D

Set Less Than Unsig.nito R R[rd]=(R[m]<R[n]l?l!;0 (6) OF *bụe, Fl | opcode frm ft immediate

Shift Left Logical = 411 R Ried] = Rịm]<< shame 07 00,5 Ty 2 25 HE] Tạ 15 ụ

Shift Right Logical sri R|nl[=R[n]>>>shamt O/ 02h PSEUDOINSTRUCTION SET

MUR{[rs}+SignExtimm|(7-0) = NAME MNEMONIC OPERATION

Store Byte ab 1 Rịn]j70) eị Zhe Branch Less Than bìt — ifR[rj=R[n])PC = Label

" MỊ SignExtimm] = Rint] Branch Greater Than bạt 1f{R[rs†=R[r]) PC = Label

Store Conditional osc — I an: ee cae ri a7 78h Branch Less Than of Equal Eie — iffR[rs}<"R{rt]) PC = Label

HS = Branch Greater Than or Equal be 1f[R[rs†>=R[r]) PC = Label

StoreHalfwond = anh yee Pee coe 2) res Load immediate Le Ried - immediate

Store Word aw 1 MiR|nl+SignEximm]=Rịn (2) #ụ„ : ert ences

TER NAME, NUMBER, USE, CONVENTION

Subtract sub — #ˆ R[nd|= Rịm}-Rịn] lý mg NAME, nh meee- FNAME NUMBER USE PRESERVEDACROSS

Subtract Unsigned subu R Rịrd|=R{[s]-Rj{rt| 0/2 NAM Ọ A CALL?

(1) May cause overflow exception aero 0 The Constant ữ NA.

(2) SignExtlmm = | |6{immediate[14]}, immediate } [Sar seem ler Temporary]

(3) #eraExtlmm = ( 16{1b'O}, immediate } Values for Fi Tenh

(4) BranchAddr={ 14{immediate[15]}, immediate, 2°b0 | SUSI 23 TT a asa : No

(6) JumpAddr= | PC+4[31-28), address, 2°60 } se on =° =

(BỊ Operands considered unsigned numihers (vs 2's comp.) wees Srp No

Ss7 16-23 Saved Temporanes es

INSTRUCTION FORM,

BARC =5 [S850 —7a-75 —Temnporaries Ne

R [opcode | os | on mỊ | Hhưm | Re SEO-SEI 26-27 Reserved for OS Kemal N6

M mm zim eis Lu i as " Sep Bi] Global Pouster Yes

1 opcode rs nm immediate Sp Br) Stack Pointer Yer

1 mis zi we is Lễ Sip 3 Frame Pointer Yes

4 [ ma] mâm | SaaS RewnAdiee Ye

n urs o

Copyright 2009 by Elsevier, Inc,, All rights reserved From Patterson and Hennessy, Computer Organization and Design, 4th ed.

Hình 2.2: Các lệnh MIPS 32 co ban.

2.2.2 Kiến trúc tài nguyên phân quyén(PRA)

Nó đưa ra một tập các môi trường đảm bảo cho ISA hoạt động PRA cung cấp

các cơ chê cân thiét đê quan lý các tài nguyên của bộ xử lý: bộ nhớ ảo, cache, các

ngoại lệ

12

Trang 23

2.2.3 Cac thành phần mở rộng tùy chon cho ứng dụng(ASE)

Kiến trúc MIPS32 và MIPS64 cung cấp hỗ trợ cho các thành phần tùy chọn

-được gọi là Mô-đun hoặc phần mở rộng ứng dụng cụ thé Là phan mở rộng tùy chọn

cho kiến trúc cơ sở, Mô-đun / ASE không tạo gánh nặng cho mọi việc triển khai

kiến trúc với các hướng dẫn hoặc khả năng không cần thiết trong một thị trường cụ

thé Một ASE / Mô-đun có thé được sử dụng với ISA va PRA thích hợp dé đáp ứngnhu cầu của một ứng dụng cụ thé hoặc toàn bộ lớp ứng dụng

2.2.4 Câu lệnh được người dùng định nghia(UDIs).

Đây là các câu lệnh đặc biệt cho các úng dụng khác nhau cho mục đích ứng

dụng khác nhau khi một bộ xử lý áp dụng kiến trúc MIPS.

2.2.5 Đồ hình truyền dữ liệu

Day là một minh họa về đường đi của dữ liệu trong kiến trúc MIPS Ngày nay

việc cài đặt đường ông và siêu vô hướng là chung nhât cho các bộ xử lý hiệu năng

cao.

Hình 2.3: Sơ đồ truyền dữ liệu cua MIPS32

13

Trang 24

2.3 Kiến trúc lệnh và tập thanh ghi trong MIPS

Thuật ngữ register để ám chỉ một thành phần nhớ điện từ Kiến trúc MIPScung cấp một tập hợp gồm 32 thanh ghi chung, một thanh ghi chương trình (hay cònđược gọi là con trỏ chương trình PC), và có thêm hai thanh ghi đặc biệt Tất cả các

register của kiến trúc Mips đều là thành phần với khả năng năm giữ 32-bits số nhị

phân Mỗi register có khả năng nắm giữ một giá trị 32-bits Khi viết ở mức hợp ngữ,hầu hết các lệnh yêu cầu một chương trình đặc biệt mà các thanh ghi trong tập thanh

ghi (register file) sẽ được sử dung trong quá trình tính toán lệnh Một sự thỏa thuận

sẽ được thông qua dé chi tiết rằng thanh ghi nào sẽ được sử dụng tương ứng với mộtngữ cảnh cụ thê Các thanh ghi sẽ được gọi bằng tên tương ứng, cái mà sẽ giúp nhắc

nhở chúng ta về sự thỏa thuận này

2.3.1 Thanh ghi CPU

Tên Số Ý Nghĩa

$zero $0 hăng số 0

$at $1 Asembler Temporary

$v0-$v1 $2-$3 Gia tri tra lai cua ham

hoặc biểu thức

$a0-$a3 $4-$7 Các tham số của hàm

$tO-$t7 $8-$15 Thanh ghi tam

$s0-$s7 $16-$23 Thanh ghi lưu trữ

$t8-$t9 $24-$25 Thanh ghi tam

$k0-$k1 $26-$27 Dự trữ cho nhân OS

$gp $28 Con trỏ toan cục

$sp $29 Con tro stack

14

Trang 25

$fp $30 Con tro frame

$ra $31 Dia chi tra vé

Bang 2.1: Tap thanh ghi MIPS32

Thanh ghi zero có tên là $zero là đặc biệt, nó là nguồn gốc của giá tri zero

Không có một giá trị nào được ghi vào thang ghi zero.

Thanh ghi | có tên là $at, được gọi cho hợp ngữ tạp thời, thanh ghi này dành cho tính toán các lệnh marco, và không nên được sử dụng cho các chương trình hợp

ngữ.

Các thanh ghi $k0 và $k1 được sử dụng bởi các nhân(kernel) của hệ điều

hành, và không nên bị thay đôi bởi chương trình người dùng

Thanh ghi cuối cùng $31 được sử dụng giống như là một thanh ghi liên kết bởi

lệnh nhảy và lệnh liên kết, cái mà sẽ được sử dụng dé gọi một thủ tục

Thanh ghi $31 được sử dụng dé ghi nhớ dia chỉ tra về của một thủ tục được

gọi Các thanh ghi $v0 và $v1 dùng để lưu trữ giá trị trả về của hàm

Các thanh ghi $t0-$t9 là các thanh ghi có nhớ lời gọi.

Dùng cho các giá trị tạm thời mà không cần phải nhớ mỗi khi có lời gọi

Các thanh ghi $s0-$s7 là các thanh ghi có nhớ lời gọi.dùng cho các giá tri

không thay đổi mỗi khi có lời gọi

Thanh ghi $sp là con trỏ stack, trỏ tới vị trí cuối cùng trỏ tên stack Thanh ghi

$rp là con trỏ frame.

Thanh ghi $ra ghi lại địa chỉ trả về mỗi khi có lời gọi hàm Thanh ghi $gp làcon trỏ toàn cục trỏ tới vi trí giữa cua khối bộ nhớ 64K vùng heap, nơi chứa các

biên và hăng sô toàn cục.

Hai thanh ghi đặc biệt được gọi là thanh ghi HI và thanh ghi LO, chúng được

sử dụng đê kiêm soát kêt quả của một lệnh thực hiện nhân hoặc chia sô nguyên.

15

Trang 26

2.3.2 Thanh ghi chương trinh(PC)

Sau khi một chương trình được viết như là một chương trình bằng ngôn ngữhợp ngữ sử dụng một trình tạo văn bản, chương trình được chuyên thành mã máy

bang một chương trình sử dụng gọi một trình biên dịch hợp ngữ Mã của ngôn ngữ

máy được ghi vào một file trên đĩa Khi mà một người muốn thực hiện chương trình

này, một chương trình sử dụng khác, gọi một đường dẫn nạp chương trình, sẽ nạp

và liên kết với tất cả các khối ngôn ngữ máy cần thiết bên trong bộ nhớ chính Cáclệnh riêng biệt sẽ được ghi nhớ tuần tự vào bộ nhớ Con trỏ chương trình( PC) là

một thanh ghi được khởi tạo bởi hệ điều hành đến địa chỉ của lệnh đầu tiên của

chương trình trong bộ nhớ Chú ý rằng địa chỉ trong con trỏ chương trình được gửiđến đầu vào địa chỉ của bộ nhớ thông qua một bus Sau khi một lệnh được lay từ bộnhớ và được nạp vào thanh ghi lệnh( IR) con trỏ PC sẽ được tăng dé CPU có đượcđịa chỉ cho lệnh tuần tự tiếp theo cho quá trình lây lệnh

2.3.3 Các thanh ghi lệnh.

Thanh ghi lệnh IR là thanh ghi 32-bits dùng dé nắm bản sao chép của lệnh

được gọi đến gần đây nhất Trong kiến trúc MIPs thì có 3 định dạng lệnh khác nhau

được định nghĩa: định dạng R, định dạng I và định dang J.

16

Trang 27

2.3.4 Quy ước sử dụng các thành ghi.

Register name Number Intended usage

9t0-$t7 Temporary (not preserved across call)

$s0-$s7 Saved temporary (preserved across call) Št8,§t9 Temporary (not preserved across call)

5k0, $k1 Reserved for OS kernel

Sgp Pointer to global area

Ssp Stack pointer

Sfp Frame pointer (if needed):

otherwise, a saved register $s8

Sra Return address (used to return from a

procedure)

Hình 2.4: Quy ước các thanh ghi.

Thanh ghi $v0 và thanh ghi $v1 được sử dung trả về kết quả cho một thủ tục.Các thanh ghi từ $a0 đến $a3 được sử dụng dé gọi bốn tham số đầu của một thủ tục

Các tham số duy trì được gọi thông qua stack Những thanh ghi nay là không dành

riêng cho lời gọi một thủ tục duy nhất

17

Trang 28

Lời gọi một thủ tục có thê thay đổi giá trị của các thanh ghi này Các thanh

ghi từ $t0 đến $t9 là các thanh ghi tạm thời, không dành riêng cho các lời gọi các

thủ tục Các thanh ghi này sẽ được bảo đảm để được ghi nhớ bởi một lời gọi Thêm

vào đó thì các thanh ghi từ $s0 đến $s7 được gọi là các thanh ghi lưu trữ, những

thanh ghi này có thê được dành riêng cho lời gọi các thủ tục

Thanh ghi $sp là con trỏ stack, đây là thanh ghi rất hữu dụng cho việc cài đăt

stack Nó luôn trỏ tới đỉnh của một stack Trình biên dịch MIPS không sử dụng một

con trỏ nền (frame pointer) Đối với một kết quả, các thanh ghi con trỏ nền $fp được

sử dụng như là lưu trữ lời gọi thanh ghi $s8 Thanh ghi $ra được sử dụng dé lưu giátrị địa chỉ trả về trong một thủ tục

Thanh ghi $gp trỏ đến vùng nhớ được dùng dé lưu trữ các biến toàn cục va

các biến hằng Thanh ghi $at được dành cho trình biên dich hợp ngữ Trình biên

dich hợp ngữ thường sử dụng thanh ghi này dé thông dịch lệnh giả mã Các lệnh gia

mã không phải là các lệnh của bộ xử lý, đó chỉ là các lệnh được hé trợ bởi trình biên

dịch hợp ngữ Mỗi một giả mã được thông dịch bởi trình biên dịch hợp ngữ thành

một hoặc nhiêu lệnh của bộ vi xử lí.

2.3.5 Thanh ghi FPU.

Kiến trúc MIPS đưa ra các thanh ghi FPU sau:

- 32 thanh ghi dau cham phay động Các thanh ghi này có độ dai 32-bit nếu là

bộ FPU 32-bit hoặc 64 bit nếu là bộ FPU 64-bit

- 5 thanh ghi điều khiển FPU dùng dé nhận diện và quản lý FPU

- 8 bộ mã điều khiển số dấu cham động là các thành phan của thanh ghi FCSR,

FP control/status register.

18

Trang 29

2.3.5.1 Dir liệu trong thanh ghi FPU.

FPU hỗ trợ hai dạng dữ liệu: số dấu chấm động và số dấu chấm tĩnh:

- _ Số dau châm động độ chính xác đơn và kép được định nghĩa theo chuẩn IEEE

- Số dau chấm tinh là các số nguyên có dau hỗ trợ bởi kiến trúc CPU

Các dạng số dấu chấm động được cung cấp bởi FPU là:

- _ Số dấu chấm động ching xác đơn 32-bit (kiểu S):

S (bit dau) Phan mii Phan lẽ

Lbit 8bit 23bit

Bang 2.2: Số dau cham động chính sat đơn

- Số dau cham động chính sát kép kiểu D:

S (bit dau) Phan mũ Phan lẽ

Ibit 11bit 52bit

Bang 2.3: Số dau cham động chính sát kép

- _ Số dau chấm động kẹp đôi(kiêu PS):

S(bitdấu) | Phần mũ Phần lẽ S(bit dau) | Phan | Phần lẽ

mu

Ibit 8bit 23bit Ibit §bit 23bit

Bang 2.4: Số dau cham động chính sát kép

2.3.6 Bộ nhớ

Tât cả các bộ xư lý hiện đại đêu làm việc với bộ nhớ cache Bộ nhớ cache

được đặt trên chip CPU Bộ nhớ cache cung cấp bộ nhớ nhanh đề truy cập đến các

19

Trang 30

lệnh và dữ liệu thay vì CPU phải truy cập vào bộ nhớ chính Bộ nhớ cache có chức

năng giống như là một cái mảng đĩa phương rộng nơi mà thông tin được lưu trữ và

lay ra theo từ nhớ( word), một từ nhớ(word) là tương ứng với 32-bits Mỗi vùng

trong bộ nhớ có 32-bits dia chỉ.

Trong kiến trúc MIPs, địa chỉ của bộ nhớ được đánh từ 0 đến 4,294,967,295.Trong kiến trúc Mips thì một từ nhớ là 32-bits và một byte là 8-bits Như vậy trongkiến trúc MIPs thì một từ bao gồm 4-Bytes, và đơn vi địa chỉ nhỏ nhất có thể của

thông tin được tham biến trong bộ nhớ là một byte Địa chỉ của byte đầu tiên trong

từ nhớ cũng là địa chỉ của từ nhớ Tất cả các lệnh trong kiến trúc MIPs đều có

32-bits độ dài Vì vậy con trỏ chương trình được tăng lên 4 sau khi mỗi lệnh được thực

hiện.

2.3.7 Cách thức đánh dia chỉ.

Kiến trúc Mips được biết đến với tập lệnh máy tính đơn giản Các nhà thiết

kế kiến trúc Mips cung cấp một tập hợp các lệnh cơ bản Trong trường hợp muốn

gọi một giá trị từ bộ nhớ chính hoặc ghi một giá trị vào bộ nhớ chính, chỉ một

phương thức đánh địa chỉ được cài đặt trong phần cứng của máy tính Phương phápđánh địa chỉ này được hiểu như là phương pháp đổi chỗ nhiều địa chi cơ sở Phươngthức đánh địa chỉ đưa ra cách thức dé biết được làm thé nào mà một toán hạnh được

xác định.

Như chúng ta đã biết thì đối với một toán hạng nó có thê có 3 vị trí: trongthanh ghi, trong bộ nhớ, hoặc nằm ngay trong phần của câu lệnh và được hiểu như

là một hang số Việc xác định một hang số được coi như một toán hạng được gọi là

phương thức đánh địa chỉ tức thời Tương tự như vậy, việc xác định một toán hạnh

được lưu trong thanh ghi gọi là phương thức đánh địa chỉ thanh ghi Mọi bộ xử lý

đều chấp nhận hai phương thức đánh địa chỉ này Sự khác nhau giữa bộ xử lí RISC

và CISC là làm thế nào chúng xác định được một toán hạng trong bộ nhớ Việc thiết

kế CISC sự biến đổi rộng rãi của phương thức đánh địa chỉ bộ nhớ Còn việc thiết

20

Trang 31

kế RISC chỉ chấp nhận duy nhất một hoặc nhiều nhất là hai kiểu phương thức đánhđịa chỉ trong câu lệnh nạp và ghi bộ nhớ Tất cả các kiến trúc MIPS chấp nhận hai

phương thức đánh địa chỉ sau đây:

- Dia chỉ của toán hạng được tính toán bởi phép cộng nội dung của một thanh

ghi và một hằng số Nếu như là hăng số bằng 0, nội dung của thanh ghi được

sử lí giống như là địa chỉ của một toán hạng Trong phương thức này, địa chỉ

bộ nhớ được tính toán giống như sau: Address = contents of a register +

constant.

- Dia chỉ của toán hạng bộ nhớ được tinh toán bởi phép cộng nội dung của hai

thanh ghi Nếu như một thanh ghi là bằng 0, phương thức đánh địa chỉ nàytrở thành giống nhưa phương thức trên với hằng số 0 Trong phương thức

này, dia chỉ được tính toán như sau: Address = contents of register 1+

contents of register 2.

Kiến trúc Mips là một kiến trúc nạp và ghi( Load/Store architecture), điềunày có nghĩa là tất cả các lệnh truy cập vào bộ nhớ chính đều là các lệnh nạp và ghi(

Load/store instruction).

Một lệnh nạp truy cập giá tri từ bộ nhớ va đặt một bản copy của giá tri tim

thấy trong bộ nhớ vào một trong số tập hợp các thanh ghi Ví dụ:

Lw $s1,8($a0)

Lệnh này sé tinh toán dia chỉ that của vùng nhớ được truy cập bởi thao tác

cộng nội dung của thanh ghi $a0 ( thanh ghi cơ sở) và 8 giá trị hằng( sự đổi chỗ)

Một bản copy của giá trị truy cập từ bộ nhớ chính tại địa chỉ thực sẽ được nạp vào

trong thanh ghi $s1 Một lệnh gia mã tương đương như sau:

Trang 32

này có thể nhân các giá trị từ -32,768 đến +32,767 Trong trường hợp lệnh nạp một

từ nhớ, địa chỉ thực cần phải là một con số mà là kết quả của một phép nhân với 4,

bởi vì một từ nhớ bao giờ cũng bao gồm 4 byte Cau trúc lệnh nạp của ngôn ngữ

hợp ngữ có vài cái dé nhằm lẫm Nếu ai đó viết một trình biên dịch hợp ngữ cho

kiến trúc Mips mới, cấu trúc sau đây sẽ làm việc tốt hơn của vân chuyền đến người

dùng những gì mà lệnh thực hiện hiện thời:

Lw $s1,[$a0+8]

Sau đây là một ví dụ về lệnh nạp từ nhớ:

Sw $s1, 12($a0)

Khi mà phan cứng tính toán lệnh này, nó sẽ tinh dia chi thật của vùng nhớ tới

bang cách cộng nội dung của thanh ghi $a0 và giá trị hằng 12 Một bản copy nội

dung của thang ghi $s1 được ghi vào bộ nhớ chính tai địa chỉ thực, một lệnh giả mã

tương ứng như sau:

Mem[$a0+12]=$s 1

Từ quan diém của người lập trình hợp ngữ, bộ nhớ có thé được thông đếngiống như là một mảng tuyến tính dài, và địa chỉ thực là một con trỏ đến một vài

vùng của mảng mà hệ điều hành chỉ định giống như là một khối dữ liệu Con trỏ

chương trình PC là con trỏ trong cùng một mảng, nhưng đến một khối khác được

gọi khối chương trình Hệ điều hành cung cấp một mảng khác trong bộ nhớ được

gọi là khôi ngăn xêp.

2.3.8 Tap lệnh của MIPS

Tập lệnh (Instruction Set) luôn là phần thiết yếu không thẻ thiếu của bất kì

một kiến trúc nào Một lệnh trong MIPS32 có độ dài 32 bits, còn trong MIPS64 là

64 bits Lệnh được mô tả bằng hợp ngữ

22

Trang 33

Chúng ta có một danh sách các lệnh cho kiến trúc Mips, mỗi một lệnh sẽ

được gán một mã nhị phân duy nhất, để có một danh sách các tập lệnh đầy đủ của

kiến trúc Mips, chúng ta có thể tham khảo cuốn “MIPS RISC Architecture” của tác

giả Kane va Heinrich Một máy tính sẽ có 2 lệnh cơ bản là cộng(add) va

trừ(substract) Các giá trị của các phép toán(source values) sẽ được lấy ra từ registerfile và sau khi tính toán thì kết quả sẽ được lưu lại vào register file Khi lập trình

bang hợp ngữ, chúng ta sử dung một kiểu gợi nhớ dé cho biết rằng với phép toán

nào đó thì chúng ta muốn máy tính thực hiện và chúng ta cụ thé vùng nhớ cụ thể

register file nào thì sẽ được sử dụng tên của vùng nhớ đó Chúng ta giả sử rằng mộtngười lập trình hợp ngữ muốn cộng nội dung của thanh ghi $al to nội dung của

thanh ghi $s1, va kết quả nhận được sẽ được đặt vào thanh ghi $v1, khi đó chúng ta

sẽ có lệnh của ngôn ngữ lập trình hợp ngữ đề làm việc đó như sau:

add $v1,$a1,$s1

Một lệnh giả mã tương ứng sẽ có dang: $vl = $al + $s1

Kiến trúc MIps bao gồm các lệnh bit logic như: “AND”, “OR”, và

“Exclusive-OR”, và có các lệnh đê thực hiện các câu trúc kiêm soát như:

“if then else ”

Các lệnh nhân thực hiện nhân hai gia tri 32-bits và san sinh ra một kết quả là

64-bits, kết quả này sẽ được ghi nhớ vào hai thanh ghi High và Low Đoạn mã sau

đây sẽ chỉ ra cách làm thé nào dé 32-bits thấp của $s1 có thé được di chuyền vào

Trang 34

ghi thấp( Low) và số dư của phép chia được ghi nhớ vào thanh ghi cao( High) Khối

mã sau đây sẽ chỉ ra làm thé nào thương của phép chia được di chuyên vào trong

thanh ghi $v0 và số dư của phép chia vào trong thanh ghi $v1:

31 26 25 0

31 2625 2120 1615 1110 65 0

R-Type (Register) op rs | rt rd sa - funct

Hình 2.5: Phân bồ trong thanh ghi của các lệnh

24

Trang 35

Ý nghĩa

6-bit chỉ ra mã lệnh 5-bit chỉ ra thanh ghi dich

5-bit chỉ ra thanh ghi nguôn

5-bit chỉ ra thanh ghi kêt quả

(nguén/dich) hoặc dùng dé chỉ ra các hàm trong phạm vi REGIMM của opcode

16-bit dau immediate dùng cho các toán

hạng logic, phép toán có dấu, nạp/nhớ các

byte độ lệch dữ liệu, và các dấu hiệu rẽ

nhánh - ;

26-bit chỉ sô dịch trái 2 bit để cung câp

28 bit thấp của địa chỉ đích trong lệnh

JUMP

5-bit s6 lượng bit phải dich

6-bit chỉ ra hàm trong phạm vi SPECIAL

Hình 2.6: Y nghĩa của các trường trong thanh ghi

2.3.10 Các lệnh cơ bản trong MIPS

Các lệnh nạp và ghi (Load and Store Instructions) là các lệnh di chuyên ditliệu giữ bộ nhớ và các thanh ghi chung Chúng đều là các lệnh có định dạng kiêu

immediate (I-type), do đó phương thức đánh địa chỉ duy nhất được hỗ trợ là thanh

ghi cơ sở cộng 16 bit, có bù định dang immediate có dấu.

25

Trang 36

OpCode Description

LB Load Byte

LBU Load Byte Unsigned

LH Load Halfword LHU Load Halfword Unsigned

LW Load Word

LWL Load Word Left

LWR Load Word Right

SB Store Byte

SH Store Halfword

SW Store Word SWL Store Word Left

SWR Store Word Right

Hinh 2.7: Lénh nap ghi.

Các lệnh điện toán (Computational Instructions) thực hiện các phép tính số

học, logic, dịch chuyền, nhân, va chia trên các giá tri của các thanh ghi Các lệnh

này bao gồm lệnh định dạng kiểu thanh ghi (kiều R-type, trong đó đã bao gồm đồng

thời các toán hang và kết quả được lưu trữ trong các thanh ghi) và định dang kiểu

immediate (I-type, trong đó đã bao gồm một toán hạng có là một giá trị định dạng

immediate với 16 bit).

OpCode Description ADDI Add Immediate

ADDIU Add Immediate Unsigned

SLTI Set on Less Than Immeciiate

SLTIU Set on Less Than Immediate Unsigned ANDI AND Immediate

ORI OR Immedcliate

XORI Exclusive OR Immediate

Hình 2.8: Các lệnh số học kiểu Immediate

26

Trang 37

OpCode Description

ADD Add

ADDU Add Unsigned

SUB Subtract SUBU Subtract Unsigned SLT Set on Less Than

XOR Exclusive OR NOR NOR

Hình 2.9: Các lệnh số học kiểu toán hạng

OpCode Description MULT Multiply

MULTU Multiply Unsigned

DIV Divide

DIVU Divide Unsigned

MFHI BELTE From HI

MTHI Move To HI

MFLO Move From LO

MTLO | Move To LO Ì l

Hình 2.10: Các lệnh nhân va chia.

Các lệnh nhảy và rẽ nhánh (Jump and Branch Instructions) là các lệnh thay

đôi dòng kiểm soát của một chương trình Lệnh nhảy luôn được làm đến một trang,

dạng địa chỉ tuyệt đối bởi một biên dịch địa chỉ 26-bit, với các bit cao của con trỏ

chương trình (kiểu J-type) hoặc địa chỉ thanh ghi (dạng R-type) Các lệnh rẽ nhánh

có bù 16-bit liên quan đến con trỏ chương trình (dạng I-type) Các lệnh nhảy và liên

kết được nhớ giá trị trả về của chúng trong thanh ghi 31

27

Ngày đăng: 23/10/2024, 09:17