ALU,
singkatan dari Arithmetic And Logic Unit (bahasa Indonesia:
unit aritmatika dan logika), adalah salah satu bagian dalam dari sebuah
mikroprosesor yang berfungsi untuk melakukan operasi hitungan aritmatika dan
logika. Contoh operasi aritmatika adalah operasi penjumlahan dan pengurangan,
sedangkan contoh operasi logika adalah logika AND dan OR. tugas utama dari ALU
(Arithmetic And Logic Unit)adalah melakukan semua perhitungan aritmatika atau
matematika yang terjadi sesuai dengan instruksi program.
ALU melakukan operasi aritmatika
yang lainnya.Seperti pengurangan, pengurangan, dan pembagian dilakukan dengan
dasar penjumlahan.Sehingga sirkuit elektronik di ALU yang digunakan untuk
melaksanakan operasi aritmatika ini disebutadder. ALU melakukan operasi arithmatika
dengan dasar pertambahan, sedang operasi arithmatika yang lainnya, seperti
pengurangan, perkalian, dan pembagian dilakukan dengan dasar
penjumlahan.sehingga sirkuit elektronik di ALU yang digunakan untuk
melaksanakan operasi arithmatika ini disebut adder.
Tugas lain dari ALU adalah melakukan
keputusan dari operasi logika sesuai dengan instruksi program. Operasi logika (logical
operation) meliputi perbandingan dua buah elemen logika dengan menggunakan
operator logika, yaitu:






Gambar Input dan output dari ALU
B.
Representasi
Integer
Dalam sistem bilangan biner, 1 semua
bilangan dapat direpresentasikan dengan hanya menggunakan digit-digit nol dan
satu, tanda minus, dan tanda titik.
-1101.01012
= - 13,312510
Namun,
untuk keperluan pengolahan dan penyimpanan komputer, kita tidak perlu merepresentasikan
bilangan. Jika kita hanya terbatas pada integer nonnegatif, maka
representasinya akan lebih mudah.
Sebuah
word 8-bit dapat digunakan untuk merepresentasikan bilangan-bilangan dari 0
hingga
00000000
= 0
00000001
= 1
00101001
= 41
10000000
= 128
11111111
= 255
Secara
umum, jika sebuah rangkaian n-bit bilangan biner an-1an-2....a1a0
direpresentasikan sebagai suatu integer tanpa A, nilainya adalah
A = i
ai
Terdapat beberapa konvensi alternatif
yang digunakan untuk merepresentasikan bilangan integer negatif seperti halnya
bilangan integer positif, semua konpensi tersebut meliputi perlakuan bityang
paling signifikan (paling kiri) di dalam word sebagai bit tanda. Jika bit tanda
adalah 0, maka bilangan tersebut positif; jika bit tanda adalah 1, maka
bilangan tersebut adalah negatif.
Bentuk
reprentasi yang paling sederhana yang memakai bit tanda adalah adalah
reprentasi magnituda tanda. pada suatu word n-bit, bit n-1 paling kanan menampung nilai integer.
+18=
00010010
-18=
10010010 (magnituda tanda)
Secara
umum kasus tersebut adalahdapatdiekspresikan sebagai berikut:
Terdapat
beberapa kelemahan pada representasi magntuda tanda.salah satunya adalah bahwa
penambahan dan pengurangan memerlukan pertimbangan baik tanda bilangan maupun
nilai relatifnya untuk menyelesaikan operasi yang diperlukan. Masalah ini
adalah menjadi jelas dalam pembahasan pada sub bab 9.3. kelemahan yang lain
adalah bahwaterdapatdua reprentasi bilangan 0.
+
010 = 00000000
- 010 = 10000000 (magnituda tanda)
Hal ini merepotkan, karena akan
menyulitkan pemeriksaan bilangan 0 (suatu operasi yang sering dilakukan pada
komputer) dibandingkan jika menggunakan representasi tunggal.
Karea kelemahan ini, representasi magnituda tanda jarang
digunakan di dalam implementasi bagian bilangan integer ALU.Disamping itu,
teknik yang paling umum adalah representation komplemen dua.
Representasi Komplemen Dua
Seperti halnya magnituda tanda,
representasi komplemen dua menggunakan bit yang paling signifikan sebagai bit
tanda, yang memudahkannya untuk mengetahui apakah suatu integer bernilai
positif atau negatif. Representasi ini berbeda dengan penggunaan representasi
magnitude tanda dalam cara dengan bit-bit lainnya diinterpretasikan. Tabel 9.1
menekankan karakteristik penting representasi komplemen dua dan aritmetika,
yang dibahas dalam bagian ini dan yang berikutnya.
Sebagian besar perlakuan representasi
komplemen dua menfokuskan pada aturan untuk menghasilkan bilangan-bilangan
negatif, dengan tidak ada bukti formal bahwa teknik “bekerja“. Di samping itu,
pembahasan kita tentang integer-integer komplemen dua dalam bagian ini dan
dalam Subbab 9.3 berdasarkan pada (DATT93), yang menyatakan bahwa representasi
Range
|
-2n-1 sampai 2n-1 - 1
|
Jumlah representasi nol
|
Satu
|
Negasi
|
Ambil komplemen Boolean dari setiap bit yang bersesuaian
dengan bilangan positif, kemudian tambahkan 1 untuk menghasilkan pola bit
yang dilihat sebagai integer tanpa tanda.
|
Perluasan panjang bit
|
Tambahkan posisi bit tambahan ke kiri da nisi dengan bit
magnituda tanda asli.
|
Aturan overflow
|
Jika dua bilangan-bilangan dengan tanda yang sama (keduanya
bilangan positif atau keduanya bilangan negatif) ditambahkan, maka terjadi
overflow jika dan hanya jika hasilnya mempunyai tanda berkebalikan.
|
Aturan pengurangan
|
Untuk mengurangi B dari A, ambil komplemen kedua dari B dan
menambahkannya ke A.
|
Komplemen dua adalah terbaik untuk
dipahami oleh pendefenisiannya dalam kaitannya dengan penjumlahan bit-bit
berbobot, seperti ketika kita melakukan sebelumnya pada representasi tanpa
tanda dan magnitude tanda.Keuntungan perlakuan yang demikian adalah bahwa
representasi itu tidak meninggalkan keraguan apapun dimana aturan
operasi-operasi aritmatika di dalam dua notasi komplemen tidak dapat bekerja
untuk beberapa kasus khusus.
Perhatikan suatu integer n-bit, A,
dalam representasi komplemen dua. Jika A bilangan positif, maka bit tanda, an-1,
adalah nol. Bit-bit lainnya merepresentasikan nilai bilangan dalam mode yang
sama dengan magnitude tanda:
A=
2 untuk A ≥ 0
Bilangan nol akan didefenisikan sebagai
bilangan positif dan sehingga mempunyai bit tanda 0 dan nilai keseluruhan 0.
Kita dapat melihat bahwa cakupan integer positif yang dapat direpresentasikan
mulai dari 0 (semua bit nilainya adalah 0) hingga 2n-1 – 1 (semua
bit nilainya adalah 1). Bilangan yang lebih besar maupun akan memerlukan bit
yang lebih banyak.
Sekarang, untuk bilangan negatif A (Ad
“0), bit tanda, an-1, adalah satu.n – 1 bit sisanya dapat mengambil
salah satu dari nilai-nilai 2n-1. Oleh karena itu, cakupan integer
negative yang dapat direpresentasikan adalah mulai dari 1 hingga- 2n-1.Kita
bermaksud menugaskan nilai-nilai bit ke integer negative sehingga aritmatika
dapat ditangani di dalam mode secara langsung, mirip dengan aritmatika integer
tanpa tanda. Pada representasi integer tanpa tanda, untuk menghitung nilai
integer dari representasi bit, bobot bit-bit yang paling signifikan adalah +2n-1.
Untuk representasi dengan bit tanda, representasi menghasilkan tercapainya
aritmatika yang diinginkan, seperti yang akan kita lihat pada sub bab 9.3, jika
bobot bit yang paling signifikan adalah -2n-1. Hal ini merupakan
kontrovensi yang digunakan dalam representasi komplemen dua, menghasilkan
ekspresi berikut untuk bilangan-bilangan negatif:
A=
-2n-1 an-1 + (9.2)
Pada kasus bilangan integer positif, an-1=0,
maka suku -2n-1an-1= 0.Dengan demikian, Persamaan (9.2)
mendefenisikan representasi komplemen dua untuk bilangan positif dan negative.
Tabel 9.2 membandingkan magnitude tanda
dan representasi komplemen dua integer 4-bit. Walaupun dari sudut pandang
manusia komplemenn dua merupakan representasi yang canggung, kita akan lihat
bahwa itu memudahkan operasi-operasi aritmatika yang paling utama, penambahan
dan pengurangan. Dengan alas an ini, representasi ini sangat umum, representasi
ini sangat umum digunakan sebagai representasi prosessor untuk integer.
Suatu ilustrasi yang bbermanfaat
tentang sifat representasi komplemen dua adalah kotak nilai, dimana nilainya
terdapat jauh pada sisi kanan kotak adalah 1 (20) dan setiap posisi
berikutnya ke sebelah kiri merupakan nilai gandanya, sampai posisi yang paling
kiri, yang ditiadakan. Seperti yang anda lihat pada gambar 9.2a, bilangan
komplemen dua yang paling negtif yang dapat direpresentasikan adalah 2n-1,
jika terdapat sembarang bit selain bit tanda
satu, maka bit iitu akan menambahkan jumlah positive terhadap bilangan. Selain
itu, jelas bahwa bilangan negative harus mempunyai suatu bilangan 1 pada posisi
yang paling kirinya dan bilangan positive harus mempunyai suatu bilangan 0 pada
posisi tersebut. Jadi bilangan positif yang paling besar adalah suatu 0 diikuti
oleh semua 1, yang sama dengan 2n-1 – 1.
Bagian
lainnya pada gambar 9.2 mengilustrasikan penggunaan kotak nilai untuk mengkonversikan
komplemen dua ke bilangan decimal dan dari bilangan decimal menjadi komplemen
dua.
Tabel 9.2
Representasi Alternatif untuk Integer 4-bit
Representasi
Bilangan Desimal
|
Representasi
Magnituda Tanda
|
Representasi
Komplemen Dua
|
Representasi
Terbias
|
+8
|
-
|
-
|
1111
|
+7
|
0111
|
0111
|
1110
|
+6
|
0110
|
0110
|
1101
|
+5
|
0101
|
0101
|
1100
|
+4
|
0100
|
0100
|
1011
|
+3
|
0011
|
0011
|
1010
|
+2
|
0010
|
0010
|
1001
|
+1
|
0001
|
0001
|
1000
|
+0
|
0000
|
0000
|
0111
|
-0
|
1000
|
-
|
|
-1
|
1001
|
1111
|
0110
|
-2
|
1010
|
1110
|
0101
|
-3
|
1011
|
1101
|
0100
|
-4
|
1100
|
1100
|
0011
|
-5
|
1101
|
1011
|
0010
|
-6
|
1110
|
1010
|
0001
|
-7
|
1111
|
1001
|
0000
|
-8
|
-
|
1000
|
-
|
Gambar
9.2
Penggunaan Kotak Nilai untuk Konversi Antara
Dua Bilangan Komplemen Biner dan Bilangan Desimal
-128
|
64
|
32
|
16
|
8
|
4
|
2
|
1
|
(a) Suatu
delapan posisi kotak nilai komplemen dua
-128
|
64
|
32
|
16
|
8
|
4
|
2
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
-128 + 2 +1
=-125
(b) konversi biner 10000011 ke decimal
Konversi Antara Panjang Bit yang
Berlainan
Kadang-kadang
kita perlu mengambil integer n-bit dan menyimpannya di dalam bit m, di mana m
> n. Pada notasi magnitude tanda, hal ini mudah terpenuhi: Sederhananya
cukup memindahkan bit tanda ke posisi paling kiri yang baru dan mengisi sisanya
dengan nol.
+18 = 00010010 (magnituda tanda, 8 bit)
+18 = 0000000000010010 (magnituda tanda, 16 bit)
-18 = 10010010 (magnituda tanda, 8 bit)
-18 = 1000000000010010 (magnituda tanda, 16 bit)
Prosedur
ini tidak berlaku bagi integer negative komplemen dua. Dengan menggunakan
contoh yang sama,
+18 = 00010010 (komplemen dua, 8 bit)
+18 = 0000000000010010 (komplemen dua, 16 bit)
-18 = 11101110 (komplemen dua, 8 bit)
-32,658 = 10000000001101110 (komplemen dua, 16 bit)
Selanjutnya
sampai baris terakhir mudah dilihat dengan menggunakan kotak nilai pada Gambar
9.2.Garis terakhir dapat diverifikasi dengan menggunakan Persamaan 9.2 atau
kotak nilai 16-bit.
Di
samping itu, aturan integer komplemen dua akan memindahkan bit tanda ke posisi
paling kiri yang baru dan mengisinya dengan salinan bit tanda. Untuk
bilangan-bilangan positif, isi dengan nol, dan untuk bilangan-bilangan
negative, isi dengan satu.Hal ini disebut sebagai perluasan tanda.
-18 = 11101110 (komplemen dua, 8 bit)
-18 = 1111111111101110 (komplemen dua,16 bit)
Untuk
mengetahui mengapa aturan ini bisa berlaku, mari kita memperhatikan sekumpulan
bilangan integer biner n-bit an-1an-2….a1a0
yang diinterpretasikan sebagai integer komplemen dua A, sehingga nilainya
adalah
A
= -2n-1 an-1 + i
ai
Jika
A bilangan positif, maka aturan tersebut jelas akan berlaku. Sekarang, jika A
negative dan kita akan membuat representasi m-bit, dengan m > n. maka
A
= -2m-1 am-1 + i
ai
Kedua
nilai harus sama
1
+ i
+ i
ai = 1 + i
iai
=
i
m-2= …. = n-2 = n-1
=
1
Representasi Titik Tetap
Terakhir,
kita menyebutkan bahwa representasi yang telah dibahas dalam bagian ini
kadang-kadang dikenal sebagi titik tetap. Hal ini karena titik radiksnya (titik
biner) tetap dan diasumsikan akan berada di sebelah kanan dari digit yang
paling kanan. Pemprogram dapat menggunakan representasi yang sama untuk
bilangan pecahan biner dengan melakukan peskalaan bilangan-bilangan yang
bersangkutan sehingga titik biner secara implisit berada pada lokasi lain.
C. Penambahan
dan Pengurangan
Penambahan diilustrasikan pada Gambar9.3.Pertama empat
contoh ilustrasi operasi sukses.Jika hasil dari operasi adalah positif,
kita mendapatkan angka positif dalam notasi biner biasa. Jika
hasil operasi negatif,kita mendapatkanangka negatif dalam bentuk pelengkap
berpasangan. Perhatikan bahwa,dalam beberapa kasus,ada sedikit carry luar akhir
kata yang diabaikan.
Disamping itu,hasilnya mungkin lebih besar daripada yang
dapat di sediakan diword size yang digunakan. Kondisi ini disebut overf low.
Ketika over flow terjadi, ALU harus
menerima sinyal ini sehingga tidak ada usaha yang dibuat untuk
menggunakan hasilnya.Untuk mendeteksi overflow, aturan yang harus diperhatikan :
jika dua nomor ditambahkan, dan mereka baik positif atau
keduanya negatif, kemudian overflow terjadi jika dan hanya jika hasilnya
memiliki tanda berlawanan. Gambar9.3 dan saya menunjukkan contoh overflow.
Pengurangan juga mudah ditangani dengan aturan berikut:
Untuk mengurangi salah satu nomor (pengurang)
dengan yang lain (dikurang). Ambil dua
complement(negasi) dari pengurang dan menambahkannya ke
angka yang di kurang tersebut.Selain itu,seperti yang diilustrasikan pada
Gambar 9.4. Dua contoh terakhir menunjukkan bahwa aturan overflow masih
terjadi.
Beberapa gambaran selain dua
complement penambahan dan pengurangan dapat diperoleh dengan
melihat gambaran geometris[BENH92], seperti yang ditunjukkan pada Gambar9.5.lingkaran dibagian atas setiap bagian darigam
barterbentuk dengan memilih segmen yang tepat dari nomor baris dan bergabung
dengan titik akhir. Perhatikan bahwa ketika angka-angka tersebut diletakkan
pada sebuah lingkaran ,dua complement dari setiap nomor adalah horizontal
berlawanan angka(ditunjukkan dengan garis horizontal putus-putus). Dimulai pada setiap nomor pada lingkaran, kita dapat menambahkan
positif (atau mengurangi ke negatif) ke nomor tersebut
dengan memindahkan posisi kearah jarum jam,, kita dapat
mengurangi ke positif (atau menambahkan knegatif)dari
jumlah tersebut dengan memindahkan posisi ke berlawanan. Jika dan hasil operasi
aritmatika dalam traversal dari titik di manatitik akhir bergabung, jawaban yang salah diberikan(overflow).

Gambar 9.6 menunjukkan jalur data dan elemenkeras yang
diperlukan untuk menyelesaikan penambahan dan pengurangan.Unsur sentral adalah penambah biner, dimana disajikan
dua nomor untuk penjumlahan dan menghasilkan jumlah dan indikasi overflow. Penambah bine rmenambahkan dua angkasebagai unsigned integer.
(Implementasi logika seorang penambah
diberikan dalam Lampiran A.) Untuk
itu,dua nomor di sajikan untuk penambah dari dua
register, yang ditunjuk dalam hal ini sebagai registerA
dan B. Hasilnya dapat disimpan dalam salah satu register
atau dalam ketiganya. Indikasi overflow disimpan dalam bendera overflow1-bit(0=
tidakoverflow:1 =overflow). Untuk pengurangan,
pengurang(Register B) dilewatkan melalui dua komplemen sehingga komplemennya
disajikan untuk penambah.
Perkalian
Dibandingkan dengan
penambahan dan pengurangan, perkalian merupakan operasi yang kompleks, baik
yang dilakukan pada perangkat keras atau perangkat lunak.Sebuah algoritma telah
digunakan dalam berbagai komputer.Tujuannya adalah untuk memberikan pembaca
beberapa merasa untuk jenis pendekatan biasanya diambil. Kita mulai dengan
masalah sederhana perkalian dua unsigned (nonnegatif) interegrs, dan kemudian
kita melihat salah satu teknik yang paling umum untuk perkalian jumlah dalam
representasi komplemen berpasangan.

Gambar
9.7ilustratedperbanyakanintereger binerunsigned,
sebagaimana bisa dilakukan dengan
menggunakankertaspensil.Beberapapengamatanpentingdapatdibuat.




Coba dengan pensil dan kertas,ada beberapa
hal yangbisa kita lakukan untukmembuatperkaliankomputerisasiyang lebih
efisien.Pertama, kitadapat melakukanpenambahanberjalanpada produk sebagiandaripadamenunggusampaiakhir.Ini
menghilangkan kebutuhanuntukpenyimpanandarisemuaproduksebagian:
registersedikitdiperlukan. Keduakita
dapatmenghematwaktupadagenerasiproduksebagian.Untuk setiap10multiplier,
tambahkan sebuahdanoperasi pergeseranyang diperlukan: 0tapiuntukmasing-masing,hanyapergeserandiperlukan.
Gambar9.8amenunjukkansebuah
implementasimungkinmenggunakanlangkah-langkah ini.Multiplierdanmultiplicanddimuatkeregisteruntuk(QdanM).Sebuah
registerketiga,registerA,juga dibutuhkandanpada awalnya diaturke 0.Juga adasebuah1
bitregister C,diinisialisasike 0,
yang memegangmembawapotensibityang dihasilkanSelainbentuk.

Pengoperasianmultiplieradalahberikut.Kontrollogikamembacabit
darisatumultipliersaatjikaQ0 adalah 1, maka multiplicand ditambahkanke register
Adanhasilnyadisimpan di A, dengan bit
register C yang digunakanuntuk overflow. Para semua bit dari Register C, A, danQdialihkanke
bit yang benar, sehingga bit C masukke Qn-1, Aqmasukkedalam Qs-1. Dan Qq
hilang.Jika Q0 adalah 0, dan sebagainya penjumlahan dilakukan,
hanya shift. Proses ini diulang untuk setiap bit multiplier asli. Produk yang
dihasilkan sedikit 2n terkandung dalam register A dan Q. Sebuah flowchart
operasi ditunjukkan pada Gambar 9.9. dan contoh diberikan dalam Gambar 9.8b.
Perhatikan bahwa pada siklus kedua, ketikabis multiplier adalah 0,
tidakadaoperasitambahan.

Kita telahmelihatbahwapenjumlahan dan
pengurangandapat dilakukan padanomor dalamnotasikomplemenduaitudengan
memperlakukanmereka sebagaiunsigned integer. Mempertimbangkan
1001

1100
Jikanomor
inidianggapunsigned integer, maka kita menambahkan9 (1001) ditambah 3(0011)
untuk mendapatkan 12 (1100). Sebagai
bilangan bulatpelengkapberpasangan,kita menambahkan-7(1001) sampai 3 (0011)
untuk mendapatkan -4(1100).
skemasederhana ini tidakakan bekerja untukmultipilcation. Untuk melihatini, pikirkan kembaliGambar9.7.dikalikan11 (1011)
dengan 13 (11001) untuk mendapatkan 143(10.001.111).
Jikakita menafsirkanini sebagaipelengkapnomordua,kita
memiliki-5(1011) -3 kali(1101) sama-113(10001111). contoh inimenunjukkanbahwa
perkalianmaju straight tidak akan bekerjajika
salahmultiplicandataumultipliernegatif.Untuk membenarkan statement ini,
kitaharus kembaliuntuk mencari 9.7dan menjelaskanapa yang sedang dilakukandalam
hal operasi.Ingatlahbahwa setiapbilangan binerunsigneddapat dinyatakan
sebagaijumlah daripangkat 2.Demikian
Selanjutnya,
perkalianbilanganbiner dengan 2n ini accumplished dengan menggeser nomor yang
ke n bit kiri. Dengan dalam pikiran, Gambar 9.10 Gambar perombakan 9.7untukmembuatgenerasiproduksebagiandenganperkalianeksplisit.Perbedaan
hanya pada Gambar 9.10
adalahbahwadalammengakuibahwaproduksebagianharusdipandangsebagai 2n-bit nomor
yang dihasilkandari multiplicand n-bit.
Dengandemikian,sebagaiunsigned integer,
4-bit1011isi multiplicanddisimpan dalamkata8-bit sebagai
00001011. Setiapproduksebagian (selainituselama 20) terdiri adalah nomor bergeserke
kiri, dengan kosongdi sebelah kanandiisi dengannol(misalnya,
pergeserankiridarihasiltempat00101100).
Sekarangkitadapatmenunjukkanbahwa
perkalian straight forwardtidak akan bekerja jikamultiplicandadalah
negatif.Masalahnyaadalah bahwa setiapkontribusinyadarimultiplicand negatif sebagaiproduksebagianharusangka
negative padabidang2n-bit: bittandadariproduksebagianharusberbaris.Hal
ini ditunjukkanpada Gambar9.11.
Yang menunjukkan
bahwa perkalian dari 1001 dengan 0011. Jika diperlakukan sebagai unsigned
integer, perbanyakan dari 9 x 3 = 27 hasil sederhana. Namun, jika 1001
ditafsirkan sebagai nilai pelengkapberpasangan -7,
makasetiapproduksebagianharusberpasangan negatif pelengkap jumlah 2n (8) bit,
seperti yang ditunjukkan pada Gambar 9.11b. Catatan bahwa
inidilakukandenganpelapiskeluarsetiapsebagiankekiridengan 1s biner.
Jika multiplier
negatif, perkalian strightforward juga tidak akan bekerja alasannya adalah
bahwa bit multiplier tidak lagi sesuai dengan pergeseran atau perkalian yang
harus terjadi. Jikakitahanyamengambilproduksebagianberdasarkansetiap posisi bit,
kitaakanmemilikikorespondensiberikut:
Bahkan,apa yang
diinginkanadalah -(2 1 + 2 0). Jadimultiplierini
tidak dapatdigunakan secara langsungdengan carakita telahmendeskripsikan.
Adasejumlah cara keluar dari ini.
Satu akanmengkonversikeduamultiplier danmultiplicanduntukangka
positif, melakukan perkalian, dan
kemudian mengambilpelengkapberpasangandarihasilnyajika dan hanyajika tandadari
dua angkaasliberbeda. Pelaksanalebih sukamenggunakan
teknikyang tidak memerlukanlangkahtransformasiakhir.Salah satu yang
palingsering digunakan adalahalgoritmaBooth.Algoritma
inijuga memiliki manfaatmempercepatprosesperkalian,relatif terhadappendekatan
yang lebihmudah
Algoritma Booth digambarkan pada
gambar 9.12dan dapat dilihat sebagai berikut.Seperti sebelumnya, multiplier
dan multiplic and ditempatkan dalam register Q danM, respetively. Ada juga1-bit register ditempatkan secara
logis di sebelah kananleast significant bit(Q0) dari
registerQ danditentukannyaQ-1: penggunaannyadijelaskan
kemudian. Hasilperkalianakan muncu ldalam daftar A dan Q,A
dan Q-1 diinisialisasi ke 0.Seperti sebelumnya,kontrol
logikascanbitmultipliersatu per satu. Sekarang,
sepertisetiap bit diperiksa, bit ke
kanan untuk diperiksa.Jika kedua bit adalah sama (1-1 atau 0-0), maka semua bitdari A, Q, dan Q-1 mendaftar dialihkan ke bit 1 kanan. Jika
bit keduanya berbeda, dari multiplic and ditambahkan ke atau
dikurangkan dari register A.Tergantung pada apakah kedua bit 0-1atau 1-0.penambahan
atau pengurangan, pergeseran benar terjadi.Dalam
kemudahan baik, pergeseran yang benar adalah seperti bahwa
bit paling lieft dari A,yaitu angka 1, tidak
hanya bergeser ke-1 Sebuah tetapi tetap di An-1. Ini diperlukan untuk melestarikan tanda-tanda nomor diA danT .Hal
ini dikenal sebagai pergeseran aritmatika,karena mempertahankan bit tanda.
Gambar 9.13
menunjukkan urutan peristiwa dalam algoritma Booth untuk perkalian dari 7
dengan 3.Lebih kompak, operasi beberapa digambarkan pada Gambar
9.14a.yangpertama dari 9.14a Gambar diberikan contoh-contoh lain dari
algoritma. Seperti dapat dilihat, ia bekerja dengan kombinasi angka positif dan
negatif. Perhatikan Olso efisiensi algoritma. Blok 1s atau 0s yang melewatkan
lebih, dengan rata-rata hanya satu penambahan atau pengurangan per blok.
Mengapa kerja
algoritma Booth?Pertimbangkan pertama perawatan seorang tiplier positif. Secara
khusus, mempertimbangkan multiplier positif consicting dari satu blok dari 1s
dikelilingi oleh 0s (misalnya 00011110.). Seperti kita ketahui, perkalian dapat
dicapai dengan menambahkan salinan tepat bergeser dari multiplicand:


Jumlah operasitersebut dapatdikurangi
menjadi duajikakita mengamati bahwa



AlgoritmaBoothsesuai
denganskema inidengan melakukanpenguranganketika1pertama
dariblokditemui(1-0)dantambahanketikaujung blokditemui(0-1).

Untuk menunjukkan
bahwaskemayang sama bekerjauntukmultipliernegatif, kitaperlu mengamatiberikut.X
adalahangka negatif dalam notasipelengkapberpasangan:

Lalunilai Xdapat dinyatakan
sebagaiberikut:


Bitpaling kiri dariX adalah1, karenaX adalahnegatif.Asumsikan bahwa0paling kiri dalam posisi.Jadi, X adalah dalam bentuk:
Maka nilai dariX adalah

Dari Persamaan (9,3), kita
dapat mengatakan bahwa
menata
ulang,
Kita bisa
melihat bahwa algoritma Booth sesuai dengan skema ini.Ia melakukan pengurangan
ketika pertama ditemui 1 (1-0), tambahan ketika (01) ditemui, dan akhirnya lain
pengurangan ketika 1 pertama dari blok berikutnya dari 1s ditemui. Dengan
demikian, algoritma Booth melakukan penambahan lebih sedikit suatu pengurangan yang
dari algoritma yang lebih mudah.
ARITMATIKA INTEGER
Bagian ini akan membahas fungsi-fungsi aritmatik bilangan dalam representasi komplemen dua
a. Negasi
Pada notasi komplemen dua, pengurangan sebuah bilangan integer dapat dibentuk dengan menggunakan aturan berikut :
Anggaplah komplemen Boolean seluruh bit bilangan integer (termasuk bit tanda)
Perlakukan hasilnya sebagai sebuah unsigned binary integer, tambahkan 1.
Misal : 18 = 00010010 (komplemen dua)
Perlakukan hasilnya sebagai sebuah unsigned binary integer, tambahkan 1.
Misal : 18 = 00010010 (komplemen dua)
Representasi Integer Positif, Negatif Dan Bilangan 0
Bila sebuah bilangan integer positif dan negatif yang sama direpresentasikan (sign-magnitude), maka harus ada representasi bilangan positif dan negatif yang tidak sama.
Bila hanya terdapat sebuah representasi bilangan 0 (komplemen dua), maka harus ada representasi bilangan positifdan negatif yang tidak sama.
Pada kasus komplemen dua, terdapat representasi bilangan n-bit untuk -2n, tapi tidak terdapat untuk 2n.
Aturan Untuk Mendeteksi Overflow
1. Aturan Overflow :
Bila dua buah bilangan ditambahkan, dan keduanya positif atau keduanya negatif, maka akan terjadi overflow bila dan hanya bila hasilnya memiliki tanda yang berlawanan, seperti pada contoh halaman 18 ((e),(f))
2. Aturan Pengurangan :
Untuk mengurangkan sebuah bilangan (subtrahend) dari bilangan lainnya (minuend), anggaplah komplemen dua subtrahend dan tambahkan hasilnya ke minuend.
b. Pembulatan
Teknik pembulatan yang sesuai dengan standard IEEE adalah sebagai berikut :
Pembulatan ke Bilangan Terdekat : Hasil dibulatkan ke bilangan terdekat yang dapat direpresentasi.
Pembulatan Ke Arah : Hasil dibulatkan ke atas ke arah tak terhingga positif.
Pembulatan Ke Arah : Hasil dibulatkan ke atas ke arah tak terhingga negatif.
Pembulatan Ke Arah 0 : Hasil dibulatkan ke arah 0
FLOATING POINT REPRESENTATION
Dalam komputasi floating point menjelaskan metode mewakili perkiraan dari sejumlah nyata dalam cara yang dapat mendukung berbagai nilai . Jumlahnya , secara umum , mewakili sekitar untuk tetap jumlah digit yang signifikan ( mantissa ) dan ditingkatkan menggunakan eksponen .
Dengan asumsi bahwa resolusi terbaik adalah di tahun cahaya , hanya 9 desimal yang paling signifikan digit materi , sedangkan sisanya 30 digit membawa suara murni , dan dengan demikian dapat dengan aman dijatuhkan. Ini merupakan penghematan dari 100 bit penyimpanan data komputer . Alih-alih dari 100 bit , jauh lebih sedikit digunakan untuk mewakili skala ( eksponen ) , misalnya 8 bit atau 2 digit desimal .
Istilah floating point mengacu pada fakta bahwa nomor itu radix point ( titik desimal , atau , lebih umum pada komputer , titik biner ) dapat “mengambang” , yang , dapat ditempatkan di manapun relatif terhadap angka yang signifikan dari nomor tersebut. Posisi ini diindikasikan sebagai komponen eksponen dalam representasi internal , dan floating point sehingga dapat dianggap sebagai realisasi komputer notasi ilmiah .
Selama bertahun-tahun , berbagai representasi floating-point telah digunakan dalam komputer . Namun, sejak tahun 1990 , representasi paling sering ditemui adalah bahwa didefinisikan oleh IEEE 754 standar . Dalam notasi ilmiah , jumlah yang diberikan ditingkatkan oleh kekuatan 10 sehingga terletak dalam kisaran tertentu – biasanya antara 1 dan 10 , dengan titik radix muncul segera setelah angka pertama . The faktor skala , sebagai kekuatan sepuluh , kemudian ditunjukkan secara terpisah pada akhir nomor . Misalnya, periode revolusi bulan Jupiter Io adalah 152853.5047 detik , nilai yang akan diwakili dalam notasi ilmiah standar – bentuk sebagai 1,528535047 × 105 detik .
Representasi floating-point mirip dalam konsep notasi ilmiah . Logikanya , angka floating -point terdiri dari:
Selama bertahun-tahun , berbagai representasi floating-point telah digunakan dalam komputer . Namun, sejak tahun 1990 , representasi paling sering ditemui adalah bahwa didefinisikan oleh IEEE 754 standar . Dalam notasi ilmiah , jumlah yang diberikan ditingkatkan oleh kekuatan 10 sehingga terletak dalam kisaran tertentu – biasanya antara 1 dan 10 , dengan titik radix muncul segera setelah angka pertama . The faktor skala , sebagai kekuatan sepuluh , kemudian ditunjukkan secara terpisah pada akhir nomor . Misalnya, periode revolusi bulan Jupiter Io adalah 152853.5047 detik , nilai yang akan diwakili dalam notasi ilmiah standar – bentuk sebagai 1,528535047 × 105 detik .
Representasi floating-point mirip dalam konsep notasi ilmiah . Logikanya , angka floating -point terdiri dari:
1. Sebuah ditandatangani ( yang berarti positif atau negatif ) string yang digit panjang diberikan dalam dasar yang diberikan ( atau radix ) . String ini digit disebut sebagai significand , koefisien atau , lebih jarang , mantissa ( lihat di bawah ) . Panjang significand menentukan presisi yang nomor dapat diwakili. Radix Posisi titik diasumsikan untuk selalu berada di suatu tempat dalam significand – sering hanya setelah atau sebelum yang paling signifikan digit , atau di sebelah kanan paling kanan (paling signifikan ) digit . Artikel ini umumnya akan mengikuti konvensi bahwa titik radix hanya setelah paling signifikan ( paling kiri ) digit .
2. Sebuah integer ditandatangani eksponen , juga disebut sebagai karakteristik atau skala , yang memodifikasi besarnya nomor .
Untuk memperoleh nilai dari angka floating-point , seseorang harus kalikan significand dengan dasar pangkat dari eksponen , setara dengan menggeser radix poin dari posisi tersirat oleh sejumlah tempat sama dengan nilai eksponen – ke kanan jika eksponen positif atau ke kiri jika eksponen negatif.
Menggunakan basis- 10 ( notasi desimal akrab ) sebagai contoh , jumlah 152853,5047 , yang memiliki sepuluh angka desimal presisi , diwakili sebagai significand 1,528535047 bersama dengan eksponen 5 ( jika posisi tersirat dari radix point setelah pertama yang paling signifikan digit, di sini 1 ). Untuk menentukan nilai yang sebenarnya , titik desimal ditempatkan setelah digit pertama significand dan hasilnya dikalikan dengan 105 untuk memberikan 1,528535047 × 105 , atau 152853,5047. Dalam menyimpan nomor tersebut , dasar ( 10 ) tidak perlu disimpan , karena akan sama untuk seluruh kisaran angka didukung , dan dengan demikian dapat disimpulkan .
Secara simbolis , ini adalah nilai akhirdimana adalah nilai significand ( setelah memperhitungkan tersirat radix point) , B adalah dasar, dan E adalah eksponen.
ekuivalen : di mana s di sini berarti nilai integer dari seluruh significand , mengabaikan semua titik desimal tersirat , dan p adalah – presisi jumlah digit di significand tersebut .
Secara historis , beberapa pangkalan nomor telah digunakan untuk mewakili angka floating -point , dengan basis 2 ( biner ) yang paling umum, diikuti oleh basis 10 ( desimal ) , dan varietas yang kurang umum lainnya , seperti basis 16 ( notasi heksadesimal ) , sebagai serta beberapa yang eksotis seperti 3 (lihat Setun ) .
Angka floating-point adalah bilangan rasional karena mereka dapat direpresentasikan sebagai salah satu bilangan bulat dibagi dengan yang lain . Misalnya 1,45 × 103 adalah (145 /100) * 1000 atau 145000/100 . Dasar namun menentukan pecahan yang dapat diwakili . Misalnya , 1/ 5 tidak dapat diwakili tepat sebagai angka floating-point menggunakan basis biner tetapi dapat diwakili tepat menggunakan basis desimal ( 0,2 , atau 2 × 10-1. Namun 1/3 tidak dapat diwakili tepat oleh salah biner ( 0,010101 … ) atau desimal ( 0,333 ./ ) , tetapi dalam basis 3 itu adalah sepele ( 0,1 atau 1 × 3-1 ) .
Untuk memperoleh nilai dari angka floating-point , seseorang harus kalikan significand dengan dasar pangkat dari eksponen , setara dengan menggeser radix poin dari posisi tersirat oleh sejumlah tempat sama dengan nilai eksponen – ke kanan jika eksponen positif atau ke kiri jika eksponen negatif.
Menggunakan basis- 10 ( notasi desimal akrab ) sebagai contoh , jumlah 152853,5047 , yang memiliki sepuluh angka desimal presisi , diwakili sebagai significand 1,528535047 bersama dengan eksponen 5 ( jika posisi tersirat dari radix point setelah pertama yang paling signifikan digit, di sini 1 ). Untuk menentukan nilai yang sebenarnya , titik desimal ditempatkan setelah digit pertama significand dan hasilnya dikalikan dengan 105 untuk memberikan 1,528535047 × 105 , atau 152853,5047. Dalam menyimpan nomor tersebut , dasar ( 10 ) tidak perlu disimpan , karena akan sama untuk seluruh kisaran angka didukung , dan dengan demikian dapat disimpulkan .
Secara simbolis , ini adalah nilai akhirdimana adalah nilai significand ( setelah memperhitungkan tersirat radix point) , B adalah dasar, dan E adalah eksponen.
ekuivalen : di mana s di sini berarti nilai integer dari seluruh significand , mengabaikan semua titik desimal tersirat , dan p adalah – presisi jumlah digit di significand tersebut .
Secara historis , beberapa pangkalan nomor telah digunakan untuk mewakili angka floating -point , dengan basis 2 ( biner ) yang paling umum, diikuti oleh basis 10 ( desimal ) , dan varietas yang kurang umum lainnya , seperti basis 16 ( notasi heksadesimal ) , sebagai serta beberapa yang eksotis seperti 3 (lihat Setun ) .
Angka floating-point adalah bilangan rasional karena mereka dapat direpresentasikan sebagai salah satu bilangan bulat dibagi dengan yang lain . Misalnya 1,45 × 103 adalah (145 /100) * 1000 atau 145000/100 . Dasar namun menentukan pecahan yang dapat diwakili . Misalnya , 1/ 5 tidak dapat diwakili tepat sebagai angka floating-point menggunakan basis biner tetapi dapat diwakili tepat menggunakan basis desimal ( 0,2 , atau 2 × 10-1. Namun 1/3 tidak dapat diwakili tepat oleh salah biner ( 0,010101 … ) atau desimal ( 0,333 ./ ) , tetapi dalam basis 3 itu adalah sepele ( 0,1 atau 1 × 3-1 ) .
Kesempatan di mana ekspansi terbatas terjadi tergantung pada dasar dan faktor utama, seperti yang dijelaskan dalam artikel tentang Notasi Positional, Cara di mana significand tersebut , eksponen dan tanda bit secara internal disimpan di komputer sangat tergantung dari implementasi .
Secara Umum format IEEE dijelaskan secara rinci nanti dan di tempat lain , tetapi sebagai contoh , dalam representasi ( 32 -bit ) floating-point presisi tunggal biner p = 24 dan seterusnya significand adalah string dari 24 bit . Misalnya , jumlah π pertama 33 bit adalah 11001001 00001111 11011010 10100010 0 . Mengingat bahwa bit -24 adalah nol , pembulatan sampai 24 bit dalam mode biner berarti menghubungkan bit -24 dengan nilai 25 yang menghasilkan 11.001.001 00.001.111 11.011.011 . Ketika ini disimpan menggunakan pengkodean IEEE 754 , ini menjadi significand dengan e = 1 (di mana s diasumsikan memiliki titik biner di sebelah kanan bit pertama ) setelah kiri penyesuaian ( atau normalisasi ) selama memimpin atau tertinggal nol terpotong harus ada apapun .
Floating Point Arithmetic
Sistem penempatan titik desimal dengan cara membagi word menjadi dua bagian. Satu bagian berisi angka pecahan, sebagian lainnya merupakan eksponen dari sepuluh. Posisi efektif dari titik desimal akan berubah ketika eksponennya diubah. Sistem ini digunakan untuk menyatakan hasil perhitungan yang sangat besar atau sangat kecil.
1. Bentuk Bilangan Floating Point
Bilangan Floating Point memiliki bentuk umum : + m * b e , dimana m (disebut juga dengan mantissa), mewakili bilangan pecahan dan umumnya dikonversi ke bilangan binernya, e mewakili bilanganexponentnya, sedangkan b mewakili radix (basis) dari exponent.
2. Macam-macam
bentuk bilangan floating point; Untuk mempermudah operasi bilangan floating point dan menambah tingkat presisinya, maka bilangan tersebut dibuat dalam bentuk ternormalisasi (normalized forms). Suatu bilangan floating point telah ternormalisasi jika most significant bit (MSB) dari mantissanya adalah 1. Karena itu, diantara ketiga bentuk diatas dari bilangan 1,75, maka bentuk yang telah ternormalisasi adalah bentuk yang paling atas, dan disarankan untuk digunakan. Karena nilai MSB dari bilangan Floating Point yang telah ternormalisasi selalu 1, maka bit ini tidak disimpan, sehingga nilai mantissa yang tersimpan adalah 1.m. Sehingga untuk bilangan floating point bukan nol yang ternormalisasi memiliki bentuk (1) S * (1.m) * 2 e128
3. Aritmetika Floating Point Penjumlahan / Pengurangan
Hal yang sulit dari penjumlahan dua bilangan exponent adalah jika bilangan bilangan tersebut memiliki bentuk exponensial yang berbeda. Unutk memecahkannya, maka sebelum ditambahkan bilangan exponensialnya harus disetarakan terlebih dahulu, atau bilangan dengan nilai exponent lebih kecil disamakan dulu ke bilangan exponent yang sama dengan bilangan lain.
Langkah-langkah yang dilakukan untuk menambah/mengurangkan dua bilangan floating point:
1. Bandingkan kedua bilangan, dan ubah ke bentuk yang sesuai pada bilangan dengan nilai exponensial lebih kecil
2. Lakukan operasi penjumlahan / pengurangan
3. Lakukan normalisasi dengan ’menggeser’ nilai mantissa dan mengatur nilai exponensialnya
Contoh : Jumlahkan dua bilangan floating point 1,1100 * 2 4 dan 1,1000 * 2 2
1. Sesuaikan : 1,1000 * 2 2 diubah menjadi 0,0110 * 2 4
2. Jumlahkan : hasil penjumlahan 10,0010 * 2 4
3. Normalisasi : hasil setelah dinormalisasi adalah 0,1000 * 2 6 ( dianggap bit
yang diijinkan setelah koma adalah 4)
4. Perkalian
Perkalian dari dua bilangan floating point dengan bentuk X = mx * 2 a dan Y = mx * 2 b setara dengan X * Y = (mx * my) * 2 a+b.
Algoritma umum untuk perkalian dari bilangan floating point terdiri dari tiga langkah:
1. Hitung hasil exponensial dengan menjumlahkan nilai exponent dari kedua
bilangan
2. Kalikan kedua bilangan mantissa
3. Normalisasi hasil akhir
Contoh : Perkalian antara dua bilangan floating point X = 1,000 * 2 2
dan Y = 1,010*2 1
1. Tambahkan bilangan exponennya : 2+ (1) = 3
2. Kalikan mantissa: 1,0000 * 1,010 = 1,010000 Hasil perkaliannya adalah 1,0100 * 2 3
5. Pembagian
Pembagian dari dua bilangan floating point dengan bentuk X = mx * 2 a dan Y = mx * 2 b setara dengan X / Y = (mx / my) * 2 ab.
Algoritma umum untuk pembagian dari bilangan floating point terdiri dari tiga langkah :
1. Hitung hasil exponensial dengan mengurangkan nilai exponent dari kedua bilangan
2. Bagi kedua bilangan mantissa
3. Normalisasi hasil akhir
Contoh : Pembagian antara dua bilangan floating point X = 1,0000 * 2 2 dan Y = 1,0100 * 2 1
1. Kurangkan bilangan exponennya : 2 – (1) = 1
2. Bagi mantissa: 1,0000 / 1,0100 = 0,11015
Hasil pembagiannya adalah 0,1101 * 2 1
6. Floating Point standard IEEE
IEEE membuat dua bentuk bilangan floating point standard. Bentuk basic dan bentuk extended. Pada tiap bentuk tersebut, IEEE menentukan dua format, yaitu singleprecision dan double precision format.Single precision format adalah model 32bit sedangkan double precision format adalah 64bit. Padasingle extended format setidaknya menggunakan 44 bit, sedangkan pada double extended formatsetidaknya menggunakan 80 bit.
IEEE single precision Format
Jika jumlah bit bilangan exponent adalah 8, maka nilainya memiliki 256 kombinasi, diantara angkaangka tersebut, dua kombinasi digunakan sebagai nilai khusus:
1. e = 0 bernilai nol (jika m = 0) dan nilai terdenormalisasi (jika m ≠ 0)
2. e = 255 bernilai + ∞ (jika m = 0) dan nilai tak terdefinisi (jika m ≠ 0)
m = 0 m ≠ 0
e = 0 0 Terdenormalisasi
e = 255 + ∞ Tidak Terdefinisi
IEEE Double Precision Format
Bentuk ini memiliki kolom exponent 11 bit dan kolom nilai mantissa sebesar 52 bit.
IEEE double precision format
Karakteristik SinglePrecision
Double Precision
Panjang dalam bits 32 64
Bagian pecahan dalam bits 23 52
Bit tersembunyi 1 1
Panjang Exponent dlm bits 8 11
Bias 127 1023
Range 2 128 ≈ 3,8 x 10 38 2 1024 ≈ 9,0 x 10 307
Nilai ternormalisasi terkecil 2 126
≈ 10 38
2 1022
≈ 10 308
Video floating point representations and arithmetic;
kesimpulan:
unit arimatik dan logik salah satu bagian penting dalam komputer yang dibuat untuk tujuan umum (general purpose). bagian ini yang membedakan komputer spesifik aplikasi tertentu dan komputer tujuan khusus(embedded system) dalam komputer tujuan umum, unit aritmetik dan logik dibuat dengan fleksible sehingga mampu melakukan berbagai proses yang diperlukan oleh prosessor.
ALU bekerja sama dengan memori, dimana hasil dari perhitungan di dalam ALU di simpan ke dalam memori. Perhitungan dalam ALU menggunakan kode biner, yang merepresentasikan instruksi yang akan dieksekusi (opcode) dan data yang diolah (operand). ALU biasanya menggunakan sistem bilangan biner (two’s complement). ALU mendapat data dari register. Kemudian data tersebut diproses dan hasilnya akan disimpan dalam register tersendiri yaitu ALU. ALU melakukan operasi arithmatika dengan dasar pertambahan, sedang operasi arithmatika yang lainnya, seperti pengurangan, perkalian, dan pembagian dilakukan dengan dasar penjumlahan. sehingga sirkuit elektronik di ALU yang digunakan untuk melaksanakan operasi arithmatika ini disebut adder. tugas utama dari ALU (Arithmetic And Logic Unit) adalah melakukan semua perhitungan aritmatika atau matematika yang terjadi sesuai dengan instruksi program.
unit arimatik dan logik salah satu bagian penting dalam komputer yang dibuat untuk tujuan umum (general purpose). bagian ini yang membedakan komputer spesifik aplikasi tertentu dan komputer tujuan khusus(embedded system) dalam komputer tujuan umum, unit aritmetik dan logik dibuat dengan fleksible sehingga mampu melakukan berbagai proses yang diperlukan oleh prosessor.
ALU bekerja sama dengan memori, dimana hasil dari perhitungan di dalam ALU di simpan ke dalam memori. Perhitungan dalam ALU menggunakan kode biner, yang merepresentasikan instruksi yang akan dieksekusi (opcode) dan data yang diolah (operand). ALU biasanya menggunakan sistem bilangan biner (two’s complement). ALU mendapat data dari register. Kemudian data tersebut diproses dan hasilnya akan disimpan dalam register tersendiri yaitu ALU. ALU melakukan operasi arithmatika dengan dasar pertambahan, sedang operasi arithmatika yang lainnya, seperti pengurangan, perkalian, dan pembagian dilakukan dengan dasar penjumlahan. sehingga sirkuit elektronik di ALU yang digunakan untuk melaksanakan operasi arithmatika ini disebut adder. tugas utama dari ALU (Arithmetic And Logic Unit) adalah melakukan semua perhitungan aritmatika atau matematika yang terjadi sesuai dengan instruksi program.
Sumber:
http://iandoank.blogspot.com/2007/12/aritmatika-komputer.html
http://komputer.yn.lt/adalah/?arti=Floating%20Point%20Arithmetic
http://listiyohany.blogspot.com/2013/01/io-terprogram.html
http://komputer.yn.lt/adalah/?arti=Floating%20Point%20Arithmetic
http://listiyohany.blogspot.com/2013/01/io-terprogram.html
No comments:
Post a Comment