Tiểu luận Tìm hiểu phần mềm mô phỏng PCSPIM

doc 15 trang phuongnguyen 2410
Bạn đang xem tài liệu "Tiểu luận Tìm hiểu phần mềm mô phỏng PCSPIM", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • doctieu_luan_tim_hieu_phan_mem_mo_phong_pcspim.doc

Nội dung text: Tiểu luận Tìm hiểu phần mềm mô phỏng PCSPIM

  1. CÔ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
  2. 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 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
  3. MỤC LỤC Lờ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
  4. Giớ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)
  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
  6. 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 Cử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.
  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.
  8. Cấ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
  9. Có 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 : l­u tr÷ string trong bé nhí, kh«ng cã gi¸ trÞ tr¶ vÒ rçng. .asciiz str : l­u tr÷ string trong bé nhí, gi¸ trÞ tr¶ vÒ b»ng rçng. .byte b1, ,bn : l­u tr÷ n gi¸ trÞ byte liªn tiÕp trong bé nhí. .data : theo d÷ liÖu nªn ®­îc l­u tr÷ trong ®o¹n d÷ liÖu. NÕu kh«ng b¾t buéc, items cã thÓ l­u tr÷ b¾t ®Çu b»ng ®Þa chØ addr. .double d1, ,dn: L­u 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 l­u 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 ®Ó l­u 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 : l­u 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 : l­u tr÷ n -16 bit sè l­îng tuÇn tù trong bé nhí. .kdata : dßng d÷ liÖu nªn ®­îc l­u tr÷ trong nh©n ®o¹n d÷ liÖu. NÕu addr kh«ng b¾t buéc, items ®­îc l­u tr÷ b¾t ®Çu b»ng ®Þa chØ addr
  10. .ktext : 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Ó l­u 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 : 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 :l­u 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
  11. print_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: Add addu div multu Addi sub divu mfhi Addiu subu mult mflo 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ớ :
  12. Lb 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: J bne slti Beq bltz sltu Bgez slt sltiu 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: 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 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.
  13. Ch­¬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
  14. move $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
  15. Kế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: Ngoài ra các bạn có thể download tài liệu về Mips tại: