ARITHMATIC AND LOGIC UNIT DINA JULIANA DIO PIRMANSAH MUHAMMAD FAYYIS KHAIRY Arithmatic and logic unit, 2023
2 |Dio, Dina, Fayyis ARITHMATIC AND LOGIC UNIT Istilah "komputer" berasal dari bahasa Latin "computare" yang artinya "menghitung" atau "mengkalkulasi". Sebuah komputer adalah mesin penghitung elektronik yang dapat dengan cepat menerima informasi input dalam bentuk digital. Proses tersebut dilakukan dengan menggunakan suatu program yang tersimpan di dalam memorinya (storehouse program), dan menghasilkan output berupa informasi. Arsitektur komputer berkaitan erat dengan fungsi operasional dari setiap komponen dalam sistem komputer. Di sisi lain, organisasi komputer terkait dengan unit-unit operasional dan interkoneksi mereka yang merealisasikan spesifikasi arsitektural. Sebuah sistem komputer terbentuk dari susunan atau kumpulan komponen yang saling terintegrasi dan memiliki tujuan untuk melaksanakan suatu operasi tertentu. Sistem komputer sendiri merupakan gabungan dari elemen-elemen komputer, termasuk perangkat
Arithmetic Logic Unit | 3 keras (hardware), perangkat lunak (software), dan sumber daya manusia (brainware), yang saling terhubung dan berinteraksi untuk melakukan pengolahan data dengan tujuan menghasilkan informasi sesuai dengan yang diinginkan. Proses pengolahan pada komputer melibatkan langkah-langkah dari satu tahap ke tahap berikutnya pada perangkat keras (hardware), dikendalikan oleh pemakai atau pengguna (brainware), dengan menggunakan operasi tertentu yang diimplementasikan melalui perangkat lunak (software) komputer. Tahapan ini melibatkan pengumpulan data oleh pemakai, memasukkan data tersebut ke dalam perangkat input, pengolahan data oleh perangkat proses, dan menghasilkan informasi melalui perangkat keluaran.
4 |Dio, Dina, Fayyis 1. DEFINISI ARITHMATIC AND LOGIC UNIT(ALU) Logic Unit, atau ALU, adalah komponen penting dari Central Processing Unit (CPU). Sebagian besar, ALU memiliki fungsi untuk melakukan perhitungan aritmatika dan logika. Unit sensasi perhitungan 8-bit CPU juga melakukan tugas yang sama untuk memperoses data matematika dan logika. ALU dapat melakukan penjumlahan (ADD), penjumlahan tidak bertanda (ADDU), pengurangan (SUB), dan pengurangan tak bertanda (SUBU), serta beberapa fungsi logika OR, XOR, dan AND.
Arithmetic Logic Unit | 5 Dalam desain computation sense unit 8 bit, IC adder, AND, OR, NOT, dan multiplexer digunakan. Dua switch I/O digunakan untuk input utama, dan tiga pilihan switch input digunakan untuk multiplexer. Untuk output, menggunakan media LED. Sumber daya utama rangkaian ini adalah daya 5 volt; dirancang dengan delapan rangkaian kembar yang masing-masing mewakili satu bit. Dalam pengujian kinerja computation sense unit 8-bit, dilakukan perbandingan hasil output dari ALU dengan perhitungan manual (homemade) menggunakan tiga input berbeda pada setiap fungsi. Hasil pengujian menunjukkan bahwa output ALU serupa dengan perhitungan manual pada fungsi pemanggilan input, namun terdapat kendala pada bagian proses penjumlahan yang menggunakan adder. Kata kunci yang relevan dalam konteks ini meliputi computation sense Unit 8-bit, Central Processing Unit 8-bit, dan Multiplexer. Central processing unit 8-bit, juga dikenal sebagai CPU 8-bit, adalah sebuah sirkuit elektronik
6 |Dio, Dina, Fayyis yang memproses beberapa instruksi operasi aritmatika logis, kontrol, dan input/kegiatan dengan data berukuran 8-bit. CPU 8-bit biasanya terdiri dari tiga bagian penting untuk pengoperasian, yaitu Control Unit, Unit Kecerdasan Komputer, dan Register. Control Unit pada CPU 8-bit memiliki peran utama dalam mengontrol sinkronisasi antar komponen, mengatur input affair, dan mengambil instruksi dari memori untuk diproses. Unit ini juga menyeleksi instruksi yang terkait dengan fungsi aritmatika dan logika, kemudian mengirimkannya ke computation sense Unit (ALU) untuk dijalankan. ALU sendiri bertanggung jawab atas operasi aritmatika dan logika, sementara Register digunakan sebagai penyimpanan sementara untuk data atau instruksi yang sedang diproses. Arithmetic Logic Unit (ALU) memiliki peran krusial dalam desain CPU 8-bit, karena merupakan bagian integral dari CPU8bit yang bertanggung jawab untuk melakukan perhitungan aritmatika dan logika dengan data berukuran 8-bit.
Arithmetic Logic Unit | 7 ALU memiliki fungsi utama untuk melaksanakan perintah pemrosesan data dalam bentuk angka dan logika. ALU juga memiliki kemampuan untuk memproses data matematika dan statistika. Beberapa fungsi yang dapat dilaksanakan oleh ALU meliputi penjumlahan (ADD), penjumlahan tidak bertanda (ADDU), pengurangan (SUB), pengurangan tidak bertanda (SUBU), serta beberapa fungsi logika seperti OR, XOR, dan AND. ALU memiliki tanggung jawab untuk melakukan perhitungan matematika dan mengambil keputusan melalui operasi sesuai dengan instruksi dari program operasi logika. Sebelumnya, telah dilakukan penelitian yang berhasil merancang desain rangkaian ALU pada CPU 8-bit dengan input berukuran 8-bit oleh (Derek C. Schuurman, 2014), dan hasilnya disimulasikan menggunakan LOGISIM oleh (Mochammad Hannats Hanai Ichsan & Wijaya Kurniawan, 2016). Komponen-komponen yang terdapat pada ALU agar dapat beroperasi melibatkan adder yang digunakan untuk memproses operasi aritmatika, serta gerbang
8 |Dio, Dina, Fayyis logika AND, OR, dan NOT untuk memproses operasi logika. Selain itu, multiplexer digunakan untuk memilah proses dalam ALU. ALU 8 bit memerlukan berbagai komponen elektronik, termasuk IC gerbang logika OR, NOT, AND, Adder, dan Multiplexer. Untuk IC OR, dapat menggunakan IC74LS32, untuk NOT menggunakan IC74LS04, untuk AND menggunakan IC74LS08, dan untuk ADDER menggunakan IC74LS283. Sedangkan untuk Multiplexer, dapat menggunakan IC74251, yang memiliki 8 input dan 1 output, serta memiliki 3 bit untuk selectornya. Keseluruhan rangkaian ini membutuhkan daya 5V dan menggunakan LED sebagai media output. Berdasarkan kajian yang telah dijelaskan di atas, penulis bermaksud untuk membuat sebuah Computation Sense Unit (ALU) 8-bit dalam bentuk fisik. Setelah pembuatan fisiknya, langkah selanjutnya adalah mengimplementasikannya ke dalam sebuah rangkaian Central Processing Unit (CPU) 8-bit.
Arithmetic Logic Unit | 9 2. PROSES KERJA ALU ALU adalah bagian dalam mikroprosesor yang digunakan untuk melakukan operasi hitungan aritmatika dan logika. ALU melakukan operasi aritmatika lainnya. Tugas utamanya adalah melakukan semua perhitungan aritmatika atau matematika yang terjadi sesuai dengan instruksi program. Untuk melaksanakan operasi aritmatika ini, sirkuit elektronik di ALU disebut adder. Operasi aritmatika termasuk tambah, kurang, kali, dan bagi, sedangkan operasi logika termasuk OR, AND, NOT, EXOR, dan EXNOR, antara lain. Sebuah unit penghitungan dan sensasi, atau ALU, adalah sekumpulan gerbang logika yang digabungkan sehingga memiliki kemampuan untuk melakukan sejumlah fungsi tertentu tergantung pada kontrol yang diberikan. Sistem kerja ALU terdiri dari dua tahap yaitu: a) CU mengambil instruksi, yang dapat berupa kode, yang tersimpan di dalam memori, dan kemudian instruksi. b) Instruksi ini kemudian ditransfer dan diterjemahkan ke dalam memori sementara.
10 |Dio, Dina, Fayyis Instruksi: Instruksi menentukan proses apa yang harus dilakukan setelah ini. Sebagai contoh, jika hasil pemecahan kode menginginkan penjumlahan angka, CU akan mengirimkan tugas tersebut kepada ALU. ALU akan memproses perhitungan hingga mendapatkan hasil penjumlahan. Setelah itu, proses penulisan hasil, yang menyimpan hasil perhitungan di dalam media penyimpanan sebelum ditampilkan. Di kemudian hari, hasil yang tersimpan dapat digunakan untuk keperluan tertentu. 3. RERFRESENTASI ALU Hampir semua komputer menggunakan representasi aritmatika biner fixed-point. Meskipun format floating-point memiliki rentang bilangan yang lebih luas dibandingkan dengan bilangan fixed-point, perangkat keras untuk aritmetika floating-point cenderung kompleks dan mahal. Oleh karena itu, banyak komputer lama mengatasi pengolahan data floating-point dengan mengkonversinya ke data fixedpoint. Saat ini, mikroprosesor telah dilengkapi dengan
Arithmetic Logic Unit | 11 unit floating-point yang terintegrasi, berkat teknologi fabrikasi VLSI yang memungkinkan produksi dengan biaya rendah. 3.1 REPRESENTASI FIXED-POINT Bilangan biner mungkin bertanda atau tidak bertanda. Bilangan biner 8 bit (1 Byte) tidak bertanda menggunakan 8 bit seluruhnya untuk bobot angkanya, misalnya 11111111= 255. Karena itu, 255 adalah nilai terbesar yang dapat disimpan dalam byte tidak bertanda. MSB adalah BOBOT bilangan (bukan bit tanda) Byte bertanda hanya menggunakan 7 bit untuk bobotnya sedangkan bit paling kiri (MSB) digunakan sebagai tanda. Ciri bilangan yang
12 |Dio, Dina, Fayyis bertanda positif adalah jika MSB = 0; sedangkan jika MSB = 1 berarti bilangan negatif. Misalnya bilangan 01111111 = +127 (MSB=0), dan 1111111 = -1 (MSB-1). Untuk mendapatkan bobot bilangan bertanda (komplemen-2) maka bobot untuk bit MSB diberi negatif, bobot untuk bit lainnya bertanda positif, perhatikan. 3.2 UNSIGNED OVERFLOW CARRY FLAG (CF) Carry-out terkiri 1 berarti meluap Hasil ini meluap (overflow) karena 18 desimal tidak sama dengan 0010 biner ( 1810 tidaksama dengan 00102). dalam prosesor, hasil 1101 carry-out 13 = 1101 5+ = 0101 + 18 = 0010
Arithmetic Logic Unit | 13 penjumlahan 4-bit (yaitu 0010) disimpan dalam register, sedangkan bit luapan carry-out disimpan pada register status atau disebut juga register flag. Khusus untu ini dinamakan bit CARRY FLAG (disebut juga UNSIGNE OVERFLOW). Jika bilangan di atas dijumlahkan dengan operasi atau lebih besar, maka hasil 10010 adalah benar. 3.3 SIGNED OVERFLOW Sebuah bilangan bertanda (signed number) 4-bit mempunyai rentang sampai 8. Penjumlahan biner 4-bit bilangan bertanda dikatakan r jika hasil penjumlahannya keluar dari rentang +7 sampai -8. Kasus me untuk bilangan bertanda (signed number) dapat dideteksi dengan ca melakukan operasi XOR carry-outdengan carry sebelah kanan daricurry out. Jika hasil XOR ini berlogika 1 maka terjadi luapan bertanda dan disebut SIGNED OVERFLOW atau lebih lazim disebut OVERFLOW FLAG. 3.4 REPRESENTASI FLOATING-POINT
14 |Dio, Dina, Fayyis Dengan notasi fixed-point (yaitu komplemen-2) memungkinkan untuk merepresentasikan rentang bilangan bulat positif dan negatif dengan nolà tengah. Dengan asumsi fixed binary atau radix point, format in mengizinkan representasi bilangan dengan komponen pecahan secara baikPendekatan ini mempunyai keterbatasan. Bilangan yang sangat besar tidak dapat direpresentasikan, atau juga tidak bisa pecahan yang sangat kecil. Karena itu, bagian pecahan dari hasil bagi suatu pembagian dari dua bilangan besar dapat hilang. Untuk bilangan desimal, kita menyiasati keterbatasan inidengan menggunakan notasi saintifik. Dengan demikian, 976000000000000 dapat direpresentasikan sebagai 9,76 x 1014 dan 0,0000000000000976 dapat direpresentasikan sebagai 9,76 x 10 14. Apa yang telah kita lakukan, pada dasarnya, secara dinamis untuk menggeser titik desimal kelokasi yang nyaman dan menggunakan eksponenio untuk menjaga titik
Arithmetic Logic Unit | 15 desima tersebut. Ini mengizinkan rentang angka yang sangat besar dan sangat kee untuk diwakili dengan hanya beberapa digit. Pendekatan yang sama ini dapat diambil dengan bilangan biner. Kita hist merepesentasikan sebuah bilangan dalam bentuk: Plangan ini dapat disimpan dalam sebuah word biner dengan tiga field yaitu : Bit tanda: positif atau negatif Mantissa: M Basis/radix bilangan: B Eksponen: E Contoh berikut mengilustrasikan sistem bilangan floating-point dalam Atasi +M x B¹E Bilangan Mantissa Basis Eksponen 3X106: 3 10 6 110 X 28: 110 2 8 6132.784: 0.6132784 10 4 34.58: 0.3458 10 2
16 |Dio, Dina, Fayyis Mantissa dan eksponen direpresentasikan secara eksplisit dalam komputer. Tetapi basisnya adalah yang digunakan oleh komputer tersebut. Umumnya 2 komputer mengikuti basis 2. Pada Gambar 6.1 ditunjukkan format umum hilangan floating-point. Gambar 6.1 Format Bilangan Floating-Point Semula penggunaan format berbeda-beda antar pabrik komputer untuk merepresentasikan bilangan floating-point. Tetapi saat ini telah digunakan format standar ANSI/IEEE secara luas. Ada dua format standar yang dikeluarkan yaitu untuk presisi tunggal (Gambar 6.2) dan format standar untuk bilangan presisi ganda (Gambar 6.3).
Arithmetic Logic Unit | 17 Gambar 6.2 Format Bilangan Floating-Point Tunggal (32 Bit) Gambar 6.3 Format Bilangan Floating-Point Ganda (64 Bit) A. Normalisasi Bilangan floating-point yang diberikan dapat direpresentasikan denga banyak cara seperti yang ditunjukkan untuk bilangan 0.11 * 2 ^ 11 desimal 110 x 24 1100 * 27 110 * 2 ^ 8 11 * 2 ^ 0 1.1 * 2 ^ 10 0.011 * 2 ^ 12 Suatu bilangan floating-point berada dalam bentuk ternormalisasi jika b MSB dari mantissa adalah non-zero. Untuk mengubah bilangan yang tida ternormalisasi menjadi bilangan yang ternormalisasi, mantissa harus dige ke kanan atau ke kiri dengan tepat, menaikkan atau menurunkan
18 |Dio, Dina, Fayyis ekspone Jika semua bilangan floating-point direpresentasikan dalam komputer dengan bentuk ternormalisasi, maka posisi bit satu dapat disimpan dengan mengabaikan MSB (yang selalu 1), ini disebut hidden 1 principle. B. Konversi Format Saintifik Ke Format Standar IEEE 754 Untuk melakukan konversi bilangan floating-point dari format saintifik menjadi format standar IEEE 754 dilakukan langkah-langkah sebagai berikut: • Ubah bilangan desimal menjadi bilangan biner format saintifik. • Normalisasikan bilangan tersebut sehingga terdapat satu digit non-ze di ujung terkiri, lakukan pengaturan eksponen sesuai kebutuhan. • Simpan digit biner mantissa ke sisi kanan (lihat format pada Gambar 6.4)
Arithmetic Logic Unit | 19 • Tambahkan 127 ke bagian eksponen (E' = E + 127) dan ubah hasil penjumlahan tersebut ke biner tidak bertanda untuk nilai eksponen yall akan disimpan. Untuk presisi-ganda, tambahkan 1023 ke eksponen (E= E+1023). • bit tanda = 1 untuk bilangan negatip dan bit tanda = 0 untuk bilang positif. Gambar 6.4 Format Floating-Point Presisi Tunggal Dan Presisi Ganda Standar IEEE 754
20 |Dio, Dina, Fayyis C. Aritmatika fixed-point Operasi-operasi aritmatika biner fixedpoint merupakan aspek penting dalam ALU. Empat jenis operasi aritmatika yang dibutuhkan adalah penjumlahan, pengurangan, perkalian dan pembagian. Ada dua strategi dalam implementasi mesin aritmatika ini: • Perancangan sirkuit ALU untuk empat operasi di atas. Pendekatan ini mengakibatkan harga ALU menjadi mahal dan kompleks. • Perancangan sirkuit ALU hanya untuk penjumlahan dan pengurang sedangkan operasi perkalian dan pembagian dilakukan deras menggunakan perangkat lunak. Pendekatan ini mengakibatkan A menjadi lambat dan murah. Dua jenis penjumlahan yang dibutuhkan di dalam ALU:
Arithmetic Logic Unit | 21 • Penjumlahan bilangan tak-bertanda: kalkulasi alamat opera adalah satu contoh di mana penjumlahan seperti itu diperlukan. • Penjumlahan bilangan bertanda: kalkulasi numerik dal komputer umumnya mengikuti penjumlahan jenis ini karena operand operand nya berupa bilangan positip dan negatip Untuk membangun sirkuit aritmatika komputer maka dibutuhkan sirk adder (penjumlah) dasar yaitu half adder dan full adder. D. Half Adder Penjumlah yang paling dasar adalah Half adder (HA). Half adderadala sebuah penjumlah yang melakukan penjumlahan dua bilangan bine masing-masing 1 bit yang diwakili oleh variabel Aidan Bi. Ekspresi logika dapat diimplementasikan dengan gerbe XOR2-masukan yang merupakan bagian dari logika dibutuhkan
22 |Dio, Dina, Fayyis untuk sat penjumlahan biner. Fungsi Carry-out, ci +1, diimplementasikan deng sirkuit AND, seperti yang ditunjukkan. Sebuah simbol yang nyaman untuk sirkti lengkap untuk tahap tunggal itu,disebut half adder (HA). Tabel penjumlahan Half Adder E. Full Adder Penjumlah mempunyai keterbatasan Karena masukannya hanya dua bit. Solusi untuk menyelesaikan penjumlahan dengan masukan sebanyak tiga bit diberikan oleh full adder (FA). Gambar 6.6 menunjukkan tabel kebenaran untuk fungsi sum dan carry-out untuk penjumlahan bit bobot a; dan b, pada hilangan A dan B. Gambar
Arithmetic Logic Unit | 23 tersebut juga menunjukkan ekspresi logika untuk fungsi-fungsi ini. Perhatikan bahwa setiap tahap proses penjumlahan harus mengakomodasi sebuah bit carry-in. Kita menggunakan c; untuk mewakili carry-in untuk tahap i, yang sama dengan carry-out dari tahap (i - 1) Ekspresi logikasi pada dapat diimplementasikan dengan gerbang XOR3- masukan yang merupakan bagian dari logika yang dibutuhkan untuk satu tahap penjumlahan biner. Fungsi Carry-out, ci +1 dimplementasikan dengan sirkuit AND-OR, seperti yang ditunjukkan. Sebuah simbol yang nyaman untuk sirkuit lengkap untuk tahap tunggal itu, disebut full adder (FA).
24 |Dio, Dina, Fayyis Tabel penjumlahan Full Adder Rangkaian full adder, penjumlah penuh, menjumlahkan bilangan binary dengan menyertakan nilai carry dalam penjumlahannya. Sebuah full adder sederhana terdiri dari tiga buah input, yang biasa untuk memudahkan disebut input A, B, dan Cin. Dengan A dan B merupakan input operand yang ada, sedangkan Cin merupakan nilai bit carry dari langkah sebelumnya. Sebuah full adder biasanya merupakan komponen penyusun dalam penjumlah bertingkat, cascade.
Arithmetic Logic Unit | 25 Dari tabel kebenaran full adder dapat dipekspresi Boolean sebagai berikut: (a) Diagram blok full Adder (b) Sirkuit logika full Adder Gambar 6.6 diagram blok dan sirkuit logika full adder F. Serial Adder/Subtractor Serial adder hanya mempunyai sebuah penjumlah bit tunggal. Serial addr digunakan untuk penjumlahan dua bilangan secara sekuensial
26 |Dio, Dina, Fayyis bit demi bit yang dimulai dari LSB. Pada Gambar 6.7 ditunjukkan sebuah serial addr dari dua bilangan n-bit. Untuk melakukan penjumlahan maka sinyal kontra add/sub dibuat low sedangkan untuk pengurangan dibuat high. Operand operand (A dan B) disuplai bit demi bit yang dimulai dari LSB. Operand A dan Operand B masing-masing berasal dari sebuah register PISO (paralleli serial out), sedangkan hasil operasi aritmatikanya ditampung pada register SIPO (serial in parallel out). Penjumlahan posisi satu bit menggunakan satu siklus clock. Jadi, untuk sebuah n-bit operand, dibutuhkan naikus dock untuk menyelesaikan proses penjumlahan. Pada setiap siklus, carry sebuah posisi bit yang akan diingat dalam sebuah flip-p dan diberikan sebagai sebuah masukan selama siklus berikutnya sebagai dihasilkan carry Kelebihan sirkuit serial adder adalah lebih kecil
Arithmetic Logic Unit | 27 dan karena itu sangat murah, kekurangannya lambat karena Gambar 6.7 Diagram subtracto G. Parallel Adder Parallel adder adalah sebuah penjumlah yang mempunyai beberapa full adder terpisah yang dikaskadekan menjadi satu grup. Parallel adder nelakukan penjumlahan dari multi full adder secara simulta penjumlahan internal berbeda pada setiap jenis parallel adder. Pada dasarnya ada dua jenis parallel adder: • Ripple carry adder • Carry look-ahead adder. Perbedaan keduanya adalah pada cara bit carrry yang dibangkitkannya.
28 |Dio, Dina, Fayyis H. Ripple Carry Adder Gambar 6.8 Ripple Carry Adder Ripple carry adder (RCA) dengan n-b Prosesnya adalah sebagai berikut: ada n-bit full adder yang dihubungk dengan cara kaskade. Setiap carry out dari full adder menjadi carry in bag full adder bit berikutnya. Setiap tingkat melakukan penjumlahan unt salah satu bit dari dua bilangan dan carry dari posisi bit sebelumnya.Seti tingkat adder menghasilkan satu bit hasil-jumlah dan satu bit carry. Setiap carry out pada tingkat adder diberikan pada carry in tingkat adde berikutnya dan merambatkan seterusnya hingga mencapai keluaran tingkat adder terakhir. Keluaran adder (sum dan carry) valid hanya pada saat selesainya
Arithmetic Logic Unit | 29 waktu tunda dari sejumlah suplai masukan. Carry in pada tingla LSB dijaga tetap LOW (0) karena bit ini tidak relevan. Bit ini mempunya kegunaan khusus, yaitu jika hasil-jumlah diinginkan ditambah satu (A+B+) maka carry-in dibuat 1. Besarnya waktu tunda yang dimunculkan oleh carry menentukan lamanya penjumlahan. Carry dari posisi LSB harus merambat melalui semua fu adder yang ada di depannya. Jika ta adalah waktu tunda untuk setiap tingkat full adder dan ada sejumlah n-bit, maka waktu tunda rambatan (propagation delay) maksimum untuk nbit ripple carry adder adalah ta. Jika setiap gerbang di dalam full adder memiliki waktu tunda rambata sebesar t, maka waktu tunda total adalah 2 x nx tg. Kekurangannya: ripple carry adder menjadi lambat ketika jumlah b bertambah. Carry yang terjadi pada LSB harus dirambatkan ke seluruh tingkatan secara berurut. Jika panjang dari operand besar, maka waktu yang digunakan untuk merambatkan carry dari tingkat LSB ke MSB
30 |Dio, Dina, Fayyis menjadi besar. Hal ini dikenal dengan istilah carry problem. Penjumlah/Pengurang Komplemen-2. Penjumlah n-bit pada Gambar 6.9 dapat digunakan untuk mengurangkan bilangan A dan komplemen2B, di mana bit an, dan be, adalah bit tanda. Bit carry-out(c)bukan bagiandarijawabannya. Kondisi signed overfloutelah dibahas dalam sub-babo. Kondisi signed overflow terjadi ketika bit-tanda dari dua operand adalah sama, tetapi tanda hasilnya berbeda. Oleh karena itu, sirkuituntuk mendeteksi signed overflow dapatditambahkan ke penjumlahn-bit dengan menerapkan ekspresi logika: Signed overflow-abs +a-b. Dapat juga ditunjukkan bahwa signed overflow terjadi jika bit carry outc dan Cn berbeda. Karena itu, sirkuit yang sederhana untuk mendeteksi signed overflow dapat dimplementasikan dengan sebuah gerbang XOR dengan ekspresi cncn-1. Untuk melakukan operasi pengurangan A-B, kita membentuk komplemen-2
Arithmetic Logic Unit | 31 dari B dan menambahkannya ke A (ingat A-B=A+ (-B)). Sirkuit logika yang ditunjukkan pada Gambar dapat digunakan untuk melakukan baik penjumlahan atau pengurangan berdasarkan nilai yang diberikan pada saluran masukan kontrol Add/Sub. Ketika saluran kontrol Add / Sub = 0, maka mesin ini melakukan operasi penjumlahan. Keluaran gerbang XOR sama dengan masukan B, selanjutnya langsung masuk ke masing-masing full adder. Ketika saluran kontrol Add/Sub = 1, maka mesin ini melakukan operasi pengurangan.Keluaran gerbang XOR sama dengan B, artinya keluaran XOR menghasilkan bilangan komplemen-1 dari B, selanjutnya masuk ke masing-masing full adder. Karena co = 1 maka diperoleh bilangan komplemen-2 dari B. Ingat bahwa komplemen-2 dari B tidak lain adalah bilangan negatif dari B (B). Sebuah gerbang XOR dapat ditambahkan ke
32 |Dio, Dina, Fayyis Gambar 6.9 penjumlahan/pengurangan komplemen-2 I. Carry Look-Ahead Adder Dua pendekatan dapat diambil untuk mengurangi keterlambatan opera penjumlah. Pendekatan pertama adalah dengan menggunakan teknolog elektronik yang tercepat. Pendekatan kedua adalah dengan menggunaka jaringan gerbang logika yang disebut jaringan carry lookahead (CLA) yang akan dijelaskan dalam bagian ini. Carry Look-Ahead Adder adalah penjumlah kecepatan tinggi yang mengikuti suatu strategi khusus untuk pembangkitan carry yang cepat peda setiap tingkat tanpa menunggu carry dari tingkat sebelumnya. Dia menggunakan determinasi/penentuan dini carry in ke suatu
Arithmetic Logic Unit | 33 tingkat tanga menggunakan carry out dari tingkat sebelumnya. Sebuah sirkuit penjumlah cepat harus mempercepat pembangkitan sinyal carry. Ekspresi logika untuk s (sum) dan ci(carry-out) daritahapi (lihat Gambar 6.6) adalah: S_{i} =A i oplus B i oplus C i Dan C i + 1 =A i B i +A i C i +B i C i dengan melakukan faktorisasi persaman kedua, maka diperoleh: C i + 1 =A i B i +(A i +B i )C i Selanjutnya ini dapat ditulis sebagai : Ci+1=Gi + Pi Ci dimana: GA,B, dan P, A+B, Ekspresi G dan Piberturut-turut disebut fungal generate dan propogate untuk tingkat ke i. Jika fungsi generate untuk tingkat ke i sama dengan maka G 1. yang tidak tergantung pada
34 |Dio, Dina, Fayyis carryc. Hal ini terjadi ketika di Fungsi propagate berarti bahwa sebuah carry masakan akan menghasilkan sebuah carrykeluaran ketika a_{1} = 1 atau be 1. Semua fungsi G dan P dapat dibentuk secara independen dan secara paralel dalam satu delay gerbang logika setelah operand-operand A dan B diterapkan pada masukan dari sebuah penjumlah n-bit. Setiap tingkat bit berisi sebuah gerbang AND untuk membentuk G dan sebuah gerbang OR untuk membentuk P, dan sebuah gerbang XOR 3-masukan untuk membentuk s Sebuah sirkuit sederhana dapat diturunkan dengan mengamati bahwa fungsi propagate cukup dapat direalisasikan sebagai P, a@b, yang berbeda dengan P= a + bihanya ketika a_{i} = b_{i} = 1 Tapi, dalam hal ini G_{1} = 1 sehingga tidak peduli apakah P sama dengan o atau 1. Kemudian, dengan menggunakan kaskade dua gerbang XOR 2-masukan untuk merealisasikan fungsi XOR3-masukan untuk si,
Arithmetic Logic Unit | 35 sel CLA dasar pada Gambar 6.10 (a) dapat digunakan dalam setiap tingkat bit. Memperluas c dalam hal variabel-variabel subscript i-1 dan mensubtitusikannya ke dalam ekspresi c., maka diperoleh: c i + 1 =G i +P i G i-1 +P i P j-1 c i-1 dengan melanjutkan jenis ekspansi ini, ekspresi akhir untuk setiap variabel carry adalah: c l + 1 =G l +P i G i-1 +P i P i-1 G i-2 +...+P i P i-1 ...P 1 G 0 +P i P i-1 ...P o C 0. Dengan demikian, semua carry dapat diperoleh delay 3-gerbang setelah operandoperand masukan A, B, dan co diterapkan karena hanya satu delay gerbang yang dibutuhkan untuk mengembangkan semua sinyal P; dan G₁, dikuti oleh dua delay gerbang pada sirkuit AND-OR untuk c. Setelah detention gerbang XOR ke semua bit sum tersedia. Secara total, proses penjumlahann- bit hanya membutuhkan empat
36 |Dio, Dina, Fayyis detention gerbang penundaan, tidak tergantung padan. 4. MELAKUKAN PENGOLAHAN ARITMATIKA INTEGER Aritmatika bilangan bulat adalah proses melakukan operasi aritmatika pada bilangan bulat. Bagian ini akan membahas fungsi- fungsi aritmatik bilangan dalam representasi komplemen dua. • 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 double integer, tambahkan 1. Contoh 18 = 00010010( komplemen dua) • Representasi Integer Po
Arithmetic Logic Unit | 37 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-2 n, tapi tidak terdapat untuk 2n. Aturan Untuk Mendeteksi Overflow. • 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)) Aturan Pengurangan Untuk mengurangkan sebuah bilangan( subtrahend) dari bilangan
38 |Dio, Dina, Fayyis lainnya( minuend), anggaplah komplemen dua subtrahend dan tambahkan hasilnya ke minuend. • 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. 5. MENYELESAIKAN KASUS PENGOLAHAN ARITMATIKA INTEGER YANG LEBIH KOMPLEKS 5.1 Perkalian Bilangan Tidak Bertanda Perkalian dapat dilakukan dengan metode penjumlahan secara berulang. Misalkan perkalian A x B di mana A adalah multiplier( pengali) dan B
Arithmetic Logic Unit | 39 adalah multiplicand( terkali). Jika kita menjumlah B sebanyak A kali, hasil jumlahnya akan sama dengan hasil perkalian antara A danB. Hal ini tidak dilakukan oleh komputer karena prosesnya sangat lambat. Metode yang sederhana dan mungkin lebih praktis adalah mengalikan B dengan bit demi bit pada A dan menjumlahkan semua hasil kali parsial tersebut. Metode ini sama dengan metode perkalian homemade menggunakan kertas dan pensil seperti yang ditunjukkan pada Gambar6.12 1010( 10 desimal) dengan 1101( 13 desimal). Hasilnya adalah 10000010( 130 desimal). Metode perkalian primer mengikuti langkah- langkah berikut Mulai dari LSB multiplier. Jika smelled ini maka hasilkali dengan multiplicand. Jika smelled LSB o, maka hasil kali dengan o parsial parsial вата . Lakukan analisis bit multiplier berikutnya dan bangkitkan hasil- ka parsial seperti pada langkah.1Hasil- kali parsial yang baru ini dit bergeser ke kiri 1 bit terhadap hasil- kali parsial
40 |Dio, Dina, Fayyis sebelumnya.Ulang langkah ini hingga semua bit pada multiplier dikerjakan( mendapat giliran). Jumlahkan semua hasil- kali parsial untuk memperoleh hasil- kak sesugguhnya. 5.2 MESIN PENGALI ARRAY Algortima perkalian homemade di atas jika ingin diimplementasikan pada komputer maka prosedur sebelumnya dapat dimodifikasi sedikit supaya perkalian dilakukan secara efisien oleh perangkat keras dengan menggunakan penjumlah biner paralel. Hasil- kali parsial dijumlahkan segera setiap satu siklus selesai menggantikan penjumlahan di akhir proses supaya kita tidak menyimpan hasil- kali parsial. Untuk merealisasikan mesin perkalian 4- bit dibutuhkan 16 buah gerbang AND, 4 buah half adder dan 8 buah full adder. Mesin perkalian pada Gambar tentunya membutuhkan sirkuit yang kompleks sehingga harganya mahal. Waktu tunda keseluruhan array ini diberikan oleh nilai terbesar dari t AND 6t c; t
Arithmetic Logic Unit | 41 AND t AF 5t c; t AND 2t AF 4t c; atau t dND 3t dF di mana tAND adalah tunda propagasi dari gerbang AND dua masukan, t adalah tunda carry dari sebuah full adder dan navigator adalah tunda keluaran hasil jumlah dari sebuah full adder, dengan asumsi bahwa setiap gerbang AND mempunyai tunda waktu yang identik demikian halnya untuk setiap full adder. Sayangnya sirkuit ini membutuhkan perangkat keras yang lebih banyak jika jumlah bit dalam multiplier dan multiplicand meningkat, dan juga dibutuhkan sebuah register untuk menyimpan hasil kali yang panjangnya dua kali dari panjang word multiplier/ multiplicand. 5.3 Perkalian Bilangan Bertanda Algoritma Booth adalah salah satu metode perkalian komplemen- 2 yang populer. Metode ini juga meningkatkan kecepatan proses perkalian dengan menganalisis bit- bit multiplier pada satu waktu. Algoritma Booth menanga operand-
42 |Dio, Dina, Fayyis operand komplemen- 2 positif dan negatif tanpa memerlukan koreksi dalam prosedur atau pada hasilnya. Bila multiplier mempunyai kumpulan angka 1, banyaknya penjumlahan yang diperlukan akan berkurang. Jumlah penurunan waktu tergantung pola bit multiplier. Prinsip dasar yang dianut dalam algoritma Booth sebenarnya tidak ada perkalian tetapi yang ada adalah penjumlahan dari pola- pola multiplicand yan digeser secara tepat. Sebuah flipflopQ( register 1 bit) digunakan untuk menyimpan b LSB multiplier( Qo) jika terjadi pergeseran ke kanan. Prinsipnya perta akumulator dan flip- bomb dibuat clear, serta register multiplier dan multiplicand diisikan( cargo Q,{- 4}). Langkahlangkah operasinya sebagai berikut : • Jika bit Q- o dan bit Q- 1 sama( oo atau 11), tidak dilakukan penjumlahan, Isi akumulator( hasil- kali parsial) dan multiplier digeser aritmatika ke( SAR) satu bit.( Bit tanda akumulator akan sama
Arithmetic Logic Unit | 43 dengan bit sebelum pergeseran. Bit LSB akumulator kanan multiplier) . • Jika bit masuk ke posisi MSB Q- o dan bit Q- 1 adalah 01, tambahkan multiplicand ke akumulator, kemudian akumulator dan multiplier kanan satu bit digeser uritmatika ke kanan satu bit. • Jika Q,{ o} dan bit Q,{- 1} adalah 10, kurangi akumulator dengan multiplicand, kemudian akumulator dan multiplier digeser aritmatika bit ke kanan satu bit. • Lakukan langkah nomor 1 sampai semua bit- bit multiplier telah mendapat giliran. • Hasil perkalian berada dalam register akumulator dan multiplier. Metode yang biasa diikuti adalah pertama mengubahnya menjadi bilang tidak bertanda sebelum pembagian dan kemudian mengubah kembali ba yang diperoleh menjadi bentuk komplemen- 2. Pertama marilah kita memikirkan metode homemade menggunakan kertas dan pensil
44 |Dio, Dina, Fayyis untuk contoh yang ditunjukkan pada Gambar6.18 di mana D 100010010( desimal 274) dan V = 1101( desimal 13). Metode ini biasa dikenal dengan metode longhand. 5.4 Aritmatika floting-point Aritmatika bilangan floating-point mempunyai aturan sendiri dan memerlukan sirkuit perangkat keras tambahan dibandingkan dengan fired- point datapath. Aritmatika perkalian dan pembagian floating-point lebih mudah daripada penjumlahan dan pengurangan. Operand-operand floating-point disimpan dalam bentuk ternormalisasi. Demikian halnya operasi aritmatika juga disimpan dalam bentuk ternormalisasi. Anggap dua buah operand floating-point A dan B yang dinyatakan sebagai: A= Max ra dan B = Mbxrb Dimana Ma dan M, adalah mantissa dari A dan B, r adalah basis (biasanya 2 atau 10),
Arithmetic Logic Unit | 45 sedangkan Ea dan Eb adalah masing-masing eksponen dari A dan B. Sebelum dilakukan penjumlahan atau pengurangan antara A dan B, maka salah satu operand harus diubah agar A dan B mempunyai nilai eksponen yang sama. Hal tersebut dilakukan dengan cara menggeser titik basis (biner atau desimal) operand tersebut. 5.6 Penjumlahan Bilangan Floating-Point Anggap penjumlahan A+B di mana A dan B adalah bilangan biner floating- point. Langkahlangkah penjumlahan sebagai berikut: • Periksa apakah A atau B adalah o; jika demikian, hasilnya adalah operand lain. • selisih (ed) antara eksponen, yaitu (Ea - Eb) atau (Eb- Ea). • Pilih bilangan A atau B yang mempunyai eksponen yang lebih kecil. • Geser ke kanan mantissa bilangan demi bilangan yang dipilih sampai sama engan ed, yaitu selisih antara eksponen. Sekarang
46 |Dio, Dina, Fayyis kedua bilangan mempunyai eksponen yang sama. • Lakukan penjumlahan mantissa baru: Ma + M. • Hasil penjumlahan adalah (Ma + Mb) x red • Normalisasikan hasil. ini dilakukan dengan menggeser ke kiri bit-bi mantissa hingga msb menjadi non-zero. Setiap pergeseran ke ki eksponen dari hasil harus dikurangi dengan 1. 5.7 Pengurangan A - B Bilangan Floatingpoint Dengan penjumlahan kecuali pada langkah 5 Pengurangan sama dilakukan pengurangan mantissa. Contoh: Kurangkan 2 * 10 ^ 15 dua bilangan desimal floating-point 1.02635126 x 10 dengan 1.21300213 Solusi:
Arithmetic Logic Unit | 47 Normalisasikan hasil, geser ke kiri mantissa satu digit dan turunkan eksponen, Hasil akhir 10.2513826 x 10¹7. 5.8 Perkalian Bilangan Floating-point Perkalian A dan B melibatkan operasi berikut: (M_{a}*x*M_{b}) * r ^ (Ea + Eb) Langkah-langkah yang harus diiukuti adalah: • Uji apakah A atau B sama dengan nol; jika benar maka hasilnya adalah nol • Jumlahkan eksponen yaitu Ea + Eb • Kurangkan bias 1276 karena keduanya adalah dalam format excess 127
48 |Dio, Dina, Fayyis • Periksa apakah terjadi eksponen atau underflow eksponen Jika ya, berhenti dan laporkan dengan melakukan setup pada flag yang sesuai Max M • Kalikan mantissa: • Normalisasikan hasil • Bulatkan hasil dengan menggunakan guard digit. Jika eksponen positip yang akan disimpan lebih besar dari nilai eksponen maksimum yang mungkin, maka dihasilkan eksponen yang overflow. Bilangan yang dihasilkan terlalu besar untuk dapat disimpan dalam komputer. Jika eksponen negatip yang akan disimpan lebih kecil dari nilai yang mungkin, maka dihasilkan eksponen yang underflow. Bilangan yang dihasilkan terlalu kecil untuk disimpan dalam komputer. 5.9 Pembagian Bilangan Floating-point
Arithmetic Logic Unit | 49 Perkalian A dan B melibatkan operasi berikut: (Ma/Mb) x rEa-Eb Langkah-langkah yang harus diikuti adalah: • Uji apakah A adalah o; jika benar maka hasilnya adalah o • Uji apakah B adalah o; jika benar maka hasilnya adalah ∞ • Kurangkan eksponen: Ea - Eb • Tambahkan bias 127 karena pada langkah 3 kedua bias tersebut dihapus • Periksa overflow eksponen; jika ya, maka stop dan laporkan dengan men-set flag • Periksa underflow eksponen; jika ya, maka stop dan laporkan dengan men-setflag • Bagi mantissa: Ma/Mb • Normalisasikan hasil • Pembulatan hasil.
50 |Dio, Dina, Fayyis Tentang Penulis Dina Juliana Berasal dari Kuningan, umur 20, Mahasiswa. Dio Pirmansah Berasal dari Majalengka, Umur 20, Hoby Olahraga, Seorang Mahasiswa. Muhammad Fayyis Khairy Berasal dari Kuningan, umur 18, seorang mahasiswa