Tuesday 8 January 2013

MIPS Simulator - The Computer Organization And Microprocessor Operation


The Organization Of A Computer


System Bus : Mengawal input, output, memory, datapath (ALU) dan merupakan satu saluran komunikasi bagi kebanyakan komponen komputer.

- Datapath (ALU) : Melaksanakan operasi aritmetik.

Control :  ▪ Merupakan salah satu komponen di dalam processor.
                   ▪ Menghantar isyarat untuk menentukan operasi datapath (ALU), memory, input dan output.

- Memory : ▪ Tempat program disimpan apabila program dijalankan.
                   ▪ Menyimpan data yang diperlukan apabila program dijalankan.

- Input : Alat yang memasukkan data ke dalam memory.

- Output : Alat yang membaca data dari memory dan menyampaikan keputusan pengiraan.


Microprocessor Operations


- 3 langkah asas untuk melaksanakan suatu machine instruction.

- Proses menyempurnakan ketiga-tiga langkah ini dipanggil 'machine cycle'. 

- Langkah-langkah :

 Ⅰ.  Program counter membekalkan instruction address kepada instruction memory.

 Ⅱ. Register operands yang digunakan oleh suatu arahan ditentukan dengan bidang arahan tersebut.

Ⅲ. Operasi yang dinyatakan dalam machine instruction dijalankan.




 KANG YI SHIN
B031210356

MIPS Simulator - Fundamentals Of Emulation


Qtspim 

SPIM adalah simulator layan-diri yang berjalan MIPS32 programIa membaca dan melaksanakan program bahasa himpunan yang ditulis untuk pemproses iniSPIM juga menyediakan penyahpepijat mudah dan set minimum perkhidmatan sistem operasiSPIM tidak melaksanakan binari (disusun) program.

SPIM melaksanakan hampir keseluruhan MIPS32 dilanjutkan penghimpun set arahan(Ia meninggalkan perbandingan titik paling terapung dan mod pembundaran dan jadual memori halaman sistem.) Seni bina PowerPC mempunyai beberapa varian yang berbeza dalam pelbagai cara (contohnya, seni bina MIPS64 menyokong integer 64-bit dan alamat), yang bermaksud bahawa SPIM tidak akan menjalankan program-program untuk semua pemproses PowerPC.

Laman utama Qtspim

Dari laman utama ini, kami terdapat beberapa perkara yang perlu tahu
1.Register display : Register display ini senarai 32 tujuan registers untuk kami dapat pilih tukar display dalam      
   hex,binary atau decimal dengan menggunakan klik kanan mouse pada paparan daftar.

2.Data display : Mengandungi User Data Segment, User Stack dan Kernel Data Segment. Data display menunjukkan MIPS memory menyimpankan data program.

3.Text display : Baris pertama adalah alamat lokasi ingatan suruhan mesin yang dipaparkan dalam perenambelasan pada baris kedua. Baris ketiga adalah kod pemasangan untuk mewakili arahan mesin.

4.Spim messages : Imenunjukkan mesej dari simulator sama ada kod pemasangan mempunyai kesilapan (s) atau tidak.

Contoh menulis assembly program
1.Menulis assembly program dengan menggunakan note pad.
2.Contoh seperti bawa :

Soalan : Here is a sample program that demonstrates subtract operation; 100-50; in 2's complement negative. This program adds +100 to -50, leaving the result in $t3.

Dalam note pad tersebut juga terangkan macam mana menulis assembly dan alasannya.

3.Lepas menulis,sila menyimpan note pad ini. File ini perlu disimpan dengan menggunakan nama seperti (xxx.asm)

contoh asm file dan note pad file
4.Buka Qtspim, klik File -> Load file -> (Pilih asm file yang tadi simpan )
sebelum load asm file

selepas load asm file, data akan memasukkan 

5.Tekan F10 untuk menjalankan data yang baru masuk dari file asm tadi.

User akan nampak Int Regs [16] juga mendapat perbezaan jika terus menekan F10 sampai baris akhir.
Sebelum
Selepas

Jawapan 100-50=50, $t3=50


  
YU HONG SHENG
B031210099







MIPS Simulator - Memory Allocation,Data Aligment,Registers


Memory Allocation

=>Peruntukan Ingatan


Segmen Aturcara dibahagi kepada 3 iaitu :

1.  Segmen Kod
     =>Menyimpan kod bahasa mesin bagi arahan
          dalam sumber fail.

2.  Segmen Data
      Statik data      =>Saiz tidak berubah semasa program
                                         acess.
      Dinamik data =>Data boleh doperuntukkan.

3.Segmen Tindanan (stack)
   =>Cara perlaksanaan tindanan amat penting untuk
        memahami perlaksanaan mikropemproses.
        Tanpa tindanan,rutin (routine) dan fungsi
        tidak dapat di cipta.


Kegunaan segmen adalah untuk mencapai lebih daripada
64K RAM . Cara menyatakan tempat data adalah melalui
gabungan segmen dan ofset penunding.Ia dikenali
sebagai alamat logik (logical address)


Ini adalah jadual susun atur memori


















Data Alignment

=> Penjajaran Data


Jadual dibawah menunjukkan MIPS Data Saiz
























Jadual dibawah adalah MIPS Penjajaran data















Registers

=> Memori yang berkelajuan tinggi yang terletak di dalam
      CPU dan berfungsi untuk menyimpan data sementara.

=> ALU menggunakan register untuk menyimpan data
      yang sedang diproses
































 CHUAH YIN BOON
B031210335

MIPS Simulator - MIPS System Call

Program MIPS boleh menjadikan panggilan sistem dengan menggantikan parameter dalam daftaran yang ditetapkan, bergantung kepada panggilan, dan melaksanakan arahan perangkap. Kembali kepada  keputusan dibuat didapati dalam daftar dinyatakan lain, juga bergantung kepada panggilan.
Gambar rajah:


Dalam SPIM “exception handle” digunakan dengan cara berikut:
li $v0, code   # Load $v0 with the "system call code"
                          # number of an OS service
.........             # Put parameters for the service in
.........             # registers $a0, $a1
Syscall           # Invoke the operating system
                        # Return value (if any) is in $v0 or $f0

MIPS Assembly Languages Program Format

MIPS program penghimpun adalah fail teks biasa yang terdiri daripada dua jenis kenyataan:
·         Menghimpun arahan yang memberitahu penghimpun bagaimana untuk menterjemahkan program tetapi tidak boleh diterjemahkan kepada kod mesin.
·         Arahan dilaksanakan, dimana pelaksanaan akan diterjemahkan kepada kod mesin. Kadang-kadang boleh dirujuk sebagai kod program.

