1. Trang chủ
  2. » Tất cả

Tài liệu hướng dẫn thí nghiệm môn kiến trúc máy tính module 1 tiếp cận phần mềm biên dịch mars 4 0

49 5 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 đề Tài Liệu Hướng Dẫn Thí Nghiệm Môn Kiến Trúc Máy Tính Module 1 Tiếp Cận Phần Mềm Biên Dịch Mars 4.0
Tác giả Nhóm Biên Soạn
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Kiến Trúc Máy Tính
Thể loại Tài liệu hướng dẫn
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 49
Dung lượng 5,66 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Module 1: Tiếp cận phần mềm biên dịch MARS 4.0 1.1Cơ sở lý thuyết 1.1.1 Kiến trúc máy tính Kiến trúc máy tính là khái niệm rộng bao gồm: các thiết kế về CPU, hoạt động của các thành phần

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG

***

TÀI LIỆU HƯỚNG DẪN THÍ NGHIỆM MÔN KIẾN TRÚC MÁY TÍNH  Nhóm biên soạn:

Trang 2

Module 1: Tiếp cận phần mềm biên dịch MARS 4.0

1.1Cơ sở lý thuyết

1.1.1 Kiến trúc máy tính

Kiến trúc máy tính là khái niệm rộng bao gồm: các thiết kế về CPU, hoạt động của các thành phần máy tính như trong cpu 1 lệnh được thực hiện như thế nào, đọc ghi dữ liệu với bộ nhớ ngoài ra sao.

Kiến trúc máy tính gồm 3 nội dung chính:

 Kiến trúc tập lệnh: các tập lệnh, cách đánh địa chỉ bộ nhớ, các thanh ghi, các định dạng địa chỉ và

 Các kiến trúc phổ biến của cpu hiện tại gồm:

 Intel x86: các cpu dựa trên x86 sử dụng kiến trúc tập lệnh CISC được phổ biến rộng rãi trên các máy tính PC cho hiệu năng cao nhưng bù lại tiêu tốn nhiều năng lượng 2 nhà sản xuất duy nhất được phép chế tạo cpu x86 gồm: Intel và

 Arm: được tạo ra bởi công ty ARM kiến trúc sử dụng tập lệnh RISC với ưu điểm tiêu tốn ít năng lượng, được dùng nhiều trong các thiết bị di động và các hệ thống nhúng Khác với Intel, Arm không trực tiếp sản xuất cpu mà cấp quyền cho các nhà sản xuất khác như: ST, Samsung,

Các thanh ghi của MIPS:

nhân

$v0 - $v1 $2 - $3 Giá trị trả lại của hàm biểu thức $gp $28 Con trỏ toàn

cục

Trang 3

$a0 $4 - $7 Các tham số hàm $sp $29 Con trỏ stack  

Tương tự với phép chia.

Thanh ghi dấu phẩy động:

 MIPS sử dụng 32 thanh ghi dấu phẩy động để biểu diễn độ chính xác đơn của số thực Các thanh ghi này có tên $f0 - $f31.

 Để biểu diễn độ chính xác kép (double precision) thì MIPS sử dụng 2 thanh ghi có độ chính xác đơn.

Trang 4

 b Cấu trúc của của một chương trình hợp ngữ MIPS:

.data #khai báo biến sau chỉ thị này

.text #viết các lệnh sau chỉ thị này Main: #điểm bắt đầu của chương trình

c Cách khao báo biến:

tên_biến: kiểu_lưu_trữ giá_trị

Các kiểu lưu trữ hỗ trợ: word, byte, ascii, asciiz, sapce

Lưu ý: tên_biến (nhãn) phải theo sau bởi dấu hai chấm (:)

Ví dụ:

var1: word 3 #số nguyên 4-byte có giá trị khởi tạo là 3 var2: byte ‘a’,’b’ #mảng 2 phần tử, khởi tạo là a và b int_array: word 0:30 #mảng 30 số nguyên được khởi tạo là 0

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

Mã máy Thanh ghi

nguồn 1

Thanh ghi nguồn 1

Thanh ghi đích

Khoảng dịch

Mã máy mở  rộng Lệnh loại I

Mã máy Thanh ghi

nguồn 1

Thanh ghi nguồn 1

Toán tử trực tiếp (toán tử hẳng số) hoặc

địa chỉ offset Lệnh loại J

Trang 5

 Rd: thanh ghi đích Rs, Rt: thanh ghi nguồn

 Các lệnh in nghiêng là các lệnh giả (pseudo instructions)

Lệnh Load/Store

Đây là các lệnh duy nhất được phép truy xuất bộ nhớ RAM trong tập lệnh của MIPS

Iw Rd, RAM_src Chép 1 word (4 byte) tại vị trí trong bộ nhớ RAM vào thanh

Ib Rd, RAM_src Chép 1 byte tại vị trí trong bộ nhớ RAM vào byte thấp của

thanh ghi

sw Rs, RAM_dest Lưu 1 word trong thanh ghi vào vị trí trong của bộ nhớ RAM

sb Rs, RAM_dest Lưu 1 byte thấp trong thanh ghi vào vị trí trong bộ nhớ RAM

li Rd, value Khởi tạo thanh ghi với giá trị

la Rd, label Khởi tạo thanh ghi với địa chỉ của nhãn Nhóm lệnh số học

Cú pháp Ý nghĩa

 j label Nhảy không điều kiện đến nhãn “label”

 jal label Lưu địa chỉ trở về vào $ra và nhảy đến nhãn ‘label’ (dùng khi

label

Nhảy đến nhãn ‘label’ nếu Rs = Rt

Trang 6

bne Rs, Rt, label

Nhảy đến nhãn ‘label’ nếu Rs !=Rt

Hai thao tác cơ bản trong stack là push (đưa một phần tử vào stack) và pop (lấy một phần tử ra khỏi stack) Cơ chế như sau:

Print integer 1 $a0 = integer value to print

Print float 2 $f12 = float value to print

Print double 3 $f12 = double value to print

Print string 4 $a0 = address of null-terminated string

Read integer 5 Return integer value in $v0

Read float 6 Return float value in $f0

Read double 7 Return double value in $f0

Read string 8 $a0 = address of input buffet

$a1 = maximum number of characters to read Allocate heap memory 9 $a0 = number of bytes to allocate

return address of allocated memory in $v0

Print char 11 $a0 = characters to print

Read char 12 Return characters read in $v0

Open file 13 $a0 = address of null-terminated filename

string

$a1 = flags (0 = read-only, 1 = write=only)

$a2 = mode (ignored( Return file descriptor in

$v0 (negative if error) Read from file 14 $a0 = File descriptor  

$a1 = address of input buffet

$a2 = maximum number of characters to read Return number of characters read in $v0 Write to file 15 $a0 = File descriptor  

$a1 = address of buffet

$a2 = number of characters to write return number of characters write in $v0 Close file 16 $a0 = File descriptor  

Trang 7

  push: giảm $sp đi 4, lưu giá trị vào ô nhớ mà $sp chỉ đến

Ví dụ: push vào stack giá trị trong $t0

Trang 8

Ví dụ Syscall đọc và in số nguyên: …

.text globl main

li $v0, 5 #read integer  

move $a0, $sv0 #$a0 = value to print

li $v0, 1 syscall

1.2 Hướng dẫn sử dụng phần mềm mô phỏng Mars 4.0

1.2.1 Download và cài đặt

MARS simulator là công cụ dùng để soạn thảo và chạy mô phỏng chương trình hợp ngữ MIPS.

Để cài đặt MARS chúng ta có thể download file MARS***.jar từ link: https://bom.to/2X0ge8

MARS yêu cầu phải có java JRE 1.5 (hoặc các phiên bản sau) Link downloads JRE (Java Runtime Environment): https://bom.to/2X0ge8

1.2.2 Các thao tác căn bản với chương trình MARS

1.2.2.1 Khởi động Mars

Sau khi download và cài đặt xong JRE chúng ta khởi động MARS bằng cách click vào file MARS***.jar Khi đó MARS sẽ có giao diện như hình dưới:

1.2.2.2 Tạo mới hoặc mở file asm

 Tạo file mới bằng tổ hợp phím “Ctrl + N” hoặc bấm vào biểu tượng “new file” hoặc vào menu File -> New để tạo ra một file asm mới.

 Mở file bằng tổ hợp phím “Ctrl + O” hoặc bấm vào biểu tượng “open file” hoặc vào menu File -> Open để mở 1 file asm đã có.

 Bây giờ chúng ta có thể chỉnh sửa mã nguồn ở vùng soạn thảo (Hình 1) Nhập mã chương trình Hello-World vào vùng soạn thảo như đoạn chương trình bên dưới:

Trang 9

# text assembler directive text

# Declare main as a global function globl main

# The label 'main' represents the starting point main:

# Run the print_string syscall which has code 4

li $v0 , 4 # Code for syscall: print_string

la $a0, msg # Pointer to string (load the address of msg) syscall

li $v0,10 # Code for syscall: exit syscall

# All memory structures are placed after the

# data assembler directive data

# The asciiz assembler directive creates

# an ASCII string in memory terminated by

# the null character Note that strings are

# surrounded by double-quotes smsg: asciiz "Hello World!\n"

 Lưu lại với tên Hello-world.asm

 Biên dịch chương trình bằng cách bấm vào biểu tượng hoặc bấm F3 hoặc vào menu Run -> Assemble Sau khi biên dịch thành công, chương trình sẽ xuất hiện thông báo “Assemble: operation completed successfully” ở vùng hiển thị thông báo, đồng thời chương trình sẽ tự động chuyển sang giao diện thực thi như hình 2

Trang 10

 Thực thi chương trình bằng cách bấm vào biểu tượng hoặc bấm F5 Sau khi thành công thì chương trình sẽ xuất hiện thông báo: “Hello, World” ở vùng thông báo

Yêu cầu: sinh viên thực hiện chạy lại từng bước (step by step) chương trình Hello-World, quan sát

sự thay đổi thanh ghi Chuyển hiển dạng hiển từ số hex sang số thập phân và ngược lại

1.2.3 Chương trình kiểm tra các lệnh MIPS

Sinh viên tự viết chương trình dùng cách để kiểm tra các lệnh sau: add, sub, addu, subu, sll, srl,… Chạy từng bước (step by step) chương trình và quan sát sự thay đổi giá trị thanh ghi ở vùng hiển thị giá trị các thanh ghi.

Tham khảo đoạn chương trình:

.data

#data declaration section; specifies values to be stored

#in memory and labels whereby the values are accessed text #start of code section

main: # Execution begins at lable "main"

addi $t0, $0, 100 #$t0 = 100 addi $t1, $0, -4 #$t1 = -4 add $a0, $t1, $t0 #$a0 = $t1 + $t0

li $v0, 1 # system call code for print an integer at $a0 = 1 syscall # call oprating system to perform operation;

1.3 Yêu cầu:

A Yêu cầu tại phòng thí nghiệm

Program 1: Hãy viết chương trình MIPS thực hiện:

Trang 11

Program 3: Hãy viết chương trình MIPS cho chương trình sau:

Sử dụng hàm gọi mà không sử dụng ngăn xếp

#include <stdio.h>

int function(int a);

int main() {

 return 3*a+5;

} Program 4: Hãy viết chương trình MIPS cho chương trình sau:

Sử dụng hàm gọi mà sử dụng ngăn xếp

#include <stdio.h>

int function(int a);

int main() {

 return 3*a+5;

} Program 5: Hãy viết chương trình MIPS thực hiện:

1 Nhập 1 số N bất kỳ từ bàn phím 2.Sử dụng vòng lặp while () tính tổng của N số (sử dụng một hàm, nhưng khác với ví dụ 4)

Trang 12

Module 2 Hoạt động của bộ xử lý đơn xung nhịp

Trong bài thí nghiệm này sinh viên sẽ tìm hiểu sơ đồ khối và hoạt động của bộ xử lý đơn

xung nhịp cho kiến trúc tập lệnh MIPS.

4.1Cài đặt và làm quen với phần mềm

Tải bộ công cụ ProcSim từ địa chỉ:https://bom.to/pfEK4K

Giải nén tệp tin nhận được và chạy file ProcSim.exe Nghiên cứu hướng dẫn sử dụng bằng tiếng Anh trong tệp readme.txt hoặc hướng dẫn sử dụng bằng tiếng Việt trong tệp huongdan.pdf 

4.2Mô phỏng cấu trúc bộ xử lý đơn giản

Khi được gọi, chương trình tự động nạp tệp mô tả cấu trúc bộ xử lý “ MIPS R2000  Just R-Format.xml ” như Hình 1 và chương trình hợp ngữ “ sample just R-

 Format.asm”.

Hình 1 Cấu trúc bộ xử lý đơn giản

Thực hiện mô phỏng hoạt động của bộ xử lý đã được nạp khi nó thực hiện chương trình hợp ngữ nói trên Trả lời các câu hỏi sau:

Câu 1 Dạng nhị phân của mã máy tương ứng với lệnh trong chương trình hợp ngữ

Trang 13

nói trên là bao nhiêu?

000000 01000 10010 11001 00000 100000

Trang 14

Bài thí nghiệm Ki n trúc máy 2021

Bảng 1 Tín hiệu cho lệnh cộng 2 thanh ghi

Câu 3.Cấu trúc đang xét có thể thực hiện được 4 lệnh nào trong tập lệnh MIPS được nêu

trong bài giảng? Liệt kê các lệnh đó vào bảng sau.

Lệnh Mã hợp ngữ Toán hạng đích Toán hạng nguồn 1 Toán hạng nguồn 2

Bảng 3 Chương trinh kiểm tra các lệnh được hỗ trợ.

Câu 5 Sửa lại chương trình hợp ngữ trong câu 4, thêm vào đó 1 lệnh lw Thực hiện

chương trình mới, điều gì xảy ra? Mô tả lại các thông báo trong cửa sổ console của chương trình

Instruction not supported lw (will be continue, but not recoment)

Trang 15

Bài thí nghiệm Ki n trúc máy 2021

Page5

 Nạp tệp mô tả cấu trúc bộ xử lý “ MIPS R2000-slt beq swlw.xml ” vào cửa sổ xây dựng cấu trúc như Hình 2.

Hình 2 Cấu trúc bộ xử lý thực hiện lệnh R,I

Câu 6 Ở Hình 2, cấu trúc bộ xử lý thiếu một số đường tín hiệu giữa các khối Xác định các đường tín hiệu thiếu, liệt kê vào bảng dưới đây và bổ xung chúng vào Hình 2 Ở cửa sổ xây dựng cấu trúc, lựa chọn các đường tín hiệu còn thiếu và kết nối khối đầu ra với khối đầu vào  bằng các đường tín hiệu đó.

Trang 16

Bài thí nghiệm Ki n trúc máy 2021

Page6

Bảng 4 Một số đường tín hiệu trong bộ xử lý

Câu 7.Quay trở về cửa sổ chính của chương trình, nạp tệp chương trình hợp ngữ

“ sample.asm” Mô phỏng hoạt động của bộ xử lý được bổ xung trong Câu 6 khi nó thực hiện chương trình hợp ngữ trên Ở lần vòng lặp thứ 2, khi bộ xử lý thực hiện các lệnh, xác định giá trị các đường tín hiệu và điền vào bảng dưới đây.

Trang 17

Bài thí nghiệm Ki n trúc máy 2021

 sw $s3, 0($s0) # store number at new address

 lw $s1, 0($s0) # t1 = A[i]

 add $t0, $t0, $t1 # sum  add $s0, $s0, $s1 #incremnet address  bed $s3, $s4, exit # check

 bed $zero, $zero, main #start again exit:

Trang 18

Bài thí nghiệm Ki n trúc máy 2021

Trang 19

Bài thí nghiệm Ki n trúc máy 2021

Page9

Câu 12 Sửa đổi chương trình hợp ngữ “ sample.asm” để sử dụng lệnh j cho lệnh beq nếu được Thực hiện mô phỏng chương trình đó.

#Main loopMain:

add $s3, $s3,$s2

sw $3,0($0)

lw $t1,0($s0)add $to,$to,,$t1add $so,$so,$s1 beq $s3,$s4,exit

 j Main:

exit:

Trong phần này sinh viên lập trình bằng ngôn ngữ VHDL để thực hiện các khối chức năng thể hiện trên sơ đồ khối của bộ xử lý ở các phần trên.

Bước 1 Tải và cài đặt phần mềm mô phỏng Modelsim của Mentor Graphics từ trang web [2]

Bước 2 Tải và giải nén phần khung (eng framework ) của chương trình mô tả bộ xử lý bằng VHDL từtrang web của lớp học https://sites.google.com/site/fethutca/my-forms/mips- vhdl.zip?attredirects=0&d=1

Phần khung chương trình bao gồm:

• Khai báo các khối (entity)

• Kết nối các khối bằng các đường tín hiệu như thể hiện trên sơ đồ khối

• Kiến trúc các khối được để trống (architecture)

Trang 20

Module 3 Hoạt động của kỹ thuật đường ống( Bài thí nghiệm này được biên soạn dựa trên các bài thí nghiệm của Jan Eric Larsson, Mats

 Brorsson và Tobias Harms [4])

4 Thực hiện

Tải bộ công cụ MIPSIT từ địa chỉ: https://sites.google.com/site/fethutca/my- forms/MipsICT.zip?attredirects=0&d=1

Giải nén tệp “ MipsICT.zip” và chạy tệp nhận được “ MipsICT.exe” để chương trình tự giải nén vào thứmục: “C:\MipsIT ” Nghiên cứu bài báo giới thiệu về phần mềm *2+

Trong bộ chương trình MIPSIT, ta sẽ sử dụng 2 chương trình MIPSITStudio và mipspipe2000:

5 MIPSITStudio là môi trường lập trình và biên dịch phần mềm cho bộ xử l, MIPS Chương trình cho phép người dùng lập trình bằng ngôn ngữ C/Assembly và biên dịch thành mã máy để nạp vào bộ pháttriển MIPS hoặc để mô phỏng bộ xử lý Gọi MIPSITStudio bằng cách chạy tệp “ C:\MipsIT\bin\ MipsIt.exe” (Hình 1) Chú ý, khi gọi MIPSITStudio, thông báo lỗi “Failed to open com port” có thể bỏqua bằng việc bấm nút “OK”

Trước khi thực hiện việc xây dựng chương trình, cần kiểm tra đường dẫn đến trình biên dịch và đườngdẫn đến các tệp thư viện và tệp include h (Hình 2)

Trang 21

Hình 1 Môi trường lập trình cho bộ xử lý MIPS

Hình 2 Xác định đường dẫn trình biên dịch, đường dẫn thư viện và tệp include.

Trang 22

2.mipspipe2000 là chương trình mô phỏng hoạt động đường dữ liệu (eng datapath) của bộ xử lý

MIPS sử dụng kỹ thuật đường ống Gọi chương trình bằng cách chạy tệp

“C:\MipsIT\bin\mipspipe2000.exe” (Hình 3)

Hình 3 Chương trình mô phỏng đường ống bộ xử lý MIPS

4.2.1 Bước 1 Chuẩn bị chương trình hợp ngữ

Tạo một đề án hợp ngữ (eng assemble project ) trong môi trường MIPSITStudio (Hình 4) Đặt tên đề

án này là Bai2-1 Chọn thư mục để lưu là “C:\MipsIt\Projects\Bai2-1” Tạo một tệp chương trình hợpngữ với tên “bai2-1.s” (Hình 5)

Hình 4 Tạo một project mới trong môi trường MIPSITStudio

Trang 23

Bài thí nghiệm Ki n trúc máy 2021

Page12

Hình 5 Tạo thêm một tệp chương trình hợp ngữ trong đề án.

 Soạn thảo đoạn mã hợp ngữ vào tệp chương trình như Hình 6 Biên dịch đề án bằng cách lựa chọnmenu “ Build -> Build Bai2-1” hoặc phím F7 Tệp kết quả biên dịch dưới dạng mã nhị phân là “C:\  MipsIT\Projects\Bai2-1\Objects\Bai2-1.out ” Tệp này sẽ được dùng làm tệp đầu vào cho chương trình mô phỏng

Hình 6 Chương trình bai2-1.s

4.2.2 Bước 2 Mô phỏng

Mô phỏng bộ xử l, MIPS đường ống Chạy phần mềm mô phỏng “C:\MipsIT\bin\mipspipe2000.exe”

1.  Nạp tệp mô tả cấu trúc đường dữ liệu của bộ xử lý MIPS bằng menu “ File->Load Pipeline…” và lựa chọn tệp “C:\MipsIT\S-script\s.dit ” (Hình 7)

Trang 24

Bài thí nghiệm Ki n trúc máy 2021

Page13

Hình 7 Nạp tệp mô tả cấu trúc bộ xử lý.

[1] Nạp chương trình đã được biên dịch ở Bước 2 bằng menu “File->Open” và lựa chọn tệp

“C:\MipsIT\Projects\Bai2-1\Objects\Bai2-1.out ” Hiện thị cửa sổ thanh ghi và cửa sổ nộidung bộ nhớ bằng menu “View->Registers” và “ Menu->Memory” Nội dung các thanh ghi cóthể được thay đổi trực tiếp trên cửa sổ thanh ghi (Hình 8)

Hình 8 Thực hiện mô tả cấu trúc bộ xử lý MIPS đường ống.

c Mô phỏng từng bước hoạt động của bộ xử lý khi nó thực hiện chương trình đã nạp (Sử dụng phím Step trên thanh công cụ) Trả lời các câu hỏi dưới đây Chú , mỗi bước mô phỏngtương ứng với 1 chu kỳ đồng hồ

Ngày đăng: 16/03/2023, 20:53

🧩 Sản phẩm bạn có thể quan tâm

w