ARCHITECTURE COMPUTER Computer Arithmatic
Computer Arithmatic Proses arithmatic dalam komputer umumnya menggunakan 2 jenis bilangan yang sangat berbeda, yaitu Integer dan Floating Point. Arithmatic Logic Unit (ALU) ALU adalah bagian dari komputer yang melaksanakan proses perhitungan dan logika pada data. Semua elemen dari CPU mengirim data ke ALU untuk diproses dan mendapatkan hasilnya.
Data dari register diberikan ke ALU dan hasil dari operasi juga disimpan di register.
Alu juga merubah isi flag sebagai hasil dari operasi (misal : overflow, carry) dan isi dari flag juga bisa mempengaruhi proses di ALU. Control unit memberikan sinyal yang mengontrol operasi di ALU serta pemindahan data kedalam dan keluar dari ALU.
Integer Arithmatic Penjumlahan Sign and Magnitude Untuk proses pengurangan Sign and Magnitude (S-M) Representation dapat menghasilkan perhitungan yang salah
Contoh : (+3) + (-3) (+1) + (-6) Untuk S-M perhitungan yang benar relatif komplek, harus dilakukan perbandingan tanda dan magnitude dari dua bilangan yang akan dihitung.
1’s Complement Contoh : (+3) + (-3) (+1) + (-6)
Pada penjumlahan bilangan 1’s complement jika terjadi carry out harus ditambahkan pada hasil penjumlahan tsb (End-Arround Carry). Contoh : (-2) + (-4) (+7) + (-3)
Dari contoh diatas dapat kita lihat bahwa 1’s compl, dapat digunakan untuk operasi penjumlahan baik pada bilangan bertanda maupun tidak, tetapi mempunyai kekurangan yaitu memerlukan End-Arround Carry untuk beberapa kasus penjumlahan
2’s Complement Contoh : (-7) + (+5) (-4) + (+4) (+3) + (+4) (-4) + (-1)
Pada penjumlahan menggunakan 2’s complement jika hasilnya negatif bisa langsung terlihat, dan jika terjadi carry bit diabaikan. Over Flow Rule Jika hasil penjumlahan bilangan melebihi kapasitas bit yang tersedia maka terjadi over flow. Over flow pada penjumlahan dapat diketahui bila hasilnya mempunyai tanda yang berlawanan dengan yang seharusnya.
Contoh : (+5) + (+4) (-7) + (-6)
Pengurangan Untuk melakukan pengurangan satu bilangan (subtrahend) dari yang lain (minuend), dilakukan dengan cara 2’s complement dari subtrahend dan tambahkan pada minuend. Contoh : 2 - 7 5 - 2
Contoh : 2 - 7 5 - 2
7 – 7
Untuk penjumlahan dua bilangan dikirimkan ke adder dari 2 register (A & B). Hasilnya disimpan pada salah satu register ini. Tanda Over flow disimpan dalam Over flow Flag (OF). 0 = tidak over flow, 1 = over flow. Untuk Pengurangan maka subtrahend (reg. B) dilewatkan sebuah complementer,sehingga didapatkan harga 2’s complement-nya dan dikirim ke adder.
Perkalian Perkalian merupakan proses yang komplek dibandingkan proses penjumlahan atau pengurangan. Perkalian pada Unsign Integer Berikut contoh proses perkalian unsign binary integer menggunakan pensil dan kertas :
Contoh perkalian dengan menggunakan kertas
Dari cara perkalian di atas, beberapa hal penting yang perlu dicatat : Perkalian menggunakan partial product untuk setiap digit pada multiplier. Partial product dijumlahkan untuk menghasilkan final product. Bila multiplier bit = 0, partial product = 0. Bila multiplier bit = 1, partial product adalah multiplicantnya sendiri. Untuk penjumlahan partial product. Tiap partial product yang berurutan digeser satu posisi ke kiri terhadap partial product sebelumnya. Perkalian 2 bilangan n-bit binary integer memberikan hasil kali sampai 2n bit
Untuk meningkatkan efisiensi : Penambahan dari partial product tidak perlu menunggu sampai selesai, sehingga tidak diperlukan tempat untuk menyimpan semua partial produk, cukup beberapa register saja. Dapat menghemat waktu untuk menghasilkan partial product Untuk setiap bilangan 1 pada multiplier, diperlukan penambahan dan sihft, tetapi untuk tiap bilangan 0 hanya diperlukan sihft.
Gambar Blok Diagram Implementasi Hardware Pengalian Unsigned Binari
Gambar Flowchart Perkalian Unsigned Integer
Contoh perkalian unsigned integer : 11 x 13 = …… M = 11 Q = 13 M=1011 C A Q Proses 0 0000 1101 Init value 0 1011 1101 Add 0 0101 1110 Shift Right 0 0010 1111 Shift Right 0 1101 1111 Add 0 0110 1111 Shift 1 0001 1111 Add 0 1000 1111 Shift Right Hasil disimpan di A dan Q (8 bit) = 10001111= 143
Penjelasan proses perkalian di atas : Awalnya multiplicand dan multiplier di load pada register M dan Q. Register ke tiga (A) diinisialisasi dengan 0. Juga register C (1 bit) diisi dengan 0. Register C digunakan untuk menampung carry dari hasil penjumlahan. Control logic membaca bit-bit multiplier satu-persatu mulai dari kanan (LSB). Jika Q0 = 1, maka multiplicand ditambahkan ke register A (hasilnya disimpan di reg. A). Kemudian semua bit dari register C, A, dan Q digeser ke kanan 1 bit, sehingga bit C pindah ke bit An-1, A0 ke Qn-1, dan Q0 hilang.
Jika Q0 = 0, tidak ada proses penjumlahan, hanya ada proses pergeseran (sift) ke kanan. Proses ini diulangi untuk setiap bit multiplier. Hasil perkalian (product) terdapat pada register A dan Q.
Perkalian 2’s Complement Penjumlahan dan pengurangan bilangan sign integer dapat dilakukan dengan 2’s complement, tetapi hal ini tidak berlaku untuk perkalian. Misal 1110 (10112) dikalikan 1310 (11012) pada bilangan unsign integer akan dihasilkan 14310 (100011112). Bila bilangan di atas dianggap sebagai bilangan sign integer 2’s complement maka didapatkan : 1011 x 1101 = 10001111 -5 x -3 = -113
Perkalian tidak berhasil jika multiplicand dan/atau multiplier negatif Perkalian tidak berhasil jika multiplicand dan/atau multiplier negatif. Unsign binary number dapat dituliskan berupa penjumlahan dari pangkat 2 Contoh : 1101 = 1x23 + 1x22 + 0x21 + 1x20 = 23 + 22 + 20
Perkalian dengan bilangan biner 2n berarti menggeser bilangan ke kiri sejumlah n bit. Contoh :
Partial product harus dilihat sebagai 2n bit number yang dihasilkan dari n bit multiplicand. Unsign integer 4 bit multiplicand 1011 disimpan berupa 8 bit word 00001011. Tiap partial product (selain 20) terdiri dari bilangan tersebut yang sudah digeser ke kiri, dan posisi di sebelah kanan diisi 0 (contoh : pergeseran ke kiri dua kali menghasilkan 00101100). Sehingga jika multiplicand bernilai negatif maka perkalian dengan cara di atas jadi tidak berfungsi
Contoh :
Demikian juga jika multiplier negatif, perkalian dengan cara sebelumnya juga tidak berlaku. Terdapat beberapa cara untuk memecahkan permasalahan di atas, yang pertama adalah dengan mengubah multiplicand dan multiplier menjadi bilangan positif, melakukan perkalian dan hasilnya di-2’s complement jika tanda dari dua bilangan asalnya berbeda. Cara lain adalah dengan Booth’s Algorithm. Algoritma ini lebih cepat dan lebih disukai para ahli karena tidak membutuhkan transformasi 2’s complement.
Flowchart algoritma Booth untuk perkalian 2’s Complement
Penjelasan flow chart : Multiplicand dan multiplier ditempatkan di register M dan Q. Digunakan juga register 1 bit yang ditempatkan di sebelah kanan dari register Q dan dinamakan register Q-1. Register A dan Q-1 diinisialisasi (diisi dengan 0). Kemudian control logic menscan bit Q0 dari multiplier dan bit pada register Q-1. Jika bit tersebut sama dengan 11 atau 00, maka semua bit dari register A, Q, dan Q-1 digeser ke kanan 1 bit. Jika bit Q0 dan Q-1 sama dengan 01 maka nilai mutiplicand ditambahkan ke register A. Dan jika nilai bitnya sama dengan 10 maka nilai register A akan dikurangi dengan nilai multiplicand.
Contoh penggunaan algoritma Booth : 7 x 3 = 0111 x 0011 M = 0111 A Q Q-1 Proses 0000 0011 0 Inisialisasi 1001 0011 0 A←A-M 1100 1001 1 Sihft Right 1110 0100 1 Sihft Right 0101 0100 1 A←A+M 0010 1010 0 Sihft Right 0001 0101 0 Sihft Right Hasil perkalian di simpan di register A dan Q. Dan hasilnya adalah : 0001 01012 = 2110.
Contoh : (-7) x 3 = 1001 x 0011 M = 1001 A Q Q-1 Proses 0000 0011 0 Inisialisasi 0111 0011 0 A←A-M 0011 1001 1 Sift 0001 1100 1 Sift 1010 1100 1 A←A+M 1101 0110 0 Sift 1110 1011 0 Sift Hasil perkalian yang disimpan di register A dan Q = 1110 1011 = -21
Soal Latihan Dengan Aturan Unsigned Integer lakukanlah perkalian berikut : 8 x 3 4 x 7 3 x 9 Dengan Aturan alogoritma Booth lakukanlah perkalian berikut : 12 x -12 12 x 15 10 x 17
Terima kasih