Bahagian label satu kenyataan mesti bermula dalam lajur 1 dan mesti berakhir dengan ":". ":" Tidak dijadikan sebahagian daripada label. Ia hanya berfungsi untuk visual membezakan definisi label baru dari unsur-unsur program lain.
Setiap label mewakili alamat ingatan dalam bahasa himpunan. Ia boleh menjadi alamat data atau adddress arahan (iaitu label boleh muncul dalam kedua-dua teks dan data.
Label mewakili alamat elemen arahan atau data yang segera berikut, sama ada ia mengikut baris yang sama atau garis berikutnya.
Contoh:

main : sll $0,$0,0
sll $0,$0,0
sll $0,$0,0
sll $0,$0,0
j main # jump to the point labeled main
addiu $8,$8,1


Opcode (Operational Code)
Opcode adalah sebahagian daripada arahan bahasa mesin yang menentukan operasi yang perlu dilakukan. Spesifikasi mereka dan format dibentangkan dalam seni bina set arahan pemproses.
Opcode adalah bidang yang ditandakan operasi asas dan format arahan. Bahasa Mnemonik biasanya adalah kod perenambelasan digunakan bagi maksud kesederhanaan dan pembacaan.
Operand
Kendalian mungkin mengandungi daftar, jumlah anjakan, label untuk memasuki ke dalam dan berterusan atau alamat.
*Nyatakan data yang diperlukan oleh operasi
* Operan boleh daftar, pembolehubah ingatan, atau pemalar
* Kebanyakan arahan mempunyai tiga operand
Contoh:
addiu $t0,$t0,1 # increment $t0


LIM ZERKIE
B031210127

MIPS Simulator - Data Representation



MIPS –DATA REPRESENTATION

Character Representation

Terdapat 8 bit dalam 1 bait dan 1 character diwakili dengan 1 bait. Kebanyakan computer yang menawarkan 8 bit mengikut ASCII.


Seksyen Assembly Language Program

            .asciiz                  “XYZ  xyz”

Corak bit yang dihasilkan oleh Penghimpun dalam modul objek:

            58 59 5A 20 78 79 7A 00

Number Representation

 Dua cara untuk memuatkan sesuatu nombor dalam register:

(1)  Ori $5, $0, 2 #memuatkan nomber 2 dalam register $5
(2)  Ori $5, $0, 0x10 #memuatkan nomber 2 dalam register $5

Goh Pei Ing
B031210215

Computer Languange - Translation And Startup






Assembler Pseudinstructions
Pseudoinstructions: figments of the assembler’s imagination

Ini adalah mudah arahan dalam bahasa himpunan yang melakukan tidak mempunyai bahasa
Mesin bersamaan langsung. Semasa pemasangan, penghimpun menterjemahkan psedudoinstruction setiap ke satu atau lebih bahasa mesin
arahan.


Translating Pseudoinstructions

Small ertinya kuantiti yang boleh diwakili menggunakan 16 bit, dan big ertinya 32 bit. Upper ( big ) is the upper 16 bits of a 32 bit quantity. Penghimpun mesti memikirkan bagaimana untuk mendapatkan the upper 16 bits of a 32-bit value. Lower  ( big ) is the lower 16 bits of the 32 bit quantity. Penghimpun mesti memikirkan lagiUpper ( big ) and lower ( big ) tidak arahan sebenar.

Producing an object module
  • Assembler ( or compiler ) menterjemahkan program kepada arahan mesin.
  • Menyediakan maklumat untuk membina satu program yang lengkap
  • Header : menerang kandungan modul objek
  • Text segment : meneerjemahkan arahan
  • Static data segment : data yang diperuntukkan bagi kehidupan program
  • Relocation info : untuk kandungan yang bergantung kepada lokasi mutlak program dimuatkan
  • Symbol table : definisi global dan Rujukan luar
  • Debug info : untuk bersekutu dengan kod sumber
Linking Object Modules
1.Produces an executable image

   -bergabung segmen
   -Menyelesaikan label (menentukan alamat mereka)
   -Rujukan Patch bergantung kepada lokasi dan luaran

2.Boleh meninggalkan kebergantungan lokasi untuk penetapan oleh loader berpindah
   -Tetapi dengan memori mayatidak perlu untuk melakukan ini
   -Program boleh dimuatkan ke dalam lokasi mutlak dalam ruang memori maya

Loading a Program
1.Baca header untuk menentukan saiz segmen
2.Buat ruang alamat maya
3.Salin teks dan data dimulakan ke dalam ingatan atau entri set jadual halaman supaya mereka boleh   
   disalahkan dalam.
4.Sediakan hujah pada timbunan
5.Memula daftar (termasuk $ sp, $ fp$ gp)
6.Lompat ke rutin permulaan
   -Salinan hujah untuk $ a0... dan panggilan utama
   -Apabila pulangan utama, melakukan syscall keluar

Arrays vs Pointers
Penunjuk boleh merujuk kepada item individu atau pelbagai baranganMalah, array adalah hanya satu cara mewujudkan kedua-dua senarai barangan dan penunjuk untuk item pertama yang menyenaraikan dalam satu akuan.

Ini bermakna bahawa subskrip boleh digunakan dengan petunjukseolah-olah mereka array diadakan di alamat penunjukSebagai C tidak ada memeriksa pelbagai terikat, ini adalah tidak selamat sepenuhnya.

1.Pengindeksan Array melibatkan
  -Mendarabkan indeks oleh saiz elemen


2.Penunjuk sesuai langsung kepada alamat memori
  -Boleh mengelakkan kerumitan pengindeksan

Example : 
1.Menggunakan kod keadaan untuk hasil arahan aritmetik / logik
   -Negative, zero, carry, overflow
   -Bandingkan arahan untuk menetapkan kod keadaan tanpa menjaga hasilnya

2.Setiap arahan boleh bersyarat
   -bit yang terdahulu perkataan arahankeadaan nilai
   -Boleh mengelakkan cawangan atas arahan tunggal




Yu Hong Sheng
B031210099

Computer Language - Arithmetic,Register and Memory Operand


Arithmetic Operand

- Prinsip Reka Bentuk 1 : Keringkasan Menyumbang Kepada Kekerapan
   ▪ Kekerapan memudahkan pelaksanaan.
   ▪ Keringkasan menyumbang kepada prestasi yang tinggi pada kos yang rendah.

- Melakukan operasi tambahan atau penolakan.

- Semua operasi aritmetik mempunyai format :
         add a, b, c        # a gets b+c

- 3 operand ( 2 sumber dan satu destinasi )

Contoh 1 :

- C code :
    = b + c + d + e

- Compiled MIPS code :
   add b              # sum of and c is placed in a 
   add d              # sum of band d is placed in a 
   add e              # sum of bcd and e is placed in a

Contoh :

- C code :
   = () - ( d + e ) ;

- Compiled MIPS code :
   add  t0 ,   b ,  c         # temp t0 b + c
   add  t1 ,   d ,  e         # temp t1 d + e
   sub    ,  t0 , t1        #   t0 - t1

____________________________________________________________________________

Register Operand

- Prinsip Reka Bentuk 2 : Lebih Kecil, Lebih Cepat

- Arahan aritmetik menggunakan register operands

- MIPS mempunyai 32x32 bit register file.
   ▪ Digunakan untuk data yang sering dibaca
   ▪ Bernombor 0 - 31
   ▪ 32-bit data dipanggil suatu 'word'

- Penghimpunan nama :
   ▪ $t0 , $t1 , ........ , $t9  bagi nilai sementara
   ▪ $s0 , $s1, ......... , $s7 bagi pembolehubah yang telah disimpan

Contoh : 
- C code :
   a =  ( b + c ) - ( d + e )

- Compiled MIPS code :
     add  $t0, $s1$s2
     add  $t1$s3$s4
     sub  $s0$t0$t1

____________________________________________________________________________

Memory Operand

- Memori utama digunakan untuk menggabungkan data
   ▪ Array, structures, dynamic data

- Untuk mengaplikasi operasi aritmetik
  ▪  Muat turun nilai dari memory ke dalam register
  ▪  Menyimpan keputusan dari register ke dalam memory

- Memory is byte addressed
   ▪ Setiap address mengenal pasti suatu 8-bit byte

- Perkataan disusun secara sejajar dalam memory 
    ▪ Address mestilah gandaan 4

Contoh 1 : 
- C code :
     a = b + C [8] ;
    ( a dalam $s1, b dalam $s2, base address of C dalam $s3 )

- Compiled MIPS code :
     lw     $t0,  32 ($s3)          # load word
     add  $s1, $s2. $t0

Contoh 2 :

- C code : 
  A [12] = b + A [8] ;
  ( b dalam $s2, base address of A dalam $s3 )

- Compiled MIPS code :
      lw   $t0 , 32 ($s3)               # load word
      add $t0,  $s2, $t0
      sw   $t0, 48 ($s3)               # store word


KANG YI SHIN
B031210356