Monday, 17 December 2012
Memory (by Firdaus MN.)
Memory Stall Cycles
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
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
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
= –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.
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
} What is
the assembly language statement corresponding to this machine instruction?
} 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
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
Subscribe to:
Posts (Atom)