Monday, 17 December 2012

Memory (by Firdaus MN.)


1.Mengukur prestasi Cache. (Measuring Cache Performance)

-Komponen masa CPU:

  • Program pelaksana kitaran.
  • Memory stall cycles.

- Dengan anggaran yang memudahkan:

Memory Stall Cycles 
Example:
}  Diberi
      I-cache miss rate = 2%
      D-cache miss rate = 4%
      Miss penalty = 100 cycles
      Base CPI (ideal cache) = 2
      Load & stores are 36% of instructions
}  Miss cycles per instruction
      I-cache: 0.02 × 100 = 2
      D-cache: 0.36 × 0.04 × 100 = 1.44
}  CPI sebenar = 2 + 2 + 1.44 = 5.44
      Ideal CPU adalah 5.44/2 =2.72 lebih laju


2.Prestasi disk.(disk performance).
·         Masa access.
     1) Masa diantara memperkenalkan address dan mendapat data yang sebenar.
2) Selangan masa diantara yang segera, dimana arahan unit kawalan memulakan panggilan untuk data atau permintaan untuk menyimpan data,dan dimana perhantaran data telah lengkap atau simpanan telah bermula.


Figure : Hard Disk Specification

Configuration              
Formatted Capacity, GB                  250   
Sector Size, Byte                               1024 
Data heads                                        10     
Data disks                                         5       

Performance                 
Rotational speed, RPM                     5400 
Disk transfer rate, MB/sec                100   
Controller overhead, µsec                 30     
Seek time, ms                                    20
         

 Memory Cycle time
-Masa mungkin diperlukan untuk memori “Pulih” sebelum aksess yang  seterusnya.
-Kitaan masa ialah aksess + pemulihan(recovery).

Transfer Rate
-Kadar dimana data boleh dipinda.

   
3.Raid.
·         Bermaksud Redundant Array of Independent Disks atau Redundant Array of Inexpensive Array Disks.
·         6 peringkat
·         Boleh menggunakan kapasiti yang bertindih(redundant capacity) untuk meyimpan parity.
  Raid 0
·         Tiada redundancy.
·         Kelujan yang meningkat.
·         Strip data yang merintasi semua disks.
  Raid 1
·         Mirrored disks.
·         Expensive
·         Data ditempatkan di semua disk
·         Dibaca kepada semua.
 Raid 2
·         Disk telah synchronized.
·         Parity disk menyimpan Hamming code sebagai pembetulan kesalahan dalam (corresponding position)
·         Banyak pertindihan.
·         Expensive.
 Raid 3
·         Serupa dengan raid 2.
·         Hanya 1 redundant disk,tidak mengira kebesaran array.
·         Data yang gagal di drive boleh di pulihkan semula menggunakan    surviving data dan parity info.
·         Kadar pertukaran yang sangat tinggi.(very high transfer rate).
 Raid 4
·         Setiap disk beroperasi secara bebas.
·         Bagus digunakan untuk permintaan kadar I/O
·         Stripes yang besar.
·         Parity disimpan di parity disk
 Raid 5
·         Seperti Raid 4
·         Parity disimpan merentasi semua disks.
·         Mengelakkan Raid 4 bottleneck di parity disk.(round robin allocation)
·         Digunakan di rangkaian server
 Raid 6
·         dua pengiraan parity.
·         Disimpan di blok yag berlainan di disk yang berbeza.
·         N+2 penggunaan diperlukan untuk N disks.
·         Kebolehan pemulihan data yang tinggi.(memerlukan 3 disks untuk data tersebut hilang.
   


Instruction language of the computer. (By Firdaus MN.)


1.Arithmetic operation.

-Tambah dan tolak ,tiga operand.
add a, b, c  # a gets b + c

-arithmetic operasi mempunyai bentuk sebegini.

}  Rekabentuk Prinsip 1(Design Principle 1: Simplicity favours regularity)
-Kekerapan akan membuatkan implementasi mudah dibuat.
-kesederhanaan akan menjadikan prestasi lebih tinggi untuk nilai yang rendah.
Example 1:

}  C code:
a = b + c + d + e

}  Kompil  MIPS code:
add a, b, c            # sum of b and c ditempatkan di  a
add a, a, d           # sum of b, c and d ditempatkan di  a
add a, a, e           # sum of b, c, d and e ditempatkan di a

Example 2:

}  C code:
                f = (g + h) - (i + j);

}  Kompil MIPS code:

add t0, g, h   # temp t0 = g + h
add t1, i, j   # temp t1 = i + j
sub f, t0, t1  # f = t0 - t1



2.Memori  operand (Memory operand)

i)        Memori utama digunakan untuk data komposit(array,structures,dynamic data).
ii)      Untuk menggunakan operasi arithmetic.
(1)   Memuatkan nilai dari memori kedalam registers.
(2)   Menyimpan keputusan daripada register kepada memory.
iii)    Memori adalah dialamatkan dengan byte.(byte addressed)
(1)   Setiap address mengidentiti 8-bit byte.
iv)    Perkataan di selaraskan didalam memori.
(1)   Address haruslah pendaraban 4.

Example:
}  C code:
        g = h + A[8];
       g in $s1, h in $s2, base address of A didalam $s3
}  Kompil MIPS code:
       Index 8 meggunakan offset  32
   4 bytes per word
lw   $t0,32($s3)                          #load     word
add $s1, $s2, $t0
 

3.2nd compliment signed integers.

            ·        Range: –2n – 1 to +2n – 1 – 1
·        Example
·        1111 1111 1111 1111 1111 1111 1111 11002
= –1×231 + 1×230 + … + 1×22 +0×21 +0×20
= –2,147,483,648 + 2,147,483,644 = –410
·        Using 32 bits
·        –2,147,483,648 to +2,147,483,647


1.     Bit 31 adalah sign bit
      1 untuk no. negative
      0 untuk bukan no. negative
2.     –(–2n – 1) tidah boleh diwakili.
3.     Bukan No. negative mempunyai tidak bertanda(unsigned) yang sama dan 2nd-complement representasi.
4.     Sedikit no. spesifik:
        0:     0000 0000 … 0000
      –1:     1111 1111 … 1111
      Most-negative:     1000 0000 … 0000
      Most-positive:      0111 1111 … 1111









MIPS : Fallacies (by M.F. Afandi)



Falasi dan ‘Pitfall’

 Falasi: titik apung samping bersekutu; iaitu, x + (y + z) = (x + y) + z
§ Masalah berlaku apabila menambah dua nombor besar tanda-tanda yang bertentangan ditambah
sebilangan kecil.

 Falasi: ... satu anjakan yang betul adalah sama seperti pembahagian integer oleh kuasa
2.

§ Ini mungkin benar bagi integer tak bertanda tetapi ia bukan untuk integer ditandatangani.
Perubahan hak Aritmetik yang mengekalkan sedikit tanda masih menghasilkan tidak betul
keputusan. Pertimbangkan peralihan 2-bt hak -5 (-5 / 4) bahawa keputusan dalam (-2):

111111111111111111111111111110112
111111111111111111111111111111102

 Kesilapan: Arahan MIPS menambah tanda bertanda terdekat (addiu)
memanjangkan bidang 16-bit serta-merta.

§ Walaupun namanya digunakan untuk menambah pemalar integer ditandatangani apabila kita
tidak peduli tentang limpahan. Iaitu untuk C program yang disusun untuk PowerPC addiu
adalah arahan 2 yang paling biasa digunakan (12%) [lihat Rajah 3,26, P & H]

§ Sebagai MIPS tidak mempunyai tolak serta-merta dan negatif
nombor perlu menandatangani lanjutan ini keputusan reka bentuk yang telah dibuat.

MIPS : Basic x86 Addressing Modes ( By M.F. Afandi)



Pengenalan

MIPS mempunyai hanya sebilangan kecil daripada cara yang mengira alamat dalam ingatan. Alamat boleh menjadi alamat arahan (cawangan dan arahan melompat) atau ia boleh menjadi alamat data (untuk beban dan arahan kedai).
Kami akan melihat empat cara alamat dikira
• Daftar Menangani ini digunakan dalam arahan jr (melompat pendaftaran).
• PC-Saudara Menangani Ini digunakan dalam beq dan BNE (cawangan sama, cawangan tidak sama) arahan.
• Pseudo-langsung Menangani ini digunakan dalam arahan j (melompat).
Pangkalan
• Menangani Ini digunakan dalam LW dan SW (beban perkataan, perkataan kedai) arahan.

Daftar Menangani

Panggilan biasa adalah:

  jr $ rs

mana $ rs digantikan oleh mana-mana mendaftar.

Semantik ini ialah:

  PC <- R [s]

Ini bermakna PC (program counter) dikemaskini dengan kandungan daftar s. Ingat bahawa melompat atau cawangan dikemaskini dengan mengubah suai kandungan kaunter program.
Daftar menangani memberikan anda keupayaan untuk menjana mana-mana alamat dalam ingatan. Pengecualian alamat berlaku jika dua bit rendah tidak 00.


PC-Menangani relatif

PC-saudara menangani berlaku dalam arahan cawangan, beq dan BNE (dan variasi lain arahan cabang).
Arahan ini adalah arahan I-jenis, dengan format berikut.

Opcode
Target
B31-26
B25-0


ooo ooo
tt tttt tttt tttt tttt tttt tttt


pelbagai memori yang besar. Nilai segera adalah dalam 16 bit 2C, jadi julat nilai -215 sehingga 215 - 1.
Arahan cabang digunakan terutamanya untuk melaksanakan gelung atau penyata jika-lain. Apabila anda melompat ke dalam kenyataan jika-lain atau gelung, anda biasanya melompat ke arahan berdekatan dari satu anda melompat dari. Arahan anda melompat dari mesti telah menjadi satu di PC, oleh itu ia masuk akal untuk melompat relatif kepada PC.
Sebagai contoh, jika anda mempunyai arahan cawangan alamat pada 1000, maka ia berkemungkinan anda akan melompat tempat berhampiran arahan cawangan.
A (pendekatan dan dengan itu tidak betul) naif untuk melakukan perkara berikut:
  PC <- PC + tanda-ext32 (IR15-0) SALAH!
di mana tanda-ext32 (X) bermakna untuk menandatangani melanjutkan X kepada 32 bit.
Mengapa ini naif? Kita tahu fakta-fakta berikut:
• MIPS arahan 32-bit.
• 32 kuantiti sedikit dalam MIPS mesti disimpan dalam ingatan di perkataan Berkecuali alamat.
• Firman sejajar alamat akhir Tahun 00 apabila ditulis dalam binari.
• Oleh itu, PC, yang menyimpan alamat arahan mesti memegang alamat perkataan Negara-Negara Berkecuali.
Jika kita pergi ke cawangan ke alamat tertentu, dan PC sudah perkataan sejajar, maka nilai serta-merta telah menjadi perkataan Negara-Negara Berkecuali serta.
Walau bagaimanapun, ia tidak masuk akal untuk membuat terdekat perkataan-sejajar kerana kita sedang membuang dua bit rendah dengan memaksa ia menjadi 00.
Ia tidak masuk akal yang lebih untuk membolehkan terdekat 16-bit untuk menjadi mana-mana 216 nilai yang mungkin serta-merta. Bahawa cara anda membuat menggunakan sepenuhnya nilai terdekat. Ia adalah sama IEEE 754 titik terapung di mana kita tidak mewakili 1 tersembunyi dalam pecahan bagi nombor titik terapung ternormal. Sejak ia adalah sentiasa ada, mengapa membazirkan sedikit untuk mewakili ia?
Sebenar PC-saudara menangani
Berikut adalah bagaimana alamat adalah benar-benar dikira.

  PC <- PC + tanda-ext32 (IR15-0 :: 00) 

Anda mengambil nilai 16 bit segera, menambah dua sifar hingga akhir (yang adalah sama seperti peralihan logik meninggalkan 2 bit). Ini mewujudkan nilai yang dibahagi dengan 4. Kemudian, anda sign melanjutkan kepada 32 bit, dan menambah ia ke PC.

Oleh itu, pelbagai alamat yang mungkin adalah: PC - 217 sehingga PC + (217-4) 217 adalah 128 K. Jadi anda boleh melompat kembali kira-kira -128.000 byte ke belakang sehingga kepada kira-kira 128,000 bytes hadapan. Itu besar, tetapi masih sebahagian kecil daripada memori. Mujurlah, untuk arahan cawangan, anda tidak perlu untuk melompat yang jauh, jika anda menulis kod yang agak baik.

Sunday, 16 December 2012

MIPS (by nazirul anwar)

 Branch Addressing
}  Branch instructions specify
       -Opcode, two registers, target address
}  Most branch targets are near branch
-Forward or backward


 Decoding Machine Language

}  Refer to MIPS Reference Data

}  What is the assembly language statement corresponding to this machine instruction?
                        00af8020hex
}  Step 1: convert hex to binary to find the op fields. Set the bit based on the R-format field (since it has the most fields available of all format:
Bits:  31 28 26      20  16          10    5
            0000 0000 1010 1111 1000 0000 0010 0000
}  Step 2: determine the operation,  when bits 31-26 are 000000 and bit 5-0 has a value, it is R-format. Convert the funct value into hex.
}  You will get 20hex. Look into the reference for opcode/funct column with value 0/20hex. The pattern represents add instruction.
}  Step 3: Decode the rest of the instruction by looking the field of values.
Bits:31 28 26   20  16      10    5
            000000 00101 01111 10000 00000 100000
                  0  $a1   $t7  $s0     0     add
}  Step 4: Rearrange the values into an assembly instruction
                  add $s0, $a1, $t7