Organisasi Sistem Komputer Materi III Binary Digit (Number System)
Komputer Digital Hanya mengenal dua status (mis. ada / tidak ada tegangan) Sangat sederhana hanya dapat bernilai: 1 atau 0 biner Operasi hanya dapat dilakukan pada bit; yang dapat bernilai 1 atau 0. Contoh operasi mengubah (flip, switch) nilai bit, menjadikan bit tertentu 0; test bit jika 0 atau bukan. 100101 switch bit ini menjadi 0 100001 100001 Test bit ini jika 0, switch bit pertama 0 100000
Binary Digit (Bit) Dengan bit, bagaimana komputer dapat merepresentasikan: Bilangan (numerik)? Alfabet ? Kata? Alamat? Gambar? Contoh: Bilangan Manusia lebih mudah menggunakan representasi/ notasi desimal. Misalkan: 1, 25, 125, 3896754321 Disebut basis 10, dengan simbol: Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Komputer hanya mengenal 2 simbol (0 dan 1) Bagaimana komputer merepresentasikan bilangan yang dikenal manusia?
Representasi Bit Bits dapat merepresentasikan apapun! Karakter Latin: 26 huruf => 5 bits Huruf besar/kecil + tanda lain => 7 bits, Logical values : 0 -> False, 1 => True Warna ? Berapa banyak warna => berapa bits? Alamat? (berapa karakter alfabet ..) Maka N bits hanya dapat merepresentasikan 2N sesuatu
Bit Bilangan Bilangan Basis B B simbol per digit: Basis 10 (Decimal): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Basis 2 (Binary): 0, 1 Komputer menyimpan dan beroperasi dalam “binary” Basis 2 Dapat melakukan konversi (representasi) bilangan dari basis 10 ke basis 2 (dan sebaliknya). Decimal: 0,1,2,3,4,5,6,7,8,9 90 = 9x101 + 0x100 Binary: 0,1 1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x20 = 64 + 16 + 8 + 2 = 90
Bit Bilangan Apa yang dapat dilakukan dengan “bilangan”? semua operasi (instruksi) yang biasa dilakukan pada bilangan! Tambahkan, Kurangkan, Kalikan, Bagikan, Bandingkan! Contoh: 10 + 7 = 17 1 0 1 0 + 0 1 1 1 ------------------------- 1 0 0 0 1 1 10 Bagaimana instruksi +, diwakili oleh bits? 7 17
Bit Instruksi Instruksi (Operasi). Apakah dapat diwakili oleh bit? Contoh: 0 => tepuk tangan 1 => snap jari jempol dan telunjuk Eksekusi Instruksi: 1 0 1 1 0 0 Contoh instruksi operasi bilangan: Misalkan 3 bit (berapa banyak instruksi?): 000 => tambahkan 001 => kurangkan 010 => kalikan 011 => bagikan 100 => bandingkan dst. Jadi bit (data) dapat diartikan sebagai instruksi!
Bit Pengalamatan Memori k menentukan besarnya ruang alamat (address space) memori: k = 16 ruang alamat = 216 (64536) lokasi k = 32 ruang alamat = 232 (4 Giga) lokasi n menentukan besarnya suatu word (jumlah bit) n = 8, 16, 32, 64 Umumnya ukuran peng-alamatan terkecil adalah dalam orde byte byte addressable 1 i 2k-1 Alamat n bits Byte 0 Byte 1 Byte i Byte 2k-1
Kumpulan bit disimpan di memori Alamat Memori adalah tempat menyimpan kumpulan bit (instruksi/data) Suatu “word” adalah sejumlah bit data tetap, (mis. 16, atau 32 bit) pada satu lokasi di memori Byte-addressable memory menyimpan data multi-byte pada lokasi memori yang berurutan Alamat menunjuk ke lokasi “word” (byte-1) disimpan. Alamat dapat direpresen-tasikan oleh bit Alamat juga sebagai “bilangan” (yang dapat dimanipulasikan) 00000 data 01110 101101100110 11111 = 2k - 1
Pengalamatan Data: Endianess Pengalamatan data multi-byte adalah: Big Endian: alamat dari most significant byte IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA Little Endian: alamat dari least significant byte Intel 80x86, DEC Vax, DEC Alpha msb lsb 1 4 5 lsb msb 1 4 5
Pengalamatan Data: Endianess 1500 Big Endian Little Endian Alamat 1 2 3 i 2k-1 Alamat 5 1 2 3 4 5 6 7 i 2k-1 1 5 2 6
Apa saja yang dapat disimpan? Apa yang dapat disimpan? Bilangan Karakter Alamat data Representasi “sesuatu” di dunia luar .. 00000 01110 101101100110 11111 = 2k - 1 anything Big Idea: Komputer dapat menyimpan apapun.
The Stored Program Computer 0 0 8 4 6 2 1 6 8 6 4 0 0 6 1 6 0 0 1 7 8 0 0 0 0 10 0 0 0 0 12 0 0 0 0 14 0 0 0 0 16 0 0 0 0 18 0 0 0 0 Memori menyimpan instruksi dan data sebagai bit. Instruksi diambil oleh prosesor dari memori, diartikan, dan, dieksekusi (operands/data diambil, diolah, dan disimpan ke memori). Contoh Instruksi 4-digit (á 4 bit) 16 bit (2 byte) ≈ 2 lokasi memori digit-1: Operasi: 0 => add, 1 => sub, ... digit-2: Alamat hasil digit-3: Alamat op1 digit-4: Alamat op2 data instruksi 0: 0846 0=add (jenis instruksi), 8=addr. result, 4=addr op1, 6=addr op2
Stored-program Computer operasi yang dilakukan oleh komputer ditentukan oleh instruksi & data yang tersimpan di memori 0846 IP 0 0 8 4 6 2 1 6 8 6 4 0 0 6 1 6 0 0 1 7 8 0 0 7 8 10 0 0 0 0 12 0 0 0 0 14 0 0 0 0 16 0 0 0 0 18 0 0 0 0 0 0 8 4 6 2 1 6 8 6 4 0 0 6 1 6 0 0 1 7 8 0 0 0 0 10 0 0 0 0 12 0 0 0 0 14 0 0 0 0 16 0 0 0 0 18 0 0 0 0 0 0 8 4 6 2 1 6 8 6 4 0 0 6 1 6 0 0 1 7 8 0 0 7 8 10 0 0 0 0 12 0 0 0 0 14 0 0 0 0 16 0 0 0 0 18 0 0 0 0 Processor (active) Control (“brain”) Datapath (“brawn”) 1686 IP 0061 IP 0017 0078 komputer dapat diprogram untuk memenuhi kebutuhan pengguna dengan jalan mengisi memori dengan instruksi & data yang sesuai
Representasi Data : Bilangan Biner Harga/Nilai suatu bilangan biner: 1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x21 + 0x20 = 64 + 16 + 8 + 2 = 90 Penulisan: 1011010b Konversi: Desimal Biner 90 / 2 = 45 sisa 0 45 / 2 = 22 sisa 1 22 / 2 = 11 sisa 0 11 / 2 = 5 sisa 1 5 / 2 = 2 sisa 1 2 / 2 = 1 sisa 0 1 / 2 = 0 sisa 1
Bilangan Heksa-Desimal Simbol: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Harga/Nilai suatu bilangan heksa-desimal: 5A = 5x161 + 10x160 = 80 + 10 = 90 Penulisan: 5Ah atau 0x5A Konversi: Desimal Heksa-desimal 90 / 16 = 5 sisa 10 (A) 5 / 16 = 0 sisa 5 Konversi: Heksa-desimal Biner 5A = 101 1010 Konversi: Biner Heksa-desimal 1011010 = 101 1010 = 5 A = 5A
Tabel Bilangan 2k Nilai Sebutan 210 1.024 1K 211 2.048 2K 212 4.096 4K Desimal Biner Heksa 0000 8 1000 1 0001 9 1001 2 0010 10 1010 A 3 0011 11 1011 B 4 0100 12 1100 C 5 0101 13 1101 D 6 0110 14 1110 E 7 0111 15 1111 F 2k Nilai Sebutan 210 1.024 1K 211 2.048 2K 212 4.096 4K 216 65.536 64K 220 1.048.576 1M
Pengelompokkan Bit Bit String: INTEL MIPS 4 bit nibble nibble 8 bit byte byte 16 bit word half-word 32 bit double-word word 64 bit quad-word double-word Alamat lokasi memori umumnya dinyatakan dengan bilangan heksa desimal contoh: lokasi memori 90 pada memori dengan ruang memori sebesar 64K (65536 = 216) dinyatakan dengan alamat: 0x005A jika ruang memori sebesar 232 (4G) : 0x0000005A
Penyimpanan data multi-byte (Little Endian) int i = 90; 90 = 0x5A = 0000 0000 0000 0000 0000 0000 0101 1010 00000000 00000001 00000002 00000003 00000004 00000005 00000006 00000007 FFFFFFFF 0101 1010 0000 0000 0000 0000 0000 0000 j 0011 0100 0001 0010 0000 1111 int j = 987700; 987700 = 0x000F1234 = 0000 0000 0000 1111 0001 0010 0011 0100 0000 0000 Alamat Memori (32 bit) Kapasitas Memori (8 bit)
One-Bit Full Adder a: 0 0 1 1 b: 0 1 0 1 Sum: 1 0 0 0 Example Binary Addition: Carries a: 0 0 1 1 b: 0 1 0 1 Sum: 1 0 0 0 Thus for any bit of addition: The inputs are ai, bi, CarryIni The outputs are Sumi, CarryOuti Note: CarryIni+1 = CarryOuti
One-Bit Full Adder CarryIn A + Sum B CarryOut To create one-bit full adder: implement gates for Sum implement gates for CarryOut connect all inputs with same name Sum A B CarryIn CarryOut +
Ripple-Carry Adders: adding n-bits numbers CarryIn0 A0 1-bit FA Sum0 B0 Kinerja operasi penjumlahan (dan juga operasi-operasi aritmatika lainnya) akan bergantung pada “besar” unit data dan konfigurasi Adder (Arithmetic & Logical Unit) yang digunakan CarryOut0 CarryIn1 A1 1-bit FA Sum1 B1 CarryOut1 CarryIn2 A2 1-bit FA Sum2 B2 CarryOut2 CarryIn3 A3 1-bit FA Sum3 B3 CarryOut3
How to Represent Negative Numbers? So far, unsigned numbers Obvious solution: define leftmost bit to be sign! 0 => +, 1 => - Rest of bits can be numerical value of number Representation called sign and magnitude 0000 0011 = + 3 1000 0011 = - 3
Another try: complement the bits Example: 710 = 001112 -710 = 110002 Called one’s Complement Note: positive numbers have leading 0s, negative numbers have leadings 1s. 00000 00001 01111 ... 11111 11110 10000 What is -00000 ? How many positive numbers in N bits? How many negative ones?
Two’s Complement Number line 11111 00000 00001 2N-1 non-negatives 2N-1 negatives one zero how many positives? comparison? overflow? 11110 00010 -1 1 -2 2 . . -15 15 -16 01111 10001 10000
Addition & Subtraction Operations Just add the two numbers Ignore the Carry-out from MSB Result will be correct, provided there’s no overflow Subtraction: Form 2’s complement of the subtrahend Add the two numbers as in Addition 0 1 0 1 (+5) +0 0 1 0 (+2) 0 1 1 1 (+7) 0 1 0 1 (+5) +1 0 1 0 (-6) 1 1 1 1 (-1) 0 0 1 0 (+2) 0 0 1 0 0 1 0 0 (+4) +1 1 0 0 (-4) 1 1 1 0 (-2) 1 0 1 1 (-5) +1 1 1 0 (-2) 11 0 0 1 (-7) 0 1 1 1 (+7) +1 1 0 1 (-3) 10 1 0 0 (+4) 1 1 1 0 (-2) 1 1 1 0 1 0 1 1 (-5) +0 1 0 1 (+5) 10 0 1 1 (+3)
Overflow Examples: 7 + 3 = 10 but ... - 4 – 5 = - 9 but ... 2’s Complement Binary Decimal 0000 1 0001 2 0010 3 0011 1111 1110 1101 -1 -2 -3 4 0100 5 0101 6 0110 7 0111 1100 1011 1010 1001 -4 -5 -6 -7 1000 -8 Well so far so good but life is not always perfect. Let’s consider the case 7 plus 3, you will get 10. But if you perform the binary arithmetics on our 4-bit adder you will get 1010, which is negative 6. Similarly, if you try to add negative 4 and negative 5 together, you should get negative 9. But the binary arithmetics will give you 0111, which is 7. So what went wrong? The problem is overflow. The number you get are simply too big, in the positive 10 case, and too small in the negative 9 case, to be represented by four bits. +2 = 39 min. (Y:19) Examples: 7 + 3 = 10 but ... - 4 – 5 = - 9 but ... 1 1 1 1 1 1 1 7 1 1 – 4 3 – 5 + 1 1 + 1 1 1 1 1 – 6 1 1 1 7