LỜI MỞ ĐẦU Ngày nay con người của chúng ta đang sống với sự phát triển mạnh mẽ của khoa học và công nghệ, kèm theo với sự ra đời của máy tính, ngành công nghệ thông tin đã ra đời giúp c
Trang 1CÔNGTHƯƠNG TẬP ĐOÀN DỆT MAY VIỆT NAM TRƯỜNG CAO ĐẲNG KINH TẾ-KỸ THUẬT VINATEX
KHOA CÔNG NGHỆ THÔNG TIN
KIẾN TRÚC MÁY TÍNH
ĐỀ TÀI: TÌM HIỂU PHẦN MỀM MÔ PHỎNG PCSPIM
GVHD:
NHÓM THỰC HIỆN:
TP.HỒ CHÍ MINH 06/2011
Trang 2LỜI MỞ ĐẦU
Ngày nay con người của chúng ta đang sống với sự phát triển mạnh mẽ của khoa học và công nghệ, kèm theo với sự ra đời của máy tính, ngành công nghệ thông tin đã ra đời giúp cho con người tổ chức khai thác và sử dụng có hiệu quả các nguồn tài nguyên thông tin cũng như mọi tiềm năng trong tất cả các hoạt động của chúng ta.Bộ môn học kiến trúc máy tính là một ứng dụng của công nghệ thông tin
nó đã giúp chúng ta hiểu rõ hơn về lịch sử phát triển của máy tính các biến đổi cơ bản của hệ thống số, các bảng mã thông dụng , tập lệnh, các tác vụ mà máy tính có thể thực hiện…Để hổ trợ cho việc học tập cũng như nghiên cứu, phần mềm PCSpim
đã ra đời Đây là một phần mềm mô phỏng giúp cho người học dễ dàng thực hiện các thao tát trên nó dể dàng hơn so với máy tính thật nhất là việc nghiên cứu và phát triển các bộ vi xử lý Nhằm giúp các bạn hiểu rõ hơn phần nào về hoạt động cũng như cấu trúc phần mềm này chúng em chọn nghiên cứu đề tài :”Tìm hiểu phần mềm
mô phỏng PCSPIM” cho bài tiểu luận của mình Vì lý do thời gian cũng như kiến thức có hạn nên bài tiểu luận còn nhiều thiếu sót, rất mong nhận được ý kiến đóng góp của quý thầy cô cũng như các bạn
Trang 3Lời mở đầu
Nội dung
Tổng quan về phần mềm mô phỏng PC SPIM
Đặc điểm Spim
Giao diện PCSpim
Các thao tác với PCSpim
Cấu trúc chương trình PCSpim
Cú pháp hợp ngữ assembler
System calls
Các lệnh và chương trình trong PCSPIM
Chương trình minh họa
MỤC LỤC
Trang 4Giới thiệu chung về PCSpim(MIPS)
PCSPIM là phần mềm mô phỏng có thể chạy chương trình cho MIPS R2000/R3000RISC computer (MIPS là viết tắt của Microprocessor without Interlocked Pipeline Stages, là kiến trúc bộ tập lệnh RISC phát triển bới MIPS Technologies) do giáo
sư James Laurus khoa Khoa học máy tính, trường đại học University of Wisconsin-Madison thực hiện SPIM có thể đọc và thực hiện các file chứa ngôn ngữ assembly SPIM là bản chất chứa trong hệ thống để chạy các chương trình chứa gỡ rối và giao diện
để phục vụ hệ điều hành
Sự phát triển của môi trường SPIM được sử dụng phát triển phần mềm cho các nền tảng phần cứng cũng như cho các mô phỏng khác nhau.Phần mềm mô phỏng có thể cung cấp môi trường lập trình làm việc tốt hơn máy thực tế Ví dụ SPIM có giao diện window tốt có thể sửa được hầu hết các lổi máy tính thực tế SPIM là công cụ hữu hiệu cho việc học phần cứng máy tính và chương trình có thể chạy trên nó vì nó thực hiện bằng phần mềm, có thể dễ dàng chỉnh sửa, thêm câu lệnh mới, xây dựng hệ thống mới như bộ đa xử
lý, hoặc chọn dữ liệu đơn giản
Sự mô phỏng máy ảo của MIPS: với tập lệnh MIPS hầu hết các máy tính RISC khó có thể lập trình trực tiếp.Sự khó khăn có thể được giải quyết từ khi những máy tính được thiết kế để lập trình bằng ngôn ngữ bậc cao và giao diện thiết kế cho trình biên dịch, không phải người lập trình.Hơn thế nữa nó vẫn giống với phần cứng hiện tại
Spim có nhiều phiên bản khác nhau hoạt động trên nhiều nền tảng hÖ ®iÒu hµnh:
Unix, Linux và Mac OS X có 2 phiên bản:
Spim: thao tác trên giao diện terminal đơn giản
Xspim: thao tác trên cửa sổ đồ họa
Microsoft Windows có 2 phiên bản:
Spim: thao tác trên giao diện terminal đơn giản
PCSpim: thao tác trên cửa sổ đồ họa của Windows
(PCSpim 7.2.1 - Windows XP)
Trang 5Đặc điểm của Spim:
Cho phép đọc và thực thi các mã chương trình viết bằng ngôn ngữ Assembly cho các bộ xử lý MIPS32
Cung cấp trình gỡ lỗi
Cung cấp 1 tập các dịch vụ tối thiểu của 1 hệ điều hành (system call)
Hỗ trợ tốt cho nghiên cứu hoạt động mô phỏng 1 bộ VXL
Được sử dụng làm thực hành cho môn KTMT ở rất nhiều trường đại học trên thế giới
Giao diện phần mềm PCSpim
Bao gồm cửa sổ chính và cửa sổ console
Cửa sổ chính bao gồm:
• Phần trên cùng hiển thị nội dung của 32 thanh ghi của CPU và FPU Nội dung sẽ tự động cập nhật khi chương trình hợp ngữ chạy
• Phần dưới kế tiếp hiển thị mã của chương trình ở dạng hợp ngữ, dạng mã máy (số hex cột thứ 2 từ trái qua), và địa chỉ tương ứng của mỗi lệnh (cột đầu tiên bên trái)
• Phần dưới kế tiếp hiển thị dữ liệu khai báo trong chương trình hợp ngữ (ví dụ:
mảng hay chuỗi) và dữ liệu trong vùng ngăn xếp khi chương trình hợp ngữ được
thực thi
• Phần dưới cùng hiển thị các thông tin phụ của SPIM, thông tin về lỗi nếu có
Chương trình hợp ngữ muốn chạy được phải được load trước Đế load chương trình hợp ngữ (ở dạng một file có đuôi mở rộng là *.asm hay *.s), thực hiện thao tác File menu -> Open -> chọn file chứa chương trình cần load Để tạo file *.asm, chúng ta có thể dùng các chương trình soạn thảo thô như Notepad, Notepad++, EditPlus…
Trang 6Cửa sổ Console đầu hiển thị ra của bộ xử lý
Sau khi chương trình hợp ngữ đã được load, chúng ta có thể thực hiện chạy chương trình
và quan sát sự thay đối giá trị các thanh ghi, các ô nhớ, vị trí và lệnh đang được thực thi
… Các tác vụ chạy chương trình ở trong Simulator menu Các bước để chạy và quan sát quá trình chạy của chương trình hợp ngữ trên PCSpim:Chọn Simulator -> Breakpoints… (hoặc nhấn
Ctrl+B) Cửa sổ hiện ra điền vào textbox Address giá trị 0x00400000, chọn Add
Vùng thanh ghi trong CPU và FDU
Lệnh: đ/c + mã lệnh + lệnh gợi nhớ
Bộ nhớ chương trình + Stack Thông báo của PCSpim
Trang 7•Chọn Simulator -> Go (hoặc nhấn F5) Điền giá trị 0x00400000 vào texbox Starting Address,
chọn OK Giá trị của thanh ghi PC lúc này là
0x00400000
•Chọn Simulator -> Single Step (hoặc nhấn
F10) để chạy từng dòng lện trong chương trình
Chúng ta có thể quan sát kết quả thực hiện
thông qua giá trị của các thanh ghi, các ô nhớ
liên quan
Cách khác để chạy chương trình nguồn:
Simularor -> SetValue…, cửa sổ hiện ra, điền
vào textbox Register Name giá trị PC, điền vào
textbox Value giá trị 0x00400000 Sau đó nhấn F10 để chạy từng bước hay F5 để chạy cho đến khi gặp breakpoints
Các thao tác với PCSpim
• Load mã assembly (*.s)
• Mô phỏng hoạt động
• Chế độ debug
Chạy từng lệnh
Chạy N lệnh
Chạy chương trình
• Breakpoint
• Cho phép xem giá trị các thanh ghi
Trang 8Cấu trúc chương trình PCSpim
File mã nguồn assembly là các file text có chứa phần khai báo dữ liệu và mã chương trình
Các khai báo dữ liệu:
Được đặt trong phần chương trình với khai báo data
Dùng để khai báo tên các biến sử dụng trong chương trình
Mã chương trình
Được đặt trong phần chương trình với khai báo text
Chứa mã lệnh của chương trình
Điểm bắt đầu đặt tại nhãn main:
Điểm kết thúc nằm sau lời gọi hệ thống để thoát
Chú thích
Trong 1 dòng, mọi ký hiệu đặt sau dấu # đều được coi là chú thích và được bỏ qua khi dịch mã nguồn
.data
(Khai báo hằng và biến.)
text # Main (must be global)
globl main
main: (Bắt đầu chương trình.)
li $v0, 10 # Syscall to exit
syscall
Trang 9Cú pháp chơng trình hợp ngữ assembler
Chú thích trong ngôn ngữ assembler bắt đầu bằng kí hiệu # Mọi kí hiệu sau dấu #
đợc bỏ qua trong chơng trình dịch
Xác định kí tự gồm cả chữ và số một cách tuần tự, dấu gạch chân ( _ ), dấu chấm (.) mà không bắt đầu bằng chữ số
Ký tự đợc đóng mở bằng dấu ngoặc kép (“) Kí tự đặc biệt giống nh quy ớc trong C:
Newline \n Tab \t Quote \”
Spim tích hợp tập nhỏ của hớng dẫn assembler cung cấp bởi MIPS assembler:
.align n : sắp thẳng hàng số lợng đã cho giới hạn ranh giới 2n byte
.ascii str : lu trữ string trong bộ nhớ, không có giá trị trả về rỗng
.asciiz str : lu trữ string trong bộ nhớ, giá trị trả về bằng rỗng
.byte b1,…,bn : lu trữ n giá trị byte liên tiếp trong bộ nhớ
.data <addr> : theo dữ liệu nên đợc lu trữ trong đoạn dữ liệu Nếu không bắt buộc, items
có thể lu trữ bắt đầu bằng địa chỉ addr
.double d1,…,dn: Lu trữ n số thực dấu chấm động chính xác double tuần tự trong bộ nhớ .extern sym size : trình bày số lợng đã cho đợc lu trữ trong sym là kích cõ byte lớn và là
kí hiệu toàn cục Câu lệnh này cho phép assembler để lu trữ số lợng đã cho trên đoạn dữ liệu phân chia có hiệu quả khi truy nhập vào thanh ghi $gp
.float f1,…,fn : lu trữ số thực với độ chính xác đơn tuần tự trong bộ nhớ
.globl sym : trình bày kí tự sym là toàn cục và có thể đợc tham chiếu từ file khác
.half h1,…,hn : lu trữ n -16 bit số lợng tuần tự trong bộ nhớ
.kdata <addr> : dòng dữ liệu nên đợc lu trữ trong nhân đoạn dữ liệu Nếu addr không bắt buộc, items đợc lu trữ bắt đầu bằng địa chỉ addr
Trang 10.ktext <addr> : item tiếp theo đợc đặt vào trong nhân của đoạn văn bản Trong SPIM, những iems này có thể chỉ là câu lệnh hoặc các từ ( nh word đợc chỉ huy ở vị trí thâp hơn) Nếu không bắt buộc, items có thể lu trữ bắt đầu bằng địa chỉ addr
.space n : phân phối n byte không gian trong đoạn hiện hành
.text <addr> : items tiêp theo đợc đặt vào trong đoạn văn bản của ngời sử dụng
.word w1,…,wn :lu trữ n 32 bít số lợng tuần tự trong bộ nhớ
System calls:
SPIM cung cấp tập lệnh phục vụ hệ điều hành gọi là lệnh system call (syscall) Để yêu cầu phục vụ, chơng trình load mã gọi hệ thống vào trong tranh ghi $v0 và các đối số vào thanh ghi $a0….$a3 (hoặc là $f12 cho giá trị số thực dấu chấm động Lời gọi hệ thống (system calls) trả lại giá trị đặt kết quả vào thanh ghi $v0 (hoặc $f0 để cho kết quả
số thực dấu chấm động) Ví dụ, in “the answer = 5”, sử dụng lệnh:
.data
Str: asciiz “the answer = “
.text
li $v0, 4 #system call code for print_str
la $a0, str #address of string to print
syscall#print the string
li $v0, 1 #system call code for print_int
li $a0, 5 #interger to print
syscall #print it
print_int : đa số nguyên qua và in nó trên cửa sổ console
print_float : in số thực dấu chấm đơn
Trang 11print_double : in số loại double.
print_string : lệnh qua con trỏ để trả về giá trị null, nó đợc viết trên cửa sổ console
read_int,read_float, và read_double đọc toàn bộ dòng vào bao gồm cả dòng mới.read_string : có nhiều sematics nh trong th viện thờng lệ của Unix fgets
Cỏc bộ tập lệnh và chương trỡnh trong PCSPIM
1.Cỏc tập lệnh luận lý:
And ori nor
Andi xor sll
Or xori srl
Thiết lập cỏc tham số trong menu Simulator -> Settings:
Bare Machine ON, Allow Pseudo Instructions OFF, Load Trap File OFF, Delayed
Branches ON, Delayed Loads ON, Mapped IO OFF, Quiet OFF
2.Cỏc lệnh số học:
Thiết lập cỏc tham số trong menu Simulator -> Settings:
Bare Machine ON, Allow Pseudo Instructions OFF, Load Trap File OFF, Delayed
Branches ON, Delayed Loads ON, Mapped IO OFF, Quiet OFF
Cỏc lệnh thao tỏc bộ nhớ :
Add addu div multu
Addi sub divu mfhi
Addiu subu mult mflo
Trang 12Lb lui sb
Lbu lw sh
Lh lhu sw
Thiết lập các tham số trong menu Simulator -> Settings:
Bare Machine ON, Allow Pseudo Instructions OFF, Load Trap File OFF, Delayed,Branches ON, Delayed Loads ON, Mapped IO OFF, Quiet OFF
3.Các lệnh nhảy:
Thiết lập các tham số trong menu Simulator -> Settings:
Bare Machine ON, Allow Pseudo Instructions OFF, Load Trap File OFF, Delayed
Branches ON, Delayed Loads ON, Mapped IO OFF, Quiet OFF
4.Các lệnh xử lý chuổi, mảng:
Thiết lập các tham số trong menu Simulator -> Settings:
Bare Machine ON, Allow Pseudo Instructions OFF, Load Trap File OFF, Delayed
Branches ON, Delayed Loads ON, Mapped IO OFF, Quiet OFF
5.Ngoài ra còn có các tập lệnh và chương trình như:lệnh mã giả mở rộng, các chương trình xử lý xuất nhập, dùng stack tính toán biểu thức, gọi hàm đơn giản, gọi hàm dùng stack, quản lý biến cục bộ và gọi hàm sử dụng stack pointer và frame pointe.
J bne slti
Beq bltz sltu
Bgez slt sltiu
Add div mflo slt,slti
Addi divu mult sltu,sltiu
Addiu j multu sra
Addu lb nor srl
And lbu or sub
Andi lh ori subu
Beg lhu sb sw
Bgez lui sh xor
Bltz lw sll xori
Bne mfhi
Trang 13Ch¬ng tr×nh nguån minh häa:
.data
szChao: asciiz "Xin chao cac ban\n"
szYeucaunhap: asciiz "Moi ban nhap vao so nguyen (Enter de ket thuc):" szKetqua: asciiz "Ket qua phep cong:"
szCRLF: asciiz "\n"
.text
.globl main
main:
# Buoc 1: Dua thong bao xin chao
li $v0,4
la $a0,szChao
syscall
Lap:
# Thong bao nhap 1 so
li $v0,4
la $a0,szYeucaunhap
syscall
# Doc gia tri, cat vao thanh ghi $s0
li $v0,5
syscall
Trang 14move $s0,$v0
# Tinh nhan doi
addu $a0,$s0,$s0
# Dua ra man hinh
li $v0,1
syscall
li $v0,4
la $a0,szCR
syscall
li $v0,11
li $a0,97
syscall
jal Lap
li $v0, 10 # Syscall to exit syscall
Trang 15Kết luận
PCSpim là một trong số những phần mềm mô phỏng các bộ xử lý được sử dụng rộng rãi nhất tại các trường trên thế giới Ưu điểm lớn nhất của phần mềm này là sự đơn giản trong cách thực hiện rất phù hợp cho mục đích học tập và nghiên cứu
Hiện nay trên thế giới có rất nhiều khóa học sử dụng phần mềm này để bổ trợ cho quá trình học tập Một số môn học sử dụng hai phầm mềm này là kiến trúc máy tính, ngôn ngữ Assembly, các hệ thống vi xử lý
Việc ứng dụng và khai thác hai phần mềm này sẽ bổ trợ cho các môn học về máy tính, nhằm nâng cao kiến thức cũng như kinh nghiệm của người học
Các bạn có thể download chương trình tại:
http://www.cs.wisc.edu/~larus/SPIM/pcspim.zip
Ngoài ra các bạn có thể download tài liệu về Mips tại:
http://www.mediafire.com/?sodotdmlcny