KONVERSI BILANGAN
Pengenalan Komputasi
Sasaran
Setelah anda menamatkan bab ini, diharapkan anda dapat :
- Mengkonversi nilai bilangan dari/ke basis-2, basis-10, dan basis-16.
- Menambah dan mengurangi bilangan Hex.
- Menambah bilangan biner
- Menjabarkan bilangan-bilangan biner dalam komplement ke-2.
- Menjabarkan string alphanumeric ke dalam kode ASCII.
- Menjelaskan operasi dari gerbang-gerbang AND, OR, NOT, XOR, NAND, NOR.
- Menggunakan gerbang logika untuk membuat rangkaian sederhana.
- Menjelaskan pebedaan antara Bit, Nibble, Byte dan Word.
- Memberikan definisi matematik yang akurat tentang terminologi kilobyte, megabyte, gigabyte, dan terabyte.
- Memaparkan kegunaan komponen utama dan menjelaskan kegunaan type-type bus.
- Mejelaskan aturan yang digunakan CPU dalam System komputer.
Untuk
mengerti software dan hardware dari system yang berbasis
mikrokontroller, sesorang paling pertama harus memahami konsep paling
dasar yang digunakan pada desain komputer. Pada bab ini (yang pada
tradisi pada bilangan system komputer selalu dimulai dari 0 dan bukanlah
1), hal mendasar adalah membahas bilangan dan system coding. Setelah
mengenalkan pada gerbang logika, kita akan mengulas proses kerja di
dalam komputer. Dan terkahir adalah kita akan memberikan sejarah dari
arsitektur CPU. Sehingga pembaca yang budiman kemudian dapat memiliki
latar belakang yang cukup sebelum beranjak pada bab selanjutnya, yakni
dengan membaca bab ini dengan seksama dan menyeluruh.
SubBAB 0.1: Numbering anda Coding Systems
Di
mana manusia selalu menggunakan aritmatika berbasis 10 (desimal),
sementara itu sebuah komputer menggunakan state, dan berbasis 2. Dalam
bab ini kita akan menjelaskan bagaimana mengubah system desimal menjadi
system biner, dan juga sebaliknya. Dan padanan yang setara dari
bilangan-bilangan biner, disebut dengan heksa-desimal, juga akan kita
bahas. Dan terakhir adalah format biner pada kode alphanumeric, yang
disebut dengan ASCII, akan kita gali kemudian.
Decimal and binary number systems
Konon
kabarnya ada splekulasi bahwa kita manusia menggunakan bilangan
berbasis 10, karena dipadankan dengan jumlah jari manusia yang berjumlah
10 itu. Namun di luar hal itu, system bilangan biner yang digunakan
oleh komputer bukanlah karangan dan spekulasi. System biner dalam
komputer digunakan karena 1 dan 0 adalah representasi dari status level
tegangan sebagai On atau Off. Di mana basis-10 memiliki beberapa symbol,
0, 1, 2, 3, … ,9. Sedangkan dalam basis-2 hanya menggunakan simbol 1
dan 0. Hal ini juga yang mewakili pada masing-masing digit. 1 digit
dalam basis-10 bisa diwakili oleh simbol 0 s/d 9. Sedang 1 digit pada
bilangan biner hanya diwakili nilai 0 atau 1. Nah.. dari digit biner
inilah kemudian diingatkan orang menyebutnya menjadi bit (Biner digit).
Mengubah Desimal menjadi Biner
Satu
metode pengubahan yang digunakan pada konversi desimal ke biner adalah
membagi bilangan desimal dengan 2 secara berulang-ulang. Dengan terus
memantau sisa dari pengurangannya. Proses ini terus dilakukan sampai
bilangan menjadi 0 atau Zero. Sedang sisanya kemudian dituliskan pada
angka yang terakhir. Hal ini di-demontrasi-kan pada Contoh 0-1.
Contoh 0-1
|
Ubah 25 desimal (atau 2510 ) menjadi biner.
Jawaban:
Hasil Sisa
25/2 = 12 1 LSB (Least Significant bit)
12/2 = 6 0
6/2 = 3 0
2/2 = 1 1
1/2 = 0 1 MSB (Most Significant bit)
Jadi, 2510 = 110012.
|
Mengubah Biner ke Desimal
Untuk
mengubah bilangan biner ke desimal, hal terpenting adalah mengerti
konsep dari besaran setiap posisi digit. Pertama dengan analoginyaa,
menyimak bersaran nilai dalam basis-10, seperti yang ada pada diagram di
bawah ini.
74068310 =
3 x 100 = 3
8 x 101 = 80
6 x 102 = 600
0 x 103 = 0000
4 x 104 = 40000
7 x 105 = 700000 +
740683
|
1101012 ====== Desimal Biner
1 x 20 = 1×1 = 1 1
0 x 20 = 0×2 = 0 00
1 x 20 = 1×4 = 4 100
0 x 20 = 0×8 = 0 0000
1 x 20 = 1×16 = 16 10000
1 x 20 = 1×32 = 32 + 100000
0 53 110101
Mengerti
besaran dari setiap bit dalam bilangan biner membuatnya menjadi mudah
untuk menambahkan mereka semua untuk mendapatkan persamaannya dalam
desimal, seperti yang ditunjukkan pada Contoh 0-2.
Contoh 0-2
|
Ubahlah bilangan biner 110012 menjadi desimal
Jawaban :
Besaran: 24 23 22 21 20
Digit: 1 1 0 0 1
Jumlah: 16 + 8 + 0 + 0 + 1 = 2510
|
Mengerti
besaran yang sesuai untuk setiap posisi bit bilangan biner membuat
sesorang mudah untuk mengkonversi bilangan desimal menjadi bilangan
biner secara langsung melalui proses pembagian berulang. Hal ini
dicontohkan pada Contoh 0-3
Contoh 0-3
|
Ubahlah bilangan desimal 3910 menjadi biner
Jawaban :
Jumlah: 32 + 0 + 0 + 4 + 2 + 1 = 39
Besaran: 24 24 23 22 21 20
Digit: 1 0 0 1 1 1
hasilnya adalah 1001112
|
System Heksadesimal
System
heksadesimal ini dalam literatur komputer juga disebut dengan Basis-16,
digunakan untuk merepresentasikan bilangan biner dengan baik ke dalam
bilangan manusia yang mudah diingat dan lebih ringkas. Misalnya manusia
akan lebih untuk mengingat dan memahami bilangan 896h dibanding dengan
bilangan yang sama, yakni biner 100010010110. System biner memliki
simbol 0 dan 1 untuk merepresntasikan keadaannya. Sementara itu dalam
bilangan basis-10, terdapat 10 buah simbol mulai dari 0 s/d 9. Sedang
pada heksadesimal (basis-16) memiliki 16 simbol. Yang simbol pertamanya
adalah seperti basis-10 yakni 0 s/d 9 sementara itu 6 symbol berikutnya
adalah A, B, C, D, E, dan F. Table 0-1 menunjukkan persamaan dari
bilangan biner, desimal, dan heksadesimal untuk merepresentasikan nilai 0
s/d 15.
Tabel 0-1: System bilangan Basis-16
Desimal Biner Hex
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
|
Mengubah antara Biner dan Hex
Untuk
mengubah kembali bilangan biner sebagaimana ekuivalensinya sebagai
bilangan haksadesimal, dimulai dari kanan, dan mengelompokkan setiap 4
digit, dan menggantikan 4-bit biner tersebut dengan persamaannya sebagai
bilangan Hex sepeti yang ditunjukkan pada tabel 0-1. Utuk mengubah dari
hex ke biner setiap digit hex harus diganti dengan persamaannya sebagai
4 bit biner seperti pada table 0-1.
Lihat contoh 0-4 dan 0-5
Contoh 0-4
|
Ubah biner 100111110101 dalam Hex.
Jawaban:
Pertama nilai di kelompokkan dalam rangkaian 4-bit menjadi:
1001 1111 0101
Kemudian setiap kelompok diganti dengan padanannya dalam hex, menjadi:
1001 1111 0101
9 F 5
Sehingga, 100111110101 biner = 9F5 heksadesimal
|
Contoh 0-5
|
Ubah bilangan Hex 29B menjadi biner.
Jawaban:
2 9 B
= 0010 1001 1011
kemudian mengabaikan digit-digit 0 di depan, maka menjadi
29Bh = 1010011011b
|
Mengubah bilengan desimal ke hex
Untuk mengubah nilai bilangan hex dapat dilakukan dengan dua cara.
1. Ubahlah desimal menjadi biner. Dan kemudian menjadi Hex. Seperti yang ditunjukkan pada Contoh 0-6.
2.
Mengubah langsung dari desimal menjadi hex dengan melakukan pembagian
terus, dengan memantau isi sisa. Percobaan ini saya serahkan pada para
pembaca yang budiman.
Contoh 0-6
|
(a) Ubah 4510 menjadi Hex.
Seperti pada contih 0-1 maka diketemukan
32 16 8 4 2 1 mengubah menjadi biner
1 0 1 1 0 1 32 + 8 + 4 + 1 = 45
4510 = 001011012 = 2D hex
(b) Ubah 62910 menjadi Hex.
Seperti pada contih 0-1 maka diketemukan
512 256 128 64 32 16 8 4 2 1 menjadi biner
1 0 0 1 1 1 0 1 0 1
62910 = (512 + 64 + 32 + 16 + 4 + 1) =0010 0111 01012 = 275 hex
(a) Ubah 171410 menjadi Hex.
Seperti pada contih 0-1 maka diketemukan
1024 512 256 128 64 32 16 8 4 2 1
1 1 0 1 0 1 1 0 0 1 0
171410 = (1024 + 512 + 128 + 32 + 16 + 2) =0110 1011 00102 = 6B2 hex
|
Mengubah bilengan hex ke desimal
Untuk mengubah nilai bilangan hex dapat dilakukan dengan dua cara.
1. Ubahlah hex menjadi biner. Dan kemudian menjadi desimal. Seperti yang ditunjukkan pada Contoh 0-7.
2. Mengubah langsung dari hex menjadi desimal dengan melakukan panambahan besaran dari masing-masing digit.
Contoh 0-7
|
Ubahlah bilangan heksadesimal berikut ini menjadi desimal
(a) 6B216 = 0110 1011 00102.
1024 512 256 128 64 32 16 8 4 2 1
1 1 0 1 0 1 1 0 0 1 0
1024 + 512 + 128 + 32 + 16 + 2 = 171410
(b) 9F2D16 = 1001 1111 0010 11012.
32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1
32768 + 4096 + 2048 + 1024 + 512 + 256 + 32 + 8 + 4 + 1 = 40.74910
|
Mencacah dalam basis-10, 2 dan 16
Untuk
menunjukkan hubungan antara masing-masing basis ini. Dalam table 0-2
kita ditunjukkan urutan nilai 0 s/d 31 dalam desimal dan persamaannya
dalam biner dan heksadesmal. Perhatikan dalam masing-masing basis yang
jika sebuah bilangan ditambah kemudian menjadi digit yang lebih tinggi,
maka digit sebelumnya itu akan menjadi 0 dan akan memberikan kelebihan
Carry 1 pada digit dengan posisi yang lebih tinggi. Misalnya desimal 9 +
1 = 0 dengan membawa kelebihan Carry 1 pada posisi yang lebih tinggi
sehingga menjadi 10. Misal dalam biner 1 + 1 = 0 dengan kelebihan Carry
1. Juga dengan Hex jika F + 1 = 0 dengan Carry.
Tabel 0-2: Cacahan (Counting) dalam beberapa basis
Desimal Biner Hex
0 10000 0
1 10001 1
2 10010 2
3 10011 3
4 10100 4
5 10101 5
6 10110 6
7 10111 7
8 11000 8
9 11001 9
10 11010 A
11 11011 B
12 11100 C
13 11101 D
14 11110 E
15 11111 F
16 10000 10
17 10001 11
18 10010 12
19 10011 13
20 10100 14
21 10101 15
22 10110 16
23 10111 17
24 11000 18
25 11001 19
26 11010 1A
27 11011 1B
28 11100 1C
29 11101 1D
30 11110 1E
31 11111 1F
|
Penambahan bilangan biner dan Hex
Dalam
hal penambahan bilangan biner adalah merupakan proses yang langsung.
Table 0-3 menunjukkan penambahan 2 bit. Bahasan tentang pengurangan pada
bilangan biner akan kita lewati, karena semua komputer menggunakan
proses penambahan untuk juga digunakan pada proses pengurangan. Jadi
maksudnya komputer-komputer itu menggunakan satu rangkaian elektronika
untuk digunakan dalamproses penambahan dan sekaligus juga untuk proses
pengurangan. Yaknid dengan denambahkan rangkaain kompolement ke-2 (2nd Complement) untuk setiap melakukan Pengurangan. Dalmakata lain, untuk melakuakn “x-y“,komputer akan membuat komplement ke-2 untuk y dan kemudian menambahkannya pada x. Konsep kemplemen ke-2 ini akan kita bahas nanti. Contoh 0-8 menunjukkan proses penambahan pada bilangan biner.
Tabel 0-3: Penambahan Biner
A + B Carry Sum
0 + 0 0 0
0 + 1 0 1
1 + 0 0 1
1 + 1 1 0
|
Contoh 0-8
|
Tambahkan bilangan biner berikut ini. Periksa dengan padanannya dalam desimal.
Jawaban :
Biner Desimal
1101 13
1001 9 +
10110 22
|
Contoh 0-9
|
Lakukan penjumlahan 2 buah bilangan heksadesimal 23D9 + 94BE ?
Jawaban :
23D9
94BE +
B897
penjelasannya :
1. LSD: 9 + 14(E) = 23 ==> 23 – 16 = 7 dgn Carry
2. 1 + 13(D) + 11(B)= 25 ==> 25 – 16 = 9 dgn Carry
3. 1 + 3 + 4 = 8
4. 2 + 9 = 11(B)
jadi hasilnya adalah B897h
|
Contoh 0-10
|
Lakukan mengurangan 2 buah bilangan heksadesimal 59F – 2B8 ?
Jawaban :
59F
2B8 -
2E7
penjelasannya :
1. LSD: 15(F) + 8 = 7
2. 9 + 16(pinjam/borrow) – 11(B) = 14(E)
3. 5 – 1 – 1 = 2
jadi hasilnya adalah 2E7h
|
Pola
biner untuk nilai 0 s/s 9, semua menggunakan alphabet Inggris, huruf
Kapital, huruf kecil, dan beberapa kode kontrol dan tanda punctuation.
Kelebihan dari system ini adalah dapat digunakan oleh semua komputer.
Sehingga informasi ini dapat saling tukar antar komputer. System ASCII
menggunakan total 7-bit untuk merepresentasiakan setiap kode-nya.
Misalnya 100 0001 adalah dimiliki oleh huruf “A” dan 110 0001 adalah
dimiliki oleh huruf kecil “a”. Kemudian, 0 di-imbuh-kan pada Most
Significant Bit (MSB) atau bit paling kiri, sehingga total akan
membentuk sebuah kode 8-bit. Gambar 0-1 menunjukkan kode ASCII yang
dipilih. Daftar lengkap dari kode ASCII dapat dilihat pada Appendix F.
Penggunaan ASCII tidak hanya sebagai standar pada penggunaan keyboard di
United States dan beberapa negara lainnya, namun juga sebagai standar
pada penggunaan pencetakan karakter pada Printer dan penampilan karakter
pada Display Monitor.
Hex Symbol Hex Symbol
41 A 61 a
42 B 62 b
43 C 62 c
44 D 63 d
.. .. .. ..
59 Y 79 y
5A Z 7A z
|
Gambar 0-1: Sebahagian kode ASCII
Perhatikan
bahwa pola kode ASCII dirancang demi kemudahan manipulasi data ASCII.
Untuk contohnya, digit 0 sampai 9 direpresentasikan sebagai ASCII 30 s/d
39. Hal ini menjadi sangat mudah untuk mengkonversi ASCII ini menjadi
bilangan desimal atau biner dengan membuang angka 3 didepannya. Atau
dengan hanya mengambil 4-bit LSB saja pada model biner-nya. Juga
perhatikan hubungan antara huruf besar dan huruf kecil. Yakni dengan
yang di-representasi-kan huruf “A” s/d “Z” pada 41 s/d 5A dan dengan
huruf kecilnya, yakni 61 s/s 7A. Menyimak kode binernya, yang membedakan
antara huruf “A” dan “a” adalah bit ke-5. Sehingga dengan demikian
menjadi semakin mudahnya kita untuk mengubah Uppercase ataupun Lowercase
dari huruf-huruf tersebut.
Contoh 0-11
|
Lakukan Pengurangan Hex 59F – 2B8.
Jawaban :
59F -=- 15 – 8 = 7
- 2B8 -=- 25(9+16) – 11 = 14(Eh)
2E7 -=- 4(5-1) – 2 = 2
|
SubBAB 0-2 : Dasar-dasar Digital
Dalam
bagian ini kita akan membahas tentang logika digital dan desainnya.
Pertama adalah kita membahas operasi logika biner, kemudian kita
ditunjukkan bagaimana gerbang-gerbang melakukan hal itu. Kemudian
beberapa gerbang logika digunakan untuk membetuk rangkaian digital
sederhana. Dan terakhir kita mengupas beberapa peralatan logika yang
ternyata digunakan untuk interfacing pada mikrokontroller.
Binary Logic
Seperti
yang sudah diterangkan sebelumnya, komputer menggunakan system bilangan
biner karena 2 buah level tegangannya dapat direpresentasikan dengan
digit 0 dan 1. Sinyal dalam elektronika digital memilki 2 keadaan level
tegangan. Misalnya seperti system yang umum, tegangan 0 Volt diartikan
sebagai logika 0, dan tegangan 5 Volt dianggap sebagai logika 1. Gambar
0-2 menunjukkan system ini yang digunakan untuk menunjukkan representasi
tegangan terhadaap status logika dan berikut kemungkian toleransinya.
Gambar 0-2 : Sinyal Biner
Gerbang logika
Gerbang
logika biner adalah rengkaian sederhana yang memiliki 1 atau beberapa
input digital, dan mengirimkan hasilnya sebagai 1 output. Beberapa
gerbang yang umum diterangkan sebagaimana berikut ini.
gerbang AND
Gerbang
AND membutuhkan 2 atau lebih input untuk melaksanakan logika AND
tersebut. Lihat tabel kebenaran, yakni jika kedua input adalah 1 maka
output akan menjadi 1. Dicontohkan dengan 2 input, x dan y. Jadi jika
semua input adalah berlogika 1 maka output akan menjadi 1. Sedang jika
ada salah satu input yang ternyata 0, maka input akan menjadi 0.
fungsi logika AND
X Y X AND Y
0 0 0
0 1 0
1 0 0
1 1 1
|
gerbang OR
fungsi
logika OR adalah jika salah satu atau beberapa, atau semua inputnya
berlogika 1, maka output menjadi berlogika 1. Dan sebaliknya output akan
menjadi 0 hanya jika kesemua input adalah 0. OR ini memiliki input
lebih dari 1.
fungsi logika OR
X Y X OR Y
0 0 0
0 1 1
1 0 1
1 1 1
|
Tri-State buffer
Buffer
digunakan dan tidak akan mengubah level logika input-inputnya.
peralatan ini biasanya digunakan untuk menyambungkan sinyal dari 2 buah
peralatan dan juga digunakan untuk menguatkan sinyal-sinyal. Bufer ini
memiliki input tunggal ditambah kontrol E.
Inverter
Inverter
juga disebut dengan NOT, outputnya adalah selalu bernilai bertolak
belakang dengan inputnya. Misalnya jika inputnya 0 maka outputnya
menjadi 1 dan demikain sebaliknya. Inverter ini memiliki input tunggal.
fungsi logika INVerter
Input Output
0 1
1 0
|
Gerbangan XOR
gerbang
XOR melakukan operasi Exclusive-OR pada input-inputnya. XOR akan
meghasilnya 1 jika salah 1 (namun bukan keduanya) inputnya adalah 1. Dan
jika kedua input adalah 1, maka output XOR justru akan menjadi 0. Lihat
XOR dalam tabel kebenaran. Fungsi ini dapat digunakan untuk
membandingkan untuk melihat apakah 2 buah data adalah sama atau tidak.
XOR ini memiliki input lebih dari 1.
fungsi logika XOR
X Y X XOR Y
0 0 0
0 1 1
1 0 1
1 1 0
|
gerbang NAND dan NOR
fungsi
dari gerbang NAND adalah seperti dengan gerbang AND yang mana pabrik
hanya menambahkan sebuah inverter pada outputnya. Sehingga outputnya
akan menjadi 0 jika semua inputnya adalah 1. Dan output akan menjadi 1
jika ada salah satu input atau semuanya berlogika 0. NAND dan NOR ini
digunakan secara massive oleh desain komputer karena proses
pembuatan dalam pabrik adalah sangat murah. Semua gerbang logika yang
lain dapat diselenggarakan oleh kombinasi beberapa NAND dan NOR ini.
Misalnya untuk membuat AND, OR, XOR, dan INV. Contoh sederhananya dari
penggunaannya dapat dilihat pada gambar dibawah ini. NAND dan NOR ini
memiliki input lebih dari 1. Sekali lagi unuk NAND jika semua inputnya
adalah 1 maka outputnya akan menjadi 0. Dan untuk NOR, jika semua
inputnya adalah 0, maka outputnya adalah 1. NAND dan NOR ini
maisng-masing memiliki input lebih dari 1.
fungsi logika NAND
X Y X NAND Y
0 0 1
0 1 1
1 0 1
1 1 0
|
fungsi logika NOR
X Y X NOR Y
0 0 1
0 1 0
1 0 0
1 1 0
|
Rancangan logika dengan menggunakan gerbang-gerbang
Kemudian
kita akan ditunjukkan desain logika sederhana untuk melakukan
penambahan (ADD-ition) dari 2 buah bilangan biner. Jika kita hendak
menambahkan 2 buah bilangan biner, maka akan muncul 4 kejadian yang bisa
terjadi.
A + B Carry Sum
0 + 0 0 0
0 + 1 0 1
1 + 0 0 1
1 + 1 1 0
Perhatian
saat kita menambahkan 1 + 1 termasuk dengan carry, pada digit bilangan
yang lebih tinggi. Kita akan membutuhkan jumlah dan Carry (kelebihan)
dan desain ini. Perhatikan bahwa kolom SUM (penjumlahan) di atas
dihasilkan dari output fungsi XOR dan kemudian kolom Carry (Kelebihan)
dihasilkan dari fungsi AND. Gambar 0-3 (a) menunjukkan implementasi dari
adder sederhana. Gambar 0-3 (b) menunjukkan implementasi rangkaian logika yang sama dengan menggunakan gerbang AND dan OR.
Gambar 0-3 Implementasi dari Half-Adder
Gambar
0-4 menujukkan diagram blok dari half-adder. Dua buah half-adder dapat
dikompbinaskan dengan memnjadikkannya memiliki 3 buah input digital. Ini
kemudian disebut dengan full-adder. Gambar 0-5 menunjukkan bagaiaamna
dari diagram dari full-adder tersebut. Perhatikan pula bahwa blok
diagram yang menyembunyikan detil dari rangkaian. Gambar 0-6 menunjukkan
adder 3-bit dengan menggunakan 3 buah full-adder.
Gambar 0-4 Blok diagram dari Half-Adder
Gambar 0-5 Full-adder yang dibangun dengan menggunakan Half-Adder
Gambar 0-6 Adder 3-bit dengan menggunakan 3 buah Full-adder
Decoders
Contoh yang lain dari aplikasi gerbang logika adalah sebuah docoder.
Decoder adalah digunakan secara luas sebagai pen-dekode-an alamat dari
sebuah system komputer. Gambar 0-7 menunjukkan dekoder untuk 9 (biner
1001), dan 5 (biner 0101) dengan menggunakan gerbang INV dan AND.
Gambar 0-7. Decoder alamat
Flip-Flop
Komponen
system komputer yang juga digunakan secara luas adalah flip-flop.
Paling banyak flip-flop ini digunakan sebagai memory untuk menyimpan
data. Gambar 0-8 menunjukkan bagaimana diagram logika, diagram blok,
tabel kebenaran untuk sebuah flip-flop.
Flip-flop
type D, digunakan secara luas untuk mengunci data. Perhatikan tabel
kebenaran, D-FF mengambil data dari input seiring dengan diaktifkannya
Clock. Kemudian D-FF menahan statusnya (datanya) selama mungkin selama
adanya listrik pada-nya.
Flip-flop type D inilah yang menjadi komponen utama dari RAM statis berkecepatan tinggi. Dan digunakan sampai sekarang.
Gambar 0-8. Flip-flop type D
SubBAB 0-3: Bagian dalam komputer
Pada
bagian ini kita akan mengenalkan organisasi dari kerja internal dari
sebuah komputer. Model yang digunakan adalah secara umum, namun konsep
yang dibahas dapat diaplikasi pada semua komputer, termasuk IBM PC,
PS/2, dan yang kompatible lainnya. Sebelum itu, akan sangat membantu
jika kita me-review definisi dari beberapa terminologi yang digunakan
secara luas dalam literatur komputer seperti K, mega, giga, byte, ROM, RAM, dan seterusnya.
Beberapa terminologi yang penting
Salah
satu dari sekian banyak kelebihan terpenting dari komputer adalah
berapa banyak jumlah memory yang dimilikinya. Kemudian kita dapat
merujuk jumlah memory yang digunakan pada IBM PC atau yang kompatible.
Mengingat apa yang sudah didiskusikan sebelumnya bahwa bit adalah binary
digit yang hanya mungkin bernilai 0 dan 1. Sementara byte adalah
sebutan untuk 8-bit. Sementara Nibble adalah setengah dari byte, yakni
4-bit. Word adalah 2 byte, atau 16-bit. Berikut ini adalah ilustrasi
yang menampilkan ukuran relatif dari unit-unit tersebut. Tentu saja
bahwa semua itu bisa dibangun dari logika 0 dan 1.
bit 0
nibble 0000
byte 0000 0000
word 0000 0000 0000 0000
|
Kilobyte adalah 210 bytes, yng mana adalah 1024 bytes. Singkatan “K” kemudian digunakan sebagai kilobytes ini, misalnya “sebuah floppy disk memiliki kapasitas 356K bytes”. Megabytes (M) adalah 220 bytes, yang mana berarti 1.048.576 bytes (lebih dari 1 juta). Kemudian Gigabytes (G) adalah 230 bytes (lebihdari 1 milyar), dan Terabyte (T) adalah 240
bytes (lebih dari 1 triliun). Contoh tentnag bagaimana orang menerapkan
aturan ini, seperti pada sebuah komputer yang memiliki 16 Mbyte memory.
Yang berarti 16 x 220 atau 24 x 220 atau 224. Sehingga 16 Mbytes berarti adalah 224 bytes.
Dua tipe memory yang paling terkenal adalah RAM (Random Access Memory) dan ROM (Read only Memory).
RAM digunakan menyimpan data sementara saat program berjalan. Data di
dalamnya akan hilang saat komputer dimatikan. Karena inilah RAM juga
disebut dengan volatile memory. ROM berisikan program dan
informasi paling mendasar untuk operasi dari komputer. Informasi dari
ROM ini adalah bersifat permanen, dan tidak bisa diubah oleh user, dan
tidak hilang jika komputer dimatikan. Sehingga juga disebut dengan non volatile memory.
Organisasai Internal dalam komputer
Bagian
internal pada setiap komputer dapat dipisahkan menjadi 3 bagian: CPU
(Central Processing Unit), memory, dan peralatan I/O (Input/Output).
Fungsi dari CPU adalah untuk menjalankan informasi yang tersimpan pada
memory. Sedang fungsi dari peralatan I/O seperti Keyboard, monitor Video
digunakan oleh user manusia untuk berkomunikasi dengan CPU. CPU
terhubung dengan memory dan I/O dengan menggunakan jalinan kabel yang
disebut dengan bus (berumbung yang berisi banyak). Bus di dalam
komputer membaca informasi dari satu tempat ke tempat lain, mirip dengan
bus di jalan raya, yang datang mengangkut orang-orang dari tempat yang
satu ke tempat yang lain. Pada setiap komputer ada 3 tipe dari bus ini,
yakni bus alamat, bus data dan bus kontrol.
Agar
peralatan lain (memory dan I/O) dimengerti oleh CPU, mereka harus
menduduki alamatnya sendiri. Alamat yang diberikan harus unik, dan tidak
boleh ada 2 peralatan yang menduduki alamat yang sama. CPU mengambil
alamat (tentu saja dalam biner) pada bus alamat, dan unit rangkaian
decoder yang kemudian menemukan atau menetukan alamat sebenarnya dari
peralatan tersebut. Kemudian CPU menggunakan bus data untuk mengambil
data dari peralatan itu, atau untuk megirimkan data pada peralatan
tersebut. Bus kontrol digunakan untuk menyelenggarakan proses read/write
tersebut dengan mengirimkan sinyal-sinyal yang mem-beri-tahu-kan bahwa
CPU membutuhdan data atau hendak mengirimkan data. Dari 3 bus ini, bus
alamat dan bus data yang menjelaskan kemampuan dari CPU.
Gambar 0-9 bagian dalam CPU
Penjelasan lebih jauh tentang bus data
Mengingat
bus-bus data digunakan untuk membaca informasi dari dan ke CPU, semakin
banyak bus yang tersedia, maka semakin bagus sebuah CPU itu. Jika
sesorang berfikir bahwa bus-bus data adalah jalan tol, maka semakin
lengang jalan tersebut maka semakin baik hubungan antara CPU dan
peralatan eksternal lainnya (misalnya Printer, RAM, ROM, seperti pada
gambar 0-10). Dengan cara yang sama, bahwa meningkatkan jumlah bus akan
membuat meningkatnya jumlah biaya dari pembuatan system tersebut. Bus
data yang lebih banyak akan membuat harga CPU atau computer menjadi
lebih mahal. Ukuran yang umum dari bus-bus data ini adalah di antara 8
s/d 64 bit. Komputer kuno seperti “Apple2″ menggunakan bus data 8-bit,
sementara super-computer seperti “Cray” menggunakan data bus 64-bit.
Data bus adalah bersifat 2 arah, mengingat CPU akan menggunakan mereka
untuk mengiriman dan menerima data sekaligus. Kekuatan pemrosesan pada
komputer berkaitan erat dengan ukuran dari bus, mengingat bus 8-bit
hanya dapat mengirimkan data 1 byte dalam sekali kirim, sedang bus
16-bit dapat mengirimkan data 2 byte dalam sekali kirim.
Lebih jauh tentang bus alamat
Karena
bus alamat digunakan untuk menentukan identitas dari masing-masing
peralatan atau memory yang terhubung pada CPU, maka semakin besar bus
yang ada, semakin besar pula jumlah paralatan yang mungkin dapat
dihubungkan kepadanya. Degan kata lain, jumlah dari bus alamat CPU
menjelaskan jumlah lokasi yang mana dia mampu berkomunikasi. Jumlah
lokasi tersebut selalu equal dengan 2x, dimana x berarti
jumlah dari jalur bus alamat, seperti yang ada pada bus data. Misalnya
CPU memiliki jalur alamat 16, yang dapat mengalamati 65.536 (116
atau 64K byte) dari alamat-alamat memory. Setiap lokasi dapat diartikan
untuk mengalamati 1 byte data. This is due to the fact that all
general-purposes microprocessor CPUs are what called byte addressable.
Misalnya juga, sebuah PC IBM 80186 yang memiliki jalur alamat 24 buah
dan jalur data 16 buah. Dalam hal ini total memory yang bisa dialamati
adalah 16 megabytes (224 = 16 MB). Dalam contoh ini maksudnya adalah terdapat 224 lokasi
memory, karena setiap lokasi adalah 1 byte, sehingga total adalah 16
megabyte memory yang bisa dialamati oleh komputer tersebut. Bus address
(alamat) ini adalah tergolong sebagai unidiretional bus, yang
mana berarti bahwa CPU menggunakan bus alamat ini hanya untuk mengirim
keluar alamat-alamat. Singkatnya : Total jumlah dari lokasi memory yang
bisa dialamati yang diberikan CPU selalu equal dengan 2x, di mana x adalah jumlah bit alamat, seperti yang terjadi pula pada bus data.
Gambar 0-10 : Organisasi Internal, dalam Komputer
CPU dan hubugannya dengan RAM dan ROM
Agar
CPU dapat memproses informasi, data harus disimpan pada dalam RAM atau
ROM. Fungsi dari ROM dalam komputer adalah untuk memberikan informasi
yang mana informasi tersebut bersifat tetap dan permanen. Informasi ini
bisa seperti table dari pola karakter yang mungkin digunakan untuk
menampilkan hasil perhitungan pada display monitor, atau program yang
esensial (mendasar) agar komputer dapat bekerja, misalnya program untuk
menguji atau menghitung jumlah RAM yang terpasanag dalam system, dan
menampilkan hasilnya pada layar monitor. Hal ini berbeda dengan RAM yang
digunakan untuk menyimpan informasi yang tidak bisa permanen. Dan dapat
diubah-ubah setiap saat. Misalnya untuk komputer IBM PC, RAM diubah
oleh beberapa operating system berbeda atau aplikasi lain, misalnya Word
Proccessing atau Penghitung Pajak dll. Aplikasi ini di-load ke dalam
RAM, kemudian CPU menjalankan program yang telah di-load tersebut. CPU
mungkin tidak dapat menjalankan program langsung dari disk, karena disk
memiliki kecepatan yang sangat rendah. Atau denga kata lain, CPU hendak
mengambil informasi untuk diproses, pertama dilihat dari RAM atau ROM.
Jika ternyata tidak ada maka CPU akan mencarinya di dalam Disk, kemudian
menyalin isinya pada RAM. Untuk alasan ini RAM dan ROM disebut dengan primary memory dan disk disebut sebagai secondary memory. Gambar 0-11 menunjukkan diagram blok dari organisassi internal dari sebuah PC.
Dalam
mikrokontroller, yang umumnya hanya memiliki hanya 1 buah program yang
disimpan dalam ROM. Dan CPU dapat menggunakan RAM untuk menyimpan
variable-variable tertentu yang digunakan untuk keperluan dalam program
tersebut. Misalnya untuk menyimpan data yang dibaca dari port. Atau
menyimpan kerakter yang nanti hendak ditampilkan pada Monitor.
Bagian dalam CPU
Program
disimpan dalam memory untuk memberikan instruksi pada CPU agar dia
dapat berjalan. Kerja dari CPU ini secara sederhaa adalah untuk menambha
data seperti meis kasir atau mengontrol mesin seperti robot. Hal ini
adalah fungsi dari CPU untuk mnerima inforamsi dari memory (fetch) dan
kemudian menjalankannaya (execute). Untuk menyelenggarakan fetch and execute terssebut CPU harus dilengkapi dengan sumber daya semacam berikut:
1. Salah satu hal yang penting dari CPU adalah adanya beberap abuah regsiter. CPU mengunakan register
untuk menyimpan informasi secara sementara. Informasi mungkin 2 jenis,
yakni sebauh nilai yang bisa langsung diproses, atau sebuah nilai dari
sebuah alamat dari sebuah nilai lain yang harus diambil untuk bisa
diproses. register dalam CPU bisa 8-bit, 16-bit, 32-bit atau 64-bit,
tergantung dari seberap aperkasanya CPU. Sehingga CPU yang baik harusnya
memiliki register yang banyak dan besar. Tentu saja dengan demikian
tingkat kesulitan pembuatannya juga semakin tinggi, sehingga semakin
mahal harganya.
2. CPU harus juga memiliki ALU (Aritmatic/Logic Unit).
Bagian ALU dalam CPU adalah yang paling bertanggung jawab ataas proses
perhitungan matematika seperti add, subtract, multiply, divide, dan
dungsi logika seperti AND, OR, XOR dan NOT.
3. Setiap CPU harus memiliki apa yang disebut dengan Program Counter.
Fungsi dari Program Cotner ini adalah untuk menunjuk alamat dari
instruksi yang hendak dilaksanakan.. Setaip satu instruksi dilaksanakan,
maka isi program counter ini akan di-INC-rement ke alamata selanjutnya
untuk dilaksanakan kemudian. Dalam mikro kontroller program Counter ini
disingkat sebagai “PC”, sedang pada komputer IBM -PC disebut dengan IP
atau Instruction Pointer.
4. Fungsi dari “instruction decoder” adalah mengartikan instruksi yang diterima oleh CPU. Orang bia berfikir bahwa instruction decoder ini
adalah sbeuah kamus, yang menyimpan arti dari setiap instrukis dan apa
yang harus dikerjakan oleh CPU setelah menerima instruksi tersebut.
Persis seperti kamus, semakin banyak instrkki yang hendak diartikan,
maka semakin banyak instruksi yang bis diterjemahkan oleh CPU, dan juga
semakin banyak jumlah transistor yang harus ditanam ke dalam CPU.
Proses kerja dalam komputer
Untuk mendemonstrasikan beberapa konsep yang dibahas sebelumnya, analisys langkah demi langkah dari proses CPU
akan
menuntun kita, yakni dengan cara menambhakan 3 nilai berbeda yang akan
ditemui nanti. Menganggap bahwa seolah CPU memiliki register-regsiter
sebutlah A, B, C, dan D. Dia juga memiliki 8-bit bus data dan bus alamat
16-bit. Sehingga CPU dana mengakses emory dari alamat 0000h s/d FFFFh
(untuk jumlah total 10000h). Tindakan yang harus dilakukan adalah CPU
harus mengambil nilai heksadesimal 21 dan menyimpannya pada register A,
dan kemudian menambahkannya dengan nilai 42h dan 12h. Anggaplah bahwa
kode untuk CPU tersebut untuk memindahkan nilai pada register A adalah
1011 0000 (B0h) dan kode untuk menambahkan nilai pada register A adalah
0000 0100 (04h). Langkah yang penting dan kode untuk melaksanakannya
adalah seperti berikut ini.
Tindakan Kode Data
Salin nilai 21h pada register A 80h 21h
Tambahkan nilai 42h pada register A 04h 42h
Tambahkan nilai 12h pada register A 04h 12h
Jika
program untuk melakukan tindakan seperti di atas adalah tersimpan pada
memory pada lokasi dimulai dari 1400h, berikut ini adalah isi memory
selengkapnya sesuai dengan kode di atas.
Alamat memory Isi dari alamat memory
1400 (B0) kode untuk memindahkan nilai ke register A
1401 (21) nilai yang hendak dipindah
1402 (04) kode untuk menambahkan nilai ke register A
1403 (42) nilai yang hendak dipindah
1404 (04) kode untuk menambahkan nilai ke register A
1405 (12) nilai yang hendak dipindah
1406 (F4) kode untuk HALT
Tindakan yang diambil oleh CPU untuk menjalankan program di atas adalah seperti berikut ini:
1.
Program-Counter (CP) dapat bernilai di antara 0000 s/d FFFFh.
Program-Counter harus diatur pada 1400h (lokasi instruksi pertama dari
program di atas). Setelah program-counter siap, yakni dengan menunjuk
alamat instruksi pertama yang akan segera dilaksanakan
2.
CPU mengaplikasikan 1400h pada bus alamat dan mengirimkannya keluar.
Rangkaian memory Menentukan lokasi yang diminta oleh CPU, dan kemudian
CPU menerbitkan perintah sinyal READ, yang mengindikasikan kepada
memory, bahwa CPU membutuhkan data byte pada lokasi 1400 tersebut. Hal
ini membuat isi dalam lokasi 1400h, yakni B0h, kemudian dikirimkan oleh
memory pada CPU melalui bus data.
3. CPU kemudian menterjemahkan instruksi B0 tersebut dengan menggunakan bantuan “kamus” milik Instruction Decoder.
Saat mencari definisi dari instruksi tersebut, kemudian diketahui bahwa
instruksi tersebut ternyata berarti CPU harus membaca data yang
letaknya berada pada lokasi memory selanjut (1401h), yang harus
dikirimkan kepada register A. Saat data 21h dikirimkan oleh CPU dari
memory lokasi 1401h ke dalam register A tersebut, CPU harus memastikan
bahwa pintu-pintu pada register yang lain harus tertutup, kecuali untuk
register A. Sehingga nilai 21h tersebut dapat dikirimkan langsung pada
register A. Seteleh menyelesaikan instruksi ini, maka Program-Counter
akan menunjukkan instruksi selanjutnya. Yakni dalam hal ini adalah
menunjuk lokasi memory 1402h. Alamat 1402 dikirim kemudian oeh CPU,
sebelum CPU membaca instruksi berikutnya.
4.
Dari lokasi memory 1402h dikirim kode 04h. Setelah diterjemahkan
ternyata berarti, ada sesuatu yang harus ditambahkan pada register A.
Yakni byte yang lokasinya setelah instruksi, yakni lokasi 1403h. Setelah
membawa data tersebut ke dalam CPU (yakni 42h), maka oleh peralatan ALU
ke dua bilangan tersebut ditambahkan. Setelah proses penambahan terjadi
maka hasil dari ALU tersebut dikembalikan pada register A lagi.
Sementara itu Program-Counter sekarang telah menunjuk alamat 1404h,
sebagai alamat dari instruksi selanjutnya.
5.
Alamat 1404h diberikan pada bus alamat, dan datanya diberikan pada CPU,
diterjemahkan, dan dijalankan. Kode ini ternyata juga melakukan
penambahan terhadap register A. Kemudian Program-Counter menjadi 1406h.
6.
Terakhir, isi dari alamat 1406 ini diambil dan dijalankan. Ternyata
adalah perintah HALT. Yang memerintahkan CPU untuk berhenti bekerja dan
tidak menambahkan isi PC (Program-Couter) lagi untuk menanyakan
instruksi berikutnya. Setelah CPU dipaksa keluar dari kondisi HALT, maka
komputer kembali menambahkan PC dan menjalankan instruksi berikutnya.
Sekarang
bagaimana jika alamat 1403 isinya kita ubah dari 42 menjadi 04.
Bagaimana komputer dapat membedakan kemudian dengan kode 04 atau data 04
yang akan ditambahkan? Ingat bahwa kode 04 untuk CPU ini adalah berarti
memindahkan nilai berikutnya kepada register A. Sehingga komputer tidak
perlu untuk men-dekode-kan lagi data byte berikunya. Dia akan segera
untuk memindahkan isi dari memory tersebut pada register A.
Gambar 0-11 Blok diagram internal dari CPU
RINGKASAN
System
bilangan biner merepresentasikan semua bilangan dengan kombinasi dari
digit-digit biner, yakni 0 dan 1. Penggunaan system biner dibutuhkan
komputer digital karena hanya 2 hal itu yang direpresntaskan komputer,
yakni On dan Off. Segala jenis bilangan biner dapat diubah dan
dikonversi menjadi padanannya dengan heksadesimal, dan begitu pula
sebaliknya. Bilangan kode ASCII adalah bilangan biner yang
merepresentasikan data alphanumerik dalam proses internal CPU.
Gerbang
logika AND, OR dan Inverter adalah dasar dari membangun rangkaian blok
sederhana. Gerbang NAND, NOR, dan XOR juga digunakan untuk
mengimplementasikan desain rangkaian. Diagram half-adder dan full-adder
diberikan berikut contohnya dalam penggunaan gerbang logika untuk desain
rangkaian. Decoder digunakan untuk mendeteksi alamat-alamat. Flip-flop
digunakan untuk mengunci data sampai rangkaian lain mengubahnya.
Komponen
utama dari berbagai system komputer adalah CPU, memory dan paralatan
I/O. Memory terbagi menjadi 2 jenis, yakni sifatnya yang “sementara”
dan/atau “permanen” dalam menyimpan data. Dalam beberapa komputer,
memory diakses dalam byte atau word. Istilah Kilobytes, megabytes, Gigabytes, dan Terabytes digunakan untuk menyingkat jumlah byte yang sangat banyak. Ada 2 jenis utama dari sebuah memory, yakni RAM dan ROM. RAM (Random Access Memory) digunakan untum menyimpan data/kode secara sementara. Sementara ROM (Read Only Memory)
digunakan untuk menyimpan data/kode secara permanen, yang biasanya ini
digunakan oleh CPU untuk menyimpan instruksi-istruksi yang akan
dijalankan agar CPU dapat bekerja. Semua komponen dari system komputer
dapat dikontrol oleh CPU. Peralatan pelengkap semacam I/O (input/output)
memberian kesempatan pada CPU untuk berkomunikasi dengan manusia atau
juga system komputer yang lain.
Ada
3 tipe bus untuk sebuah komputer: bus alamat, bus data, dan bus
kontrol. Yang bus-bus ini digunakan CPU untuk menghubungi peralaan
lainnya. Bus data digunakan untuk mengirimkan inforamasi di antara CPU
dan peralatan lainnya.
Geen opmerkings nie:
Plaas 'n opmerking