Anda di halaman 1dari 13

10.

1 THE ARITHMETIC AND LOGIC UNIT

ARITHMATIC LOGICAL UNIT (ALU), adalah salah satu bagian/komponen dalam


sisitem komputer yang berfungsi untuk melakukan operasi/hitungan aritmatika dan logika
(Contoh operasi artmatika adalah operasi penjumlahan dan pengurangan) sedangkan contoh
operasi logika adalah logika and dan or. ALU bekerja bersama sama memori, dimana hasil
dari perhitungan di dalam ALU di simpan ke dalam memori.

Tugas utama dari ALU adalah melakukan semua perhitungan aritmatika atau
matematika yang terjadi sesuai dengan intruksi program.

a. Cara Kerja ALU

1. Penunjuk intruksi mengarahkan Fetch Intruksi ke Penampungan instruksi di memori.

2. Kemudian ALU mengerjakan perintah yang diminta intruksi seperti : menambah data,
Membagi data, atau memanipulasi data yang ada.

3. Processor akan menerjemahkan dan mengerjakan intruksi, unit kontrol memberitahukan


Fetch intruksi untuk menangkap intruksi berikutnya di memori.

10.2 INTEGER REPRESENTATION

Dalam sistem bilangan biner , semua bilangan dapat direpresentasikan dengan hanya
menggunakan bilangan 1, 0, tanda minus, dan tanda titik.
Namun untuk keperluan penyimpanan dan pengolahan komputer, kita tidak perlu
menggunakan tanda menggunakan tanda minus dan titik. Hanya bilangan biner (0 dan 1)
yang dapat merepresentasikan bilangan. Bila kita hanya memakai integer non-negatif, maka
representasinya akan lebuh mudah. Sebuah word 8-bit dapat digunakan untuk
merepresentasikan bilangan 0 hingga 255. Misalnya:

00000000= 0
00000001= 1
00101001 = 41
10000000 = 128
11111111= 225

Umumnya bila sebuah rangkaian n-bit bilangan biner an–1an-2…a1a0 akan


diinterpretasikan sebagai unsigned integer A.

SIGN MAGNITUDE

Apabila bit paling kiri sama dengan 0 suatu bilangan adalah positif. Bila bit yang
paling kiri sama dengan 1 bilangan bernilai negatif.

CONTOH :
+ 18 = 00010010
– 18 = 10010010

KONVERSI ANTARA PANJANG BIT YANG BERLAINAN

Kadang-kadang kita perlu mengambil sebuah integer n bit dan menyimpannya di


dalam m bit, dengan m > n. Pada notasi sign-magnitude mudah dilaksanakan: cukup
memindahkan bit tanda ke posisi terkiri yang baru dan mengisinya dengan nol.
Misalnya:

+18 = 00010010 (sign-magnitude, 8 bit)


+18 = 0000000000010010 (sign-magtitude, 16 bit)
-18 = 10010010 (sign-magnitude, 8 bit)
-18 = 1000000000010010 (sign-magtitude, 16 bit)

Prosedur di atas tidak berlaku bagi integer negatif komplemen dua. Dengan memakai
contoh yang sama:

+18 = 00010010 (komplemen dua, 8 bit)


+18 = 0000000000010010 (komplemen dua, 16 bit)
-18 = 10010010 (komplemen dua, 8 bit)
-65.518 = 1000000000010010 (komplemen dua, 16 bit)

Aturan integer komplemen dua adalah untuk memindahkan bit tanda ke posisi terkiri
yang baru dan mengisinya dengan salinan-salinan bit tanda. Bilangan positif diisi dengan 0
dan bilangan negatif isi dengan 1 -18 = 10010010 (komplemen dua, 8 bit) -18 =
1111111100010010 (komplemen dua, 16 bit)

10.3 INTEGER ARITHMETIC


a. Negasi
Dalam representasi sign-magnitude, aturan untuk membentuk negasi dari bilangan
bulat sederhana ialah membalikkan tanda bit. Negasi dari integer dapat dibentuk dengan
aturan berikut:
1. Ambil pelengkap Boolean dari setiap bit integer (termasuk bit tanda). Atur masing-
masing 1 hingga 0 dan masing-masing 0 hingga 1.
2. Hasil bilangan bulat biner unsigned, menambahkan 1.

Proses dua langkah ini disebut sebagai operasi komplemen pasangan dari bilangan
bulat.
Seperti yang diharapkan, nilai negatif dari angka itu sendiri:

Kami dapat menunjukkan validitas operasi yang baru saja dijelaskan dengan
menggunakan definisi dari representasi dari dua komplemen. Sekali lagi, interpretan urutan
n-bit dari digit biner an-1 an-2 ...... a1a0 sebagai gabungan kedua bilangan bulat A, sehingga
nilainya adalah
𝑛−2
𝑛−1
𝐴 = −2 𝑎𝑛−1 + ∑ 2𝑖 𝑎𝑖
𝑖=0

Sekarang bentuk komplemen bitwise, an – 1 an – 2.....a0, dan memperlakukan ini


sebagai integer unsigned, tambahkan 1. Akhirnya, menginterpretasikan urutan n-bit dari digit
biner sebagai dua komposer integer B, sehingga nilainya adalah

Sekarang, kita ingin A = - B, yang berarti A + B = 0. Ini mudah ditunjukkan sebagai


benar:

Derivasi sebelumnya mengasumsikan bahwa pertama-tama kita dapat


memperlakukan komplemen bitwise A sebagai integer unsigned untuk tujuan menambahkan
1, dan kemudian memperlakukan hasilnya sebagai integer komplemen pasangan. Ada dua
kasus khusus yang perlu dipertimbangkan. Pertama, pertimbangkan A = 0. Dalam hal ini,
untuk representasi 8-bit:
Ada yang melakukan posisi bit paling signifikan, yang diabaikan. Hasilnya adalah
negasi 0 adalah 0, sebagaimana seharusnya.
Kasus khusus kedua merupakan masalah. Jika kita mengambil negasi dari pola bit 1 diikuti
oleh n - 1, kita mendapatkan kembali angka yang sama. Misalnya, untuk kata-kata 8-bit,

Beberapa anomali semacam itu tidak dapat dihindari. Jumlah pola bit yang berbeda
dalam kata n-bit adalah 2n, yang merupakan bilangan genap. Kami ingin mewakili bilangan
bulat positif dan negatif dan 0. Jika jumlah yang sama dari bilangan bulat positif dan negatif
diwakili (tanda besarnya), maka ada dua representasi untuk 0. Jika hanya ada satu
representasi 0 (komplemen berpasangan), maka ada jumlah yang tidak seimbang dari angka
positif dan negatif yang diwakili. Dalam kasus pasangan kata komplemen, untuk n-bit
panjang, ada representasi untuk -2n - 1 tetapi tidak untuk + 2n - 1.

b. Penambahan dan pengurangan

Tambahan dalam komplemen pasangan diilustrasikan pada Gambar 10.3.


Penambahan berlanjut seolah-olah kedua bilangan tersebut adalah bilangan bulat yang tidak
ditandatangani. Empat contoh pertama mengilustrasikan kesuksesan operasi. Jika hasil
operasinya positif, kita mendapatkan bilangan positif dalam bentuk komplemen ganda, yang
sama dengan bentuk bilangan bulat yang tidak bertanda. Jika hasil operasi negatif, kita
mendapatkan angka negatif dalam dua komplemen bentuk. Perhatikan bahwa, dalam
beberapa kasus, ada bit carry di luar ujung kata (ditunjukkan dengan bayangan), yang
diabaikan.
Pada setiap penambahan, hasilnya mungkin lebih besar daripada yang bisa dipegang
dalam ukuran kata yang digunakan. Kondisi ini disebut overflow. Ketika overflow terjadi,
ALU harus menandakan fakta ini sehingga tidak ada upaya yang dilakukan untuk
menggunakan hasilnya. Untuk mendeteksi overflow, amati aturan berikut ini:

ATURAN OVERFLOW: Jika dua angka ditambahkan, dan keduanya positif atau keduanya
negatif, maka luapan terjadi jika dan hanya jika hasilnya memiliki tanda yang berlawanan.
Gambar 10.3 Penjumlahan dalam representasi dua komplemen pasangan
Gambar 10.3 e dan f menunjukkan contoh-contoh overflow. Perhatikan bahwa
luapan dapat terjadi apakah ada carry atau tidak.
Pengurangan mudah ditangani dengan aturan berikut:
SUBTRACTION ATURAN: Untuk mengurangi satu angka (subtrahend) dari yang lain
(minuend), ambil dua komplemen (negasi) dari subtrahend dan tambahkan ke minuend.
Dengan demikian, pengurangan dicapai dengan menggunakan penjumlahan, seperti
yang diilustrasikan pada Gambar 10.4. Dua contoh terakhir menunjukkan bahwa aturan
luapan masih berlaku.

Gambar 10.4 Pengurangan dua pasangan komplemen (MS)


Gambar 10.5 Depiksi Geometri dari integer dua komplemen
Beberapa wawasan ke dalam twos komplemen penambahan dan pengurangan dapat
diperoleh dengan melihat penggambaran geometrik [BENH92], seperti yang ditunjukkan
pada Gambar 10.5. Lingkaran di bagian atas setiap bagian dari gambar dibentuk dengan
memilih segmen yang sesuai dari garis bilangan dan bergabung dengan titik akhir. Perhatikan
bahwa ketika angka-angka tersebut diletakkan pada lingkaran, pasangan pasangan mata uang
dari nomor mana pun secara horizontal berlawanan dengan angka itu (ditandai dengan garis
horizontal putus-putus). Mulai dari angka apa pun di lingkaran, kita dapat menambahkan k
positif (atau kurang k negatif) ke nomor tersebut dengan memindahkan posisi k searah jarum
jam, dan kita dapat mengurangi k positif (atau menambahkan k negatif) dari nomor itu
dengan memindahkan posisi k berlawanan arah jarum jam. Jika hasil operasi aritmatika
dalam traversal dari titik di mana titik akhir bergabung, jawaban yang salah diberikan
(overflow). Semua contoh Gambar 10.3 dan 10.4 mudah ditelusuri dalam lingkaran Gambar
10.5.
c. Perkalian
Dibandingkan dengan penambahan dan pengurangan, perkalian adalah operasi yang
rumit, baik yang dilakukan dalam perangkat keras atau perangkat lunak. Berbagai macam
algoritma telah digunakan di berbagai komputer.
UNSIGNED INTEGERS Gambar 10.7 mengilustrasikan perbanyakan bilangan bulat biner
unsigned. Beberapa pengamatan penting dapat dilakukan:
1. Perkalian melibatkan generasi produk parsial, satu untuk setiap digit dalam
pengganda. Produk parsial ini kemudian dijumlahkan untuk menghasilkan produk
akhir.
Gambar 10.6 Perkalian biner integer unsigned
2. Produk parsial mudah ditentukan. Ketika bit pengali adalah 0, produk parsial adalah
0. Ketika pengali adalah 1, produk parsial adalah multiplicand.
3. Total produk dihasilkan dengan menjumlahkan sebagian produk. Untuk operasi ini,
setiap produk parsial berturut-turut bergeser satu posisi ke kiri relatif terhadap produk
parsial sebelumnya.
4. Penggandaan dua bilangan bulat biner n-bit menghasilkan produk dengan panjang
hingga 2n bit (misalnya, 11 * 11 = 1001).
Gambar 10.7a menunjukkan kemungkinan penerapan menggunakan langkah-
langkah ini. Multiplier dan multiplicand dimuat ke dalam dua register (Q dan M). Daftar
ketiga,

(a) Blok Diagram

(b) Contoh dari gambar 10.7 (hasil di A,Q)


Gambar 10.8 Flowchart dari binari integer unsigned
tegister A, juga diperlukan dan pada awalnya diatur ke 0. Ada juga register C 1-bit,
diinisialisasi ke 0, yang menyimpan bit carry potensial yang dihasilkan dari penambahan.
Pengoperasian pengganda adalah sebagai berikut. Kontrol logika membaca bit-bit
pengali satu per satu. Jika Q0 adalah 1, maka multiplicand ditambahkan ke register A dan
hasilnya disimpan dalam register A, dengan bit C digunakan untuk overflow. Kemudian
semua bit register C, A, dan Q digeser ke bit yang tepat, sehingga bit C masuk ke A n - 1, A0
masuk ke Q n - 1 dan Q0 hilang. Jika Q0 adalah 0, maka tidak ada penambahan yang dilakukan,
cukup dengan shift. Proses ini diulang untuk setiap bit pengganda asli. Produk 2n-bit yang
dihasilkan terkandung dalam register A dan Q. Flowchart operasi ditunjukkan pada Gambar
10.9, dan contoh diberikan pada Gambar 10.8b. Perhatikan bahwa pada siklus kedua, ketika
bit pengali adalah 0, tidak ada operasi tambahan.
TWOS COMPLEMENT MULTIPLICATION Kita telah melihat bahwa penambahan dan
pengurangan dapat dilakukan pada angka-angka dalam notasi dua komplemen dengan
memperlakukan mereka sebagai bilangan bulat yang tidak bertanda. Mempertimbangkan
1001
+0011
1100
jika angka-angka ini dianggap sebagai bilangan bulat yang belum ditandatangani, maka kami
menambahkan 9 (1001) ditambah 3 (0011) untuk mendapatkan 12 (1100). Sebagai gabungan
dua bilangan bulat, kami menambahkan - 7 (1001) hingga 3 (0011) untuk mendapatkan - 4
(1100).

Gambar 10.9 Perkalian Dua Integral 4-Bit Tidak Bersertifikat Menghasilkan Hasil 8-Bit
Sayangnya, skema sederhana ini tidak akan berfungsi untuk perkalian. Untuk
melihat ini, perhatikan lagi Gambar 10.7. Kami dikalikan 11 (1011) oleh 13 (1101) untuk
mendapatkan 143 (10001111). Jika kita mengartikan ini sebagai angka komplemen pasangan,
kita memiliki - 5 (1011) kali - 3 (1101) sama dengan - 113 (10001111). Contoh ini
menunjukkan bahwa perkalian langsung tidak akan berhasil jika baik multiplicand dan
multiplier negatif. Bahkan, itu tidak akan berfungsi jika multiplicand atau multiplier negatif.
Untuk membenarkan pernyataan ini, kita perlu kembali ke Gambar 10.7 dan menjelaskan apa
yang sedang dilakukan dalam hal operasi dengan kekuatan dari 2. Ingat bahwa nomor biner
yang tidak ditandatangani dapat diekspresikan sebagai penjumlahan dari kekuatan 2. Dengan
demikian,
1101 = 1 × 23 + 1 × 22 + 1 × 20
= 23 + 22 + 20
selanjutnya, perkalian bilangan biner oleh 2n dilakukan dengan menggeser angka itu ke n bit
kiri. Dengan pemikiran ini, Gambar 10.10 mengulang Gambar 10.7 untuk membuat generasi
produk parsial dengan penggandaan eksplisit. Satu-satunya perbedaan pada Gambar 10.10
adalah ia mengakui bahwa produk parsial harus dilihat sebagai angka 2n-bit yang dihasilkan
dari n-bit multiplicand.
Jadi, sebagai integer unsigned, 4-bit multiplicand 1011 disimpan dalam 8-bit kata
sebagai 00001011. Setiap produk parsial (selain itu untuk 20) terdiri dari nomor ini bergeser
ke kiri, dengan posisi kosong di sebelah kanan diisi dengan nol (misalnya, pergeseran ke kiri
dua tempat menghasilkan 00101100).
Algoritma Booth digambarkan pada Gambar 10.12 dan dapat digambarkan sebagai
berikut. Seperti sebelumnya, multiplier dan multiplicand ditempatkan di Q dan M register,
masing-masing.

Gambar 10.10 Booth Algoritma dari integer dua komplemen


Gambar 10.11 contoh cooth algoritma (7×3)
Ada juga register 1-bit yang ditempatkan secara logis di sebelah kanan bit paling
signifikan (Q0) dari register Q dan Q-1 yang ditunjuk; penggunaannya dijelaskan segera.
Hasil perkalian akan muncul dalam register A dan Q. A dan Q -1 diinisialisasi ke 0. Seperti
sebelumnya, logika kontrol memindai bit-bit multiplier satu per satu. Sekarang, karena setiap
bit diperiksa, bit di sebelah kanannya juga diperiksa. Jika dua bit sama (1–1 atau 0-0), maka
semua bit register A, Q, dan Q -1 digeser ke kanan 1 bit. Jika dua bit berbeda, maka
multiplicand ditambahkan ke atau dikurangkan dari register A, tergantung pada apakah dua
bit adalah 0-1 atau 1-0. Setelah penambahan atau pengurangan, pergeseran yang tepat terjadi.
Dalam kedua kasus, pergeseran kanan adalah sedemikian rupa sehingga bit paling kiri dari A,
yaitu An - 1, tidak hanya digeser menjadi An - 2, tetapi juga tetap di An - 1. Ini diperlukan
untuk mempertahankan tanda nomor dalam A dan Q. Hal ini dikenal sebagai pergeseran
aritmatika, karena mempertahankan bit tanda.
Mengapa algoritme Booth berfungsi? Pertimbangkan dulu kasus pengganda positif.
Secara khusus, pertimbangkan pengganda positif yang terdiri dari satu blok 1s yang
dikelilingi oleh 0 (mis., 00011110). Seperti yang kita tahu, perkalian dapat dicapai dengan
menambahkan salinan multiplikand yang bergeser secara tepat:

Jumlah operasi semacam itu dapat dikurangi menjadi dua jika kita amati itu

Jadi produk dapat dihasilkan oleh satu tambahan dan satu pengurangan dari
multiplicand. Skema ini meluas ke sejumlah blok 1 dalam pengganda, termasuk kasus di
mana 1 tunggal diperlakukan sebagai blok.
Algoritme Booth sesuai dengan skema ini dengan melakukan pengurangan ketika
blok pertama dari blok ditemui (1–0) dan tambahan ketika akhir blok ditemui (0–1).
Untuk menunjukkan bahwa skema yang sama berfungsi untuk pengganda negatif, kita perlu
amati yang berikut ini. Misalkan X adalah angka negatif dalam notasi pelengkap pasangan:
Representasi X = {1xn – 2 x n - 3 .... x1x0}
Maka nilai X dapat dinyatakan sebagai berikut:

Pembaca dapat memverifikasi ini dengan menerapkan algoritma ke angka pada Tabel 10.2.
Bit X paling kiri adalah 1, karena X negatif. Asumsikan bahwa 0 paling kiri berada di posisi
ke-k. Jadi, X adalah bentuknya
Representasi X = {111.....10xk – 1 x k - 2 .....x1x0} (10.5)
Maka nilai X adalah

Dari Persamaan (10.3), kita dapat mengatakan itu

Menata ulang

Mensubstitusi Persamaan (10.7) ke dalam Persamaan (10.6), kita punya

Akhirnya kita dapat kembali ke algoritma Booth. Mengingat representasi X


[Persamaan (10.5)], jelas bahwa semua bit dari x0 hingga 0 yang paling kiri ditangani dengan
benar karena mereka menghasilkan semua istilah dalam Persamaan (10.8) tetapi (- 2 k + 1)
dan dengan demikian dalam bentuk yang tepat. Saat algoritmanya memindai paling kiri 0 dan
menemukan 1 (2k + 1) berikutnya, terjadi transisi 1-0 dan pengurangan mengambil place (- 2
k + 1).
d. Divisi
Divisi lebih rumit daripada perkalian tetapi didasarkan pada prinsip umum yang
sama. Seperti sebelumnya, dasar untuk algoritma adalah pendekatan kertas dan pensil, dan
operasi melibatkan pengulangan berulang dan penambahan atau pengurangan.
Gambar 10.15 menunjukkan contoh pembagian panjang bilangan bulat biner
unsigned. Ini instruktif untuk menggambarkan proses secara detail. Pertama, bit-bit dividen
diperiksa dari kiri ke kanan, sampai kumpulan bit yang diperiksa mewakili angka yang lebih
besar atau sama dengan pembagi; ini disebut sebagai pembagi bisa membagi nomor. Sampai
peristiwa ini terjadi, angka 0 ditempatkan dalam hasil bagi dari kiri ke kanan. Ketika
peristiwa terjadi, 1 ditempatkan dalam hasil bagi dan pembagi dikurangi dari dividen parsial.
Hasilnya disebut sebagai sebagian sisa.
Gambar 10.12 Contoh Divisi
Dari titik ini, pembagian mengikuti pola siklik. Pada setiap siklus, bit tambahan dari
dividen ditambahkan ke sisa sebagian sampai hasilnya lebih besar dari atau sama dengan
pembagi. Seperti sebelumnya, pembagi dikurangi dari angka ini untuk menghasilkan sisa
parsial baru. Proses berlanjut sampai semua bagian dari dividen habis.
Gambar 10.16 menunjukkan algoritma mesin yang sesuai dengan proses pembagian panjang.
Pembagi ditempatkan dalam daftar M, dividen dalam daftar Q.

Gambar 10.13 Flowchart Binari Integer Unsigned

Gambar 10.14 Contoh Restoring Twos Complement Division (7/3)


Setiap langkah, A dan Q register bersama-sama bergeser ke kiri 1 bit. M
dikurangkan dari A untuk menentukan apakah A membagi sisa sebagian. Jika ya, maka Q0
mendapat 1bit. Jika tidak, Q0 mendapat 0 bit dan M harus ditambahkan kembali ke A untuk
mengembalikan nilai sebelumnya. Hitungannya kemudian dikurangi, dan proses berlanjut
untuk n langkah. Pada akhirnya, hasil bagi adalah dalam daftar Q dan sisanya ada dalam
daftar A.
Proses ini dapat, dengan beberapa kesulitan, diperluas ke angka negatif. Kami
memberikan satu pendekatan di sini untuk menggabungkan angka dua. Contoh pendekatan
ini ditunjukkan pada Gambar 10.17
Algoritme mengasumsikan bahwa pembagi V dan dividen D positif dan bahwa | V | 6 | D |.
Jika | V | = | D |, maka hasil bagi Q = 1 dan sisanya R = 0. Jika | V | 7 | D |, lalu Q = 0 dan R =
D. Algoritma dapat diringkas sebagai berikut:
1. Masukkan pelengkap pasangan dari pembagi ke dalam register M; yaitu, register M
berisi negatif dari pembagi. Muat dividen ke A, Q register. Dividen harus dinyatakan
sebagai bilangan positif 2n-bit. Jadi, misalnya, 4-bit 0111 menjadi 00000111.
2. Shift A, Q meninggalkan posisi 1 bit.
3. Lakukan A ← A - M. Operasi ini mengurangi pembagi dari isi dari A
4. a. Jika hasilnya nonnegative (bit paling signifikan dari A = 0), kemudian atur Q 0 d 1.
b. Jika hasilnya negatif (bit paling signifikan dari A = 1), kemudian atur Q 0 d 0 dan
pulihkan nilai sebelumnya dari A
5. Ulangi langkah 2 hingga 4 sebanyak ada posisi bit di Q.
6. Sisanya adalah A dan hasil bagi di Q.

Untuk menangani angka negatif, kami mengakui bahwa sisanya ditentukan oleh:
D=Q*V+R

Anda mungkin juga menyukai