Pages

Tuesday 18 December 2012


Language of Computer :

Unsigned Binary Integers

x = xn-12n-1 + xn-22n-2 + …… + x121 + x020
ini adalah formula bagi n-bit nombor.
-Julatnyan dari 0 hingga 2n-1
-contoh 1
0000 0000 0000 0000 0000 0000 0000 11102
= 0 + …… + 1323 + 1222 + 1121 + 0020
= 0 + 8 + 4 + 2 + 0
= 1410



2s-Complement Signed Integers

-contoh 2
1111 1111 1111 1111 1111 1111 1111 10012
= –1×231 + 1×230 + …+1×23 +0×22 +0×21 +1×20
= –2,147,483,648 + 2,147,483,641
= –710

-contoh 3
010 = 0000 0000 0000 0000 0000 0000 0000 00002

-contoh 4
-110 = 1111 1111 1111 1111 1111 1111 1111 11112

-contoh 5
+5 = 0000 0000 … 01012
-5 = 1111 1111 … 10102 + 1
  = 1111 1111 … 10112


R – format Instruction




op: operation code (opcode)
rs: first source register number
rt: second source register number
rd: destination register number
shamt: shift amount (00000 for now)
funct: function code (extends opcode)


-contoh 6
add $t0, $s1, $s2
 000000100011001001000000001000002 = 02324402016


Hexadecimal






-contoh 7
abcf097616
= 1010 1011 1100 1111 0000 1001 0111 01102

MIPS I – format Instructions



op: operation code (opcode)
rs: first source register number
rt: second source register number
Constant: –215 to +215 – 1
Address: offset added to base address in rs

-contoh 8
A[300] = h + A[300]
lw      $t0,1200($t1)
add    $t0,$s2,$t0
sw     $t0,1200($t1)


MIPS
Daftar Penggunaan :

$zero :value 0 (reg 0)
$v0, $v1: result values (reg’s 2 and 3)
$a0 – $a3: arguments (reg’s 4 – 7)
$t0 – $t7: temporaries (reg 8-15)
$s0 – $s7: saved (reg 16-23)
$t8 – $t9: temporaries (reg 24-25)
$gp: global pointer for static data (reg 28)
$sp: stack pointer (reg 29)
$fp: frame pointer (reg 30)
$ra: return address (reg 31)



Pertukaran C code kepada MIPS code:
Contoh 1:
C code       :    v = w + x + y + z
MIPS code :  add  v, w, x
                  add  v, v, y
                  add  v, v, z
Tambah w dan x kepada v dahulu. Selepas itu, tambah y dengan v, pada masa ini, nilai v ditukar jadi w + x + y. Tambah z kepada v semula, nilai v ditukar jadi jumlah w, x, y, dan z. (Penambahan yang tidak mempunyai constant pakailah ‘add’.)


Contoh 2:
C code        :    a = (b + c) – (d + e)
MIPS code :  add  $t0, b, c
                  add  $t1, d, e
                  sub  a, $t0, $t1
Siapkan solution yang dalam kurungan dahulu. Tambah b dengan c kepada $t0. $t0 merupakan satu variable yang sementara untuk simpan nilai b tambah c. Selepas itu, tambah d dengan e kepada $t1. $t1 merupakan satu variable yang sementara untuk simpan nilai d tambah e. Akhirnya tolak $t0 dengan $t1 bersama dengan a. (Penolakan yang tidak mempunyai constant pakailah ‘sub’.)


Contoh 3:
C code        :    a = (b + c) – (d + e)
MIPS code :  add  $t0, $s1, $s2
                  add  $t1, $s3, $s4
                  sub  $s0, $t0, $t1
Sama dengan contoh 2, hanya semua a, b, c, d, dan e register kepada $s0, $s1, $s2, $s3, dan $s4. $t0 dan $t1 digunakan untuk melancarkan kiraan.
                   

Contoh 4:
C code        :    m = n + A[3]
MIPS code :     lw   $s0, 12($s3)
                      add  $s1, $s2, $s0
Dalam kes data komposit, nombor yang dalam ‘alamat’,[] kali dengan 4 dan muatkan nilainya dengan lw kepada $s0. Penambahan akan dibuat seterusnya.(lw, load word)


Contoh 5:
C code        :    A[5] = m + A[3]
MIPS code :      lw   $t0, 12($s3)
                      add  $t0, $s2 ,$t0
                      sw   $t0, 15($s3)
Contoh 5 juga adalah kes data komposit, nombor yang dalam ‘alamat’,[] kali dengan 4 dan muatkan nilainya dengan lw kepada $s0 (yang di sebelah kanan ‘=’). Nombor yang dalam [] kali dengan 4 dan simpan daripada $t0 kepada $t0(yang di sebelah kiri ‘=’) selepas penambahan dibuat .(sw, store word)


Contoh 6:
C code        :    x = y + 7
MIPS code :      addi $s3, $s3, 4
Kes penambahan yang mempunyai nombor constant, addi digunakan untuk menambahnya.


Contoh 7:
C code        :    x = y – 9
MIPS code :      addi $s2, $s2, -9
Semua penambahan dan penolakan yang mempunyai constant disiapkan dengan menggunakan penambahan, hanya constant itu dianggap sebagai nombor negatif. 

                                                                                   by : TEE SONG WEI 


Language Of Cmputer (Representing Instructions in the Computer )

Language Of Cmputer (Representing Instructions in the Computer )


  • Kami kini bersedia untuk menjelaskan perbezaan antara cara manusia mengarahkan komputer dan cara komputer melihat arahan.
  • Arahan disimpan dalam komputer sebagai satu siri elektronik tinggi dan rendah isyarat dan boleh diwakili sebagai nombor. Malah, setiap sekeping arahan boleh dianggap sebagai nombor individu, dan meletakkan ini nombor sampingan oleh sampingan membentuk arahan. 
  • Sejak daftar dirujuk oleh hampir semua arahan, mesti ada konvensyen untuk memetakan nama daftar kepada nombor. Dalam MIPS bahasa himpunan, register $ s0 untuk $ s7 peta ke daftar 16-23, dan mendaftarkan $ t0 $ peta T7 ke daftar 8 hingga 15. Oleh itu, $ s0 bermakna daftar 16, $ s1 cara daftar 17, $ s2 cara mendaftar 18,. . . , $ T0 bermakna daftar 8, $ t1 cara daftar 9, dan sebagainya. Kami akan menerangkan konvensyen untuk seluruh 32 daftar dalam seksyen yang berikut.
Translating a MIPS Assembly Instruction into a Machine Instruction

Mari kita buat langkah seterusnya dalam nement refi bahasa MIPS sebagai contoh. Kami akan menunjukkan MIPS sebenar versi bahasa arahan diwakili simbolik sebagai 
                               add $ t0, $ s1, $ s2
pertama sebagai kombinasi nombor perpuluhan dan kemudian nombor perduaan.

Perwakilan perpuluhan tersebut ialah : 


  • Ini susun atur arahan dipanggil format arahan. Seperti yang anda boleh lihat daripada mengira bilangan bit, arahan ini MIPS mengambil tepat 32 bit-saiz yang sama sebagai perkataan data. Dalam selaras dengan prinsip reka bentuk kami bahawa kesederhanaan nikmat kekerapan, semua arahan MIPS 32 bit panjang.
  • Untuk membezakan ia daripada bahasa himpunan, kita panggil versi angka arahan bahasa mesin dan jujukan arahan kod mesin itu.
  • Ia akan muncul bahawa anda sekarang akan membaca dan menulis panjang, rentetan membosankan nombor perduaan. Kami mengelakkan kebosanan itu dengan menggunakan asas yang lebih tinggi daripada binari yang menukarkan mudah ke binari. Sejak hampir semua data komputer saiz gandaan 4, perenambelasan (asas 16) nombor adalah popular. Sejak asas 16 adalah kuasa 2, kita boleh trivially menukar dengan menggantikan setiap kumpulan empat digit perduaan oleh perenambelasan satu digit, dan  ebaliknya. Rajah di bawah menukarkan antara perenambelasan dan perpuluhan.

  • Kerana kita sering berurusan dengan asas nombor yang berbeza, untuk mengelakkan kekeliruan kita akan subskrip nombor  perpuluhan dengan sepuluh, nombor perduaan dengan dua, dan nombor perenambelasan dengan hex​​. (Jika terdapat subskrip tidak lalai adalah asas 10.) By the way, C dan Java menggunakan 0xnnnn notasi untuk nombor perenambelasan.


Berikut adalah makna nama setiap bidang dalam arahan MIPS:


  1. rs: fi rst daftar sumber operan.
  2. rt: sumber kedua operan daftar.
  3. rd: operan daftar destinasi. Ia mendapat hasil operasi.
  4. shamt: Shift jumlah.
  5. funct: Fungsi. Bidang ini, sering dipanggil kod fungsi, memilih spesifikasi c varian operasi dalam bidang op.


  • Satu masalah berlaku apabila arahan memerlukan lagi bidang daripada yang ditunjukkan atas. Sebagai contoh, arahan beban perkataan mesti nyatakan dua daftar dan berterusan. Jika alamat adalah untuk menggunakan salah satu bidang yang 5-bit dalam format di atas, berterusan dalam arahan perkataan beban akan terhad kepada hanya 32. Pemalar ini digunakan untuk memilih unsur-unsur dari array atau struktur data, dan ia sering keperluan untuk menjadi lebih besar daripada 32. This 5-bit Wayar waktu tua adalah terlalu kecil untuk menjadi berguna. 

  • Oleh itu, kita mempunyai confl ict antara keinginan untuk menyimpan semua arahan yang sama panjang dan keinginan untuk mempunyai format arahan tunggal. Ini membawa kita kepada prinsip reka bentuk perkakasan akhir:

     Design Principle 4:  Good design demands good compromises.


                             Written By : EOH WENG JIAN  ( B031210151 )


Monday 17 December 2012


Memory Organization 2: External Memory

Performance : Access time

Formula untuk cari Access Time:
Cakera Latency = Masa Seek + Masa Putaran + Masa Pemindahan + Pengawal overhed

Masa Seek: bergantung kepada nombor trek bergerak
          “lengan”,  kelajuan seek cakera
Masa Putaran : bergantung kepada cakera kelajuan
             berputar, sejauh mana sektor dari kepala
Masa Pemindahan : bergantung kepada kadar data (bandwidth) cakera (bit density), saiz data yang diminta
Pengawal overhed : 0.1ms



Contoh 1:
Baca 512-byte, purata masa seek = 5ms, kadar pemindahan = 40MB/sec, putar kelajuan = 10000RPM, pengawal overhed = 0.1ms

Purata masa seek = 5ms
Purata masa putaran = 0.5/(10000RPM)
                 = 0.5/(10000RPS/60)
                 = 0.003s
                 = 3ms
Masa pemindahan = 512B/(40MB/s)
               = 512B/(40000000B/1000000ms)
               = 12.8ms


Cakera Latency = Masa Seek + Masa Putaran + Masa Pemindahan +
              Pengawal overhed
            = 5ms + 3ms + 12.8ms + 0.1ms
            = 20.9ms

Contoh 2:
Barracuda 180x
Baca 64KB, masa seek = 7.4ms, kadar pemindahan = 65MB/sec, putar kelajuan = 7200RPM, pengawal overhed = 0.1ms

Masa seek = 7.4ms
Purata masa putaran = 0.5/(7200RPM)
                 = 0.5/(7200RPS/60)
                 = 0.0041667s
                 = 4.1667ms
Masa pemindahan = 64KB/(65MB/s)
               = 64KB/(65000KB/1000ms)
               = 0.9846ms


Cakera Latency = Masa Seek + Masa Putaran + Masa Pemindahan +
              Pengawal overhed
            = 7.4ms + 4.1667ms + 0.9846ms + 0.1ms
            = 12.6513ms

Contoh 3:
UltraStar72
Baca 64KB, 1/3 dipetik masa seek, masa seek = 7.4ms, kadar putaran = 7200rpm, kadar pemindahan = 47KB/ms, pengawal overhed = 0.1ms

Masa seek = (1/3)7.4ms
         = 2.4667ms
Purata masa putaran = 0.5/(7200RPM)
                 = 0.5/(7200RPS/60)
                 = 0.0041667s
                 = 4.1667ms
Masa pemindahan = 64KB/(47KB/ms)
               = 64KB/(47KB/ms)
               = 1.3617ms


Cakera Latency = Masa Seek + Masa Putaran + Masa Pemindahan +
              Pengawal overhed
            = 2.4667ms + 4.1667ms + 1.3617ms + 0.1ms
            = 8.0951ms

Contoh 4:
Disk Parameters
Size pemindahan = 8KB, masa seek = 12ms, kadar putaran = 7200rpm, kadar pemindahan = 4MB/s

Masa seek = 12ms
Purata masa putaran = 0.5/(7200RPM)
                 = 0.5/(7200RPS/60)
                 = 4.1667ms
Masa pemindahan = 8KB/(4MB/s)
               = 8KB/(4000KB/1000ms)
               = 2ms

Cakera Latency = Masa Seek + Masa Putaran + Masa Pemindahan +
              Pengawal overhed
            = 12ms + 4.1667ms + 2ms + 0.1ms
            = 18.2667ms





                                                                                                                                BY : TEE SONG WEI

Sunday 16 December 2012

Language of computer (operands)



Language of computer
Operands of the computer
  • Tidak serupa high-level punya bahasa , operands of arithmetic instruction tidak boleh ada   variables, mesti ada limited number dan letak dalam tempat special yang dipanggil registers.
  • Registers adalah bricks dalam computer construction, bagi  registers adalah bahasa asal yang diguna dalam hardware design dan juga dilihat kepada  programmer apabila computer disiapkan.
  • 32 bits adalah nama dalam MIPS architecture (32 bit)
  • Satu berbezaan antara variables of a programming language and registers ialah limited nombor bagi registers, biasanya 32. (MIPS ada 32 registers)
  • Nombor  registers yang besar akan tambah masa  kitar jam, ini kerana masa yang guna dari  electronic signals telah panjang apabila  travel lebih jauh.
  • MIPS convention adalah guna dua nama character mengikuti satu dollar sign untuk  represent satu  register. Sebagai contohnya  $s0, $s1,$s2 ...register ini akan digunakan dalam variables in C dan JAVA programs.
  • $t0,$t1,$t2… adalah register yang sementara untuk menyusun program di MIPS instructions.
CONTOH:
Tukar C code kepada MIPS code.
f = ( g + h ) – ( i – j )
f,g,h,i,j akan tukar kepada register $s0,$s1,$s2,$s3, dan $s4.
Solution: add $t0,$s1,$s2 # register $to akan masukan g+h.
                sub St1,$s3,$s4 #register St1 akan masukan i – j.
                sub $s0,$t0,$t1 # f = $t0 - $t1 , yang maksud f = ( g + h ) – ( i – j )
Memory operand
  • Processor hanya boleh simpan jumlah yang kecil dalam  registers, tetapi komputer memory mengandungi berjuta-juta elemen data.
  • Oleh complex struktur data, seperti arrays, disimpan dalam memory.
  • Arithmetic operations hanya muncul dalam registers dan berada di MIPS instructions.
  • Data transfer instructions adalah instructions yang  transfer data antara memory dan registers (tradisional dipanggikan  load).
  • Untuk masukan word dalam memory,  instruction itu mesti supply memory address.
  • Memori adalah besar, satu dimensional  array dengan addres akan bertindak sebagai index kepada array itu, dan akan bermula pada 0.
  • MIPS nama sebenar bagi  data transfer instruction adalah lw, yang bermaksud load word. Sebagai contoh : lw  $t0, 8($s3).
  • The constant dalam  data transfer instruction adalah dipanggil offset, dan register ditambah untuk membentukan ke dalam address yang dipanggil  base register.
  •  8-bit bytes mempunyai kegunaan dalam banyak programs dan kebanyakkan architectures address individual bytes .
  • Oleh itu, address bagi word matches address dari pada satu antara 4 bytes within word itu, dan address bagi sequential words differ by 4.
·         Dalam MIPS ,words  mesti sentiasa mula pada addresses yang multiples of 4 . Syarat ini dipanggil (alignment restriction) dan banyak architectures adanya.
·         Alignment restriction bermaksud satu keperluan bahawa data selari dengan memory dalam  natural boundaries.
  • Arahan complementary untuk  load is adalah panggil store
  • Store adalah digunakan untuk pindah data dari register ke memory. 
  • Dalam  MIPS  store adalah sw,  maksudnya ialah store word.
  • Biasanya process yang letakkan variables kedalam memory ialah spilling registers.
CONTOH:
1.Compiling an assignment when an operand is in memory.
Bagi A adalah array kepada 100words , g dan h pula adalah register $s1 dan $s2. Base address bagi array adalah $s3. Compile C assignment ini.
g = h + A[8] ;
Mula-mula transfer A[8] kepada satu register. Array A jumpa di register $s3 dan tambah element 8. Data perlu masuk ke temporary register untuk instruction seterusnya . Compiled instruction pertama adalah...
            lw $t0, 8($s3) # Register temporary St0 adalah untuk dapat A[8]
Instruction seterusnya adalah operate value dalam $t0 dan instruction mesti add h($s2) kepada $t0 lepas itu letakkan tambahan ini ke register $s1.
            Add $s1 , $s2 , $t0 # ini ialah g= h + A[8]
2.Compile dengan mengunakan load dan store
Bagi h adalah register $s2 dan base address bagi array A adalah $s3 . Tukarkan C assignment ini  kepada MIPS code :
            A[12] = h + A[8]
Mula-mula akan gunakan proper offset bagi byte addressing dalan load word instruction untuk select A[8] dan add instruction akan letakan tambah dalam $t0.
            lw $t0 , 32($s3) # Register temporary $t0 untuk dapatkan A[8]
            add $t0 , $s2 , $t0 # Register temporary $t0 untuk dapatkan h + A[8]
Instruction yang terakhir untuk stores tambah dalam A[12] , adalah guna 48 (4 x 12) as offset dan register $s3 adalah base register.
            sw St0 , 48($s3) # Untuk stores h + A[8] masuk balik ke dalam A[12]
Constant and immediate operands

CONTOH:
Untuk add constant 4 kepada register $s3 , kita oleh guna code seperti:
            1w $t0 , AddrConstant4($s1)  # $t0 adalah sama dengan constant 4
            add $s3 , $s3 , $t0  # $s3 sekarang adalah $s3 + $t0($t0 adalah 4)
bagikan $s1 + AddrConstant4  adalah memort address untuk constant 4 . Untuk lebih cepat add instruction dengan satu conatant operand adalah add immediate atau addi . Untuk add 4 kepada register $s3 , kita boleh guna :
            addi $s3 , $s3 , 4  # Cara ini adalah untuk dapat  $s3 = $s3 + 4

CHOO YIE  YUNG  (B031210026)