DASAR TEKNIK

KOMPUTER

R. Purnama, S.T., M.T.

Penerbit K-Media Yogyakarta, 2020 DASAR TEKNIK KOMPUTER x + 256 hlm.; 14 x 20 cm

ISBN: 978-602-451-706-9

Penulis : R. Purnama Tata Letak : Uki Desain Sampul : Hary Mulyanto

Cetakan : Februari 2020

Copyright © 2020 by Penerbit K-Media All rights reserved

Hak Cipta dilindungi Undang-Undang No 19 Tahun 2002.

Dilarang memperbanyak atau memindahkan sebagian atau seluruh isi buku ini dalam bentuk apapun, baik secara elektris mau pun mekanis, termasuk memfotocopy, merekam atau dengan sistem penyimpanan lainnya, tanpa izin tertulis dari Penulis dan Penerbit.

Isi di luar tanggung jawab percetakan

Penerbit K-Media Anggota IKAPI No.106/DIY/2018 Banguntapan, Bantul, Yogyakarta. e-mail: [email protected]

ii KATA PENGANTAR

Alhamdulillah puji syukur penulis panjatkan kehadirat Allah SWT karena atas berkat rahmat dan karunianya, buku ajar ini dapat diseleaikan. Buku ini adalah merupakan buku ajar kedua yang penulis susun dan dipergunakan khususnya untuk para mahasiswa semester satu fakultas teknik program studi teknik komputer Universitas Wiralodra. Materi yang terdapat di dalam buku ini merupakan dasar-dasar teknik komputer yang harus dikuasai dan dipahami oleh para mahasiswa sebelum melanjutkan ke mata kuliah-mata kuliah keahlian yang akan diberikan pada semester-semeseter selanjutnya.

Untuk memudahkan pemahaman, pada setiap bab penulis berikan beberapa contoh soal beserta penyelesaiannya. Sementara pada akhir setiap bab diberikan soal-soal sebagai latihan. Dan diharapkan para mahisiswa untuk aktif mempelajari teori dan mengerjakan contoh-contoh soal beserta latihan- latihannya. Dengan begitu proses belajar dan mengajar akan menjadi efektif dan didapatkan hasil yang maksimal.

Ucapan terimakasih ingin penulis sampaikan kepada : 1. Bapak Hamdani Abdulgani, ST., M.Si selaku dekan fakultas teknik Universitas Wiralodra Indramayu. 2. Bapak Darsanto, ST.,M.Kom selaku kaprodi teknik komputer Universitas Wiralodra Indramayu. 3. Rekan-rekan sesama dosen beserta semua staff tata usaha fakultas teknik Universitas

iii Wiralodra atas semua bentuk support dan dukungannya sehingga penulisan buku ajar ini dapat terselesaikan dengan baik. Akhirnya penulis pun menyadari bahwa tentu buku ajar ini masih jauh dari sempurna. Oleh karenanya, kritik dan saran terhadap penyempurnaan buku ajar ini sangat diharapkan. Semoga buku ajar ini dapat memberikan manfaat dan kemudahan bagi para mahasiswa khususnya program studi teknik komputer Universitas Wiralodra.

Indramayu, 22 Januari 2020 Penulis,

R. Purnama

iv DAFTAR ISI

KATA PENGANTAR ...... iii DAFTAR ISI ...... v

BAB 1. SEJARAH DAN EVOLUSI KOMPUTER ...... 1 1.1. Pendahuluan ...... 1 1.2. Komputer-Komputer Mekanik ...... 3 1.3. Komputer-Komputer Elektronik ...... 10 1.3.1. Komputer Generasi Pertama ...... 13 1.3.2. Komputer Generasi Kedua ...... 20 1.3.3. Komputer Generasi Ketiga ...... 22 1.3.4. Komputer Generasi Lanjut ...... 24 1.4. Perkembangan Bahasa Pemrograman ...... 26 1.5. Perkembangan Mikroprosesor (Intel) ...... 30

BAB 2. ARSITEKTUR DASAR KOMPUTER ...... 47 2.1. Pendahuluan ...... 47 2.2. Arsitektur Von Neumann ...... 48 2.3. Arsitektur Harvard ...... 50 2.4. Komputer Digital ...... 51 2.4.1. Cara Kerja Komputer ...... 55 2.4.2. Format Instruksi ...... 56

BAB 3. KONSEP DASAR SISTEM BILANGAN ...... 58 3.1. Pendahuluan ...... 58 3.2. Sistem Bilangan Desimal ...... 59 3.3. Sistem Bilangan Biner ...... 60 3.4. Sistem Bilangan Oktal dan Heksadesimal ...... 62 3.5. Konversi Konversi Bilangan ...... 63 3.5.1. Konversi Bilangan Desimal ke Biner ...... 64

v 3.5.2. Konversi Bilangan Desimal ke Oktal ...... 68 3.5.3. Konversi Bilangan Desimal ke Heksa ...... 69 3.5.4. Konversi Bilangan Biner ke Desimal ...... 73 3.5.5. Konversi Bilangan Biner ke Oktal ...... 74 3.5.6. Konversi Bilangan Biner ke Heksadesimal ...... 75 3.6. Representasi Bilangan Biner ...... 75 3.6.1. Sign-Bit Magnitude ...... 75 3.6.2. Sistem Bilangan Komplemen ...... 78 3.6.2.1. Representasi Komplemen -1 ...... 82 3.6.2.2. Representasi Komplemen -2 ...... 82 3.7. Bilangan Floating Point ...... 89

Bab 4. ARITMATIKA KOMPUTER ...... 93 4.1. Pendahuluan ...... 93 4.2. Aturan Dasar Penjumlahan Biner ...... 93 4.3. Aturan Dasar Pengurangan Biner ...... 97 4.4. Aturan Dasar Perkalian Biner ...... 100 4.5. Pembagian Biner ...... 102 4.6. Operasi Aritmatika Komplemen -2 ...... 103 4.6.1. Penjumlahan Dengan Menggunakan Komplemen -2 ...... 104 4.6.2. Pengurangan Dengan Menggunakan Komplemen -2 ...... 107 4.7. Aritmatika Bilangan Floating Point ...... 113 4.7.1. Penjumlahan dan Pengurangan Bilangan Floating Point ...... 114 4.7.2. Perkalian dan Pembagian Bilangan Floating Point ...... 115

vi Bab 5. ALJABAR BOOLEAN ...... 120 5.1. Pendahuluan ...... 120 5.2. Operasi Dasar ...... 121 5.2.1. Pernyataam (Ekspresi) Boolean ...... 123 5.2.2. Tabel Kebenaran ...... 123 5.2.3. Postulat-Postulat Aljabar Boolean ...... 124 5.2.4. Hukum-Hukum Aljabar Boolean ...... 124 5.2.4.1. Hukum identitas : ...... 125 5.2.4.2. Hukum idempoten : ...... 125 5.2.4.3. Hukum komplemen : ...... 126 5.2.4.4. Hukum dominansi : ...... 126 5.2.4.5. Hukum involusi : ...... 127 5.2.4.6. Hukum penyerapan : ...... 127 5.2.4.7. Hukum komutatif :...... 128 5.2.4.8. Hukum asosiatif : ...... 129 5.2.4.9. Hukum distributif : ...... 129 5.2.4.10.Hukum De Morgan : ...... 129 5.2.4.11.Hukum 0/1 ...... 130 5.3. Gerbang Logika ...... 131 5.3.1. Gerbang AND ...... 131 5.3.2. Gerbang OR ...... 132 5.3.3. Gerbang NOT (Inverter) ...... 133 5.3.4. Gerbang NAND ...... 134 5.3.5. Gerbang NOR ...... 135 5.3.6. Gerbang XOR ...... 135 5.3.7. Gerbang XNOR ...... 136 5.4. Penyederhanaan Fungsi Boolean ...... 138 5.4.1. Penyederhanaan Secara Aljabar ...... 140 5.4.2. Metode Peta Karnaugh ...... 146 5.5. Aplikasi Aljabar Boolean ...... 157 5.5.1. Rangkaian ...... 157

vii 5.5.2. Rangkaian Aritmatika ...... 159 5.5.2.1. Half ...... 159 5.5.2.2. Full Adder ...... 161 5.5.2.3. Half Subtractor ...... 163 5.5.2.4. Full Subtractor ...... 164 5.5.2.5. Controlled Inverter ...... 166

BAB 6. (CPU) ...... 170 6.1. Pendahuluan ...... 170 6.2. Unit-Unit Fungsional Dari CPU ...... 171 6.2.1. (CU) ...... 173 6.2.2. Arithmetic And Logical Unit (ALU) ...... 175 6.2.3. Register ...... 175 6.2.3.1. Program (PC) ...... 179 6.2.3.2. Instruction Register (IR)...... 180 6.2.3.3. Memory Addres Register (MAR) ...... 182 6.2.3.4. (MBR) ...... 182 6.2.3.5. Instruction Buffer Register (IBR) ...... 182 6.2.3.6. Accumulator (ACC) ...... 182 6.2.3.7. Multiplier Quotient (MQ) ...... 183

BAB 7. UNIT MEMORI ...... 184 7.1. Pendahuluan ...... 184 7.2. Memori Internal dan Eksternal ...... 185 7.3. Hirarki Memori...... 187 7.4. Karakteristik Sistem Memori ...... 193 7.5. Tipe-Tipe Memori Utama Semikonduktor...... 198 7.5.1. Random Access Memory (RAM) ...... 199

viii 7.5.1.1. Dynamic RAM (DRAM) ...... 201 7.5.1.2. Static RAM (SRAM)...... 203 7.5.2. Read Only Memory (ROM) ...... 205 7.5.2.1. Programmable ROM (PROM) ..... 206 7.5.2.2. Erasable PROM (EPROM) ...... 207 7.5.2.3. Flash Memory ...... 208 7.5.2.4. Electrically Erasable PROM (EEPROM) ...... 209 7.6. Memory ...... 210 7.7. ...... 214

BAB 8. SISTEM INPUT-OUTPUT (I/O)...... 217 8.1. Pendahuluan ...... 217 8.2. Teknik-Teknik Dasar I/O Pada PC ...... 219 8.2.1. Programmed I/O ...... 221 8.2.2.Interrupt-Driven I/O...... 223 8.2.3.Direct Memory Access (DMA) ...... 226

BAB 9 KONSEP DASAR ...... 232 9.1. Pendahuluan ...... 232 9.2. Konfigursai Bus Mikroprosesor...... 232 9.3. Beberapa Standar Bus Pada PC ...... 237 9.3.1. Bus PCI dan PCI Express ...... 239 9.3.2. USB ...... 239

DAFTAR PUSTAKA ...... 242

DAFTAR ISTILAH...... 243

ix

x BAB 1. SEJARAH DAN EVOLUSI KOMPUTER

1.1. Pendahuluan Komputer-komputer elektronik digital seperti yang kita kenal sekarang ini adalah telah berkembang sejak tahun 1940-an. Selama perang dunia II, komputer elektronik pertama adalah dirancang dan dibangun di Inggris dengan nama Colossus. Sementara di Amerika Serikat, pada saat yang hampir bersamaan juga dibangun sebuah mesin hitung ENIAC, tepatnya di Universitas Pennsylvania, dengan menggunakan teknologi yang sama berupa tabung hampa udara dan dikembangkan untuk peralatan militer. Hanya saja perbedaannya adalah bahwa colossus adalah merupakan special purpose computer yang tetap dan tidak dapat diprogram. Sementara ENIAC adalah merupakan sebuah general purpose computer yang dapat diprogram. Rangkaian-rangkaian tabung hampa udara tersebut digunakan untuk melakukan operasi-operasi aritmatika, logika dan juga untuk penyimpanan data. Teknologi ini kemudian menginsiasi dan menjadi awal dari era komputer-komputer elektronik digital modern sekarang ini. Sementara itu, menurut perkembangan teknologi yang digunakan untuk melakukan fabrikasi prosesor, memory dan unit-unit I/O, komputer-komputer tersebut dapat dibagi menjadi beberapa generasi, yaitu generasi pertama (1946- 1957), generasi kedua (1957-1964), generasi ketiga (1965-1971), generasi keempat (1972-1977), generasi kelima (1978-1991) dan generasi keenam (1991-sekarang).

Dasar Teknik Komputer 1 Tabel 1.1. Pembagian generasi komputer elektronik berdasarkan teknologi

Generasi Tahun Teknologi Yang Digunakan 1 1946 - 1957 Tabung Vacuum/hampa udara 2 1957 - 1964 Transistor 3 1965 - 1971 SSI dan MSI 4 1972 - 1977 LSI 5 1978 - 1991 VLSI 6 1991 - Sekarang ULSI

Namun, sebelum kemunculan generasi komputer-komputer elektronik digital tersebut, sebuah evolusi mesin hitung mekanik juga terjadi dan mendahului perkembangan dari komputer- komputer elektronik digital. Sejak awal tahun 1600-an, serangkaian alat-alat mekanik yang komplek seperti roda gigi, pengungkit dan katrol adalah digunakan untuk melakukan operasi-operasi dasar penjumlahan, pengurangan, perkalian dan pembagian. Kemudian punched card (lubang-lubang pada kartu) yang berbasis mekanis juga digunakan untuk menyediakan sebuah pemrograman. Alat-alat tersebut memungkinkan untuk melakukan penghitungan dari tabel-tabel matematika dan juga fungsi-fungsi yang komplek lainnya. Sementara itu, relay-relay elektromekanik, seperti yang digunakan didalam sistem sentral telepon (switching) pada masa-masa awal, juga menyediakan cara untuk melakukan fungsi-fungsi logika pada komputer- komputer yang dibangun pada akhir 1930-an dan awal 1940-an tersebut.

2 Dasar Teknik Komputer

1.2. Komputer-Komputer Mekanik Meskipun mempelajari sejarah dan mengidentifikasi tanggal penemuan dari komputer adalah mungkin tidak begitu penting untuk sebagian orang dalam memahami sebuah komputer. Akan tetapi, bagaimanapun juga hal itu telah menjadi aspirasi bagi umat manusia untuk menciptakan sebuah perangkat yang dapat memudahkan pekerjaan dan rutinitasnya sehari-hari. Hal itu akan memberikan sebuah perspektif historis dari evolusi komputer yang begitu cepat. Oleh karenanya, adalah tidak mengejutkan bahwa orang membayangkan untuk menciptakan perangkat- perangkat mekanik yang dapat menyederhankan rutinitas pekerjaan, pengolahan data dan perhitungan-perhitungan dimasa lalu. Dan pada kenyatannya, memang terdapat beberapa bukti fisik akan keberadaan mesin hitung pada jaman dulu yang digunakan untuk operasi perhitungan sehari-hari. Abacus1 adalah dipercaya sebagai alat hitung pertama yang digunakan oleh manusia sejak awal tahun 500 sebelum masehi (BC) oleh orang-orang Yunani dan Romawi. Alat ini menjadi sebuah pendahulu (predecessor) bagi komputer-komputer modern yang kita gunakan sekarang ini. Tentu saja, abacus tersebut juga dapat digunakan untuk melakukan operasi-operasi perhitungan dan penyimpanan data. Alat hitung tradisional ini tetap bertahan dalam penggunaannya hingga tahun 1500, dan pada kenyataannya, sampai saat ini pun masih ada sebagian orang yang masih mempertahankan penggunaannya untuk proses perhitungan sehari-hari.

1 Abacus ditemukan pertama kali oleh orang-orang Babylonia (nenek moyang bangsa Irak sekarang).

Dasar Teknik Komputer 3

Gambar 1.1. Abacus

Kemudian pada akhir tahun 1500-an, orang mulai berfikir untuk membuat sebuah mesin hitung yang otomatis. Mesin tersebut dibuat untuk dapat membantu meringankan pekerjaan, rutinitas perhitungan dan pengolahan data sehari-hari. Dan orang pertama yang terdokumentasi membangun sebuah mesin hitung otomatis adalah seorang matematikawan Perancis bernama Blaise Pascal (1623-1662). Mesin hitung ini, dibangun pada tahun 1642 ketika Pascal masih berusia 19 tahun dan dirancang untuk membantu ayahnya, yang merupakan seorang pengumpul pajak pada pemerintahan Perancis masa itu. Mesin Pascaline ini sepenuhnya bekerja secara mekanis, menggunakan roda gigi dan digerakkan oleh engkol. Mesin hitung ini masih sangat sederhana dan hanya dapat melakukan operasi-operasi perhitungan berupa penjumlahan dan pengurangan saja. Cara kerja mesin hitung ini mirip dengan mekanisme odometer untuk kendaraan bermotor saat ini.

4 Dasar Teknik Komputer

Gambar 1.2.. Pascaline

Selang 30 tahun kemudian, seorang matematikawan Jerman bernama Baron Gottfried Wilhelm von Leibniz (1646-1716) membangun sebuah mesin hitung mekanis yang lain yang selain dapat melakukan operasi penjumlahan dan pengurangan juga dapat melakukan operasi perkalian dan pembagian. Berikutnya, pada tahun 1801, seorang saudagar dan penenun berkebangsaan Perancis, Joseph Marie Jacquard (1752-1834) membangun sebuah mesin tenun (loom) yang menggunakan kartu-kartu berlubang (punched cards) untuk mengontrol pola-pola anyaman atau tenunan pada pakaian. Program-program disediakan oleh punched cards yang dapat menaikkan dan menurunkan benang- benang yang berbeda dalam urutan yang tepat untuk mencetak sebuah pola-pola tertentu. Ini adalah aplikasi dari penggunaan beberapa bentuk penyimpanan untuk menaruh sebuah program pada sebuah mesin semiotomatis yang dapat diprogram yang pertama kali terdokumentasi. Selang 150 tahun kemudian, seorang professor matematika di Universitas Cambridge, Charles Babbage (1792-1871), merancang dan membangun sebuah mesin hitung yang disebut difference engine. Mesin hitung ini dirancang dan dibangun secara parsial selama 1820 dan 1830. Mesin mekanis ini, juga

Dasar Teknik Komputer 5 seperti halnya buatan Pascal, hanya dapat melakukan operasi penjumlahan dan pengurangan saja, dan dirancang untuk menghitung tabel-tabel bilangan dan fungsi-fungsi polynomial. Keseluruhan konstruksi mesin tersebut adalah dirancang untuk menjalankan suatu algoritma tunggal, metode finite differences menggunakan polynomials. Meskipun difference engine bekerja dengan baik, Babbage mulai cepat bosan dengan sebuah mesin yang hanya dapat menjalankan satu algoritma. Dia pun mulai mencurahkan waktunya kembali dalam merancang dan mengkonstruksikan mesin penggantinya yang lain yang disebut dengan analytical engine. Mesin analytical engine tersebut terdiri dari empat komponen, yaitu unit penyimpanan (memory), unit penghitungan (mill), bagian input (punched card reader) dan bagian output (punched card and printed output). Bagian penyimpanan terdiri dari 1000 word yang terdiri dari 50 digit desimal, masing-masing digunakan untuk menyimpan variabel-variabel dan hasil-hasil. Mill dapat menerima operand-operand dari penyimpanan tersebut, kemudian menjumlahkan, mengurangkan, mengalikan atau membaginya dan pada akhirnya mengembalikan hasilnya pada penyimpanan tersebut.

6 Dasar Teknik Komputer

Gambar 1.3.. Analytical engine (sumber : David M. Harris)

Mesin analitik buatan Babbage tersebut ternyata mirip dengan komputer modern didalam banyak cara konsepnya. Mesin Babbage tersebut memimpikan penggunaan punched card milik Jackuard untuk input data dan untuk program, menyediakan memory untuk penyimpanan internal, melakukan perhitungan seperti yang dispesifikasikan oleh program yang menggunakan sebuah unit pengolahan pusat (mill) dan mencetak keluaran (output). Seperti halnya difference engine, mesin analytical engine juga sepenuhnya bekerja secara mekanis. Keuntungan terbesar dari analytical engine adalah bahwa mesin ini merupakan general purpose computer2. Mesin tersebut membaca instruksi- instruksi dari punched card dan membawanya keluar. Beberapa instruksi memerintahkan mesin untuk mengambil bilangan dari penyimpanan tersebut, membawanya ke mill, dlakukan suatu operasi (misalnya penjumlahan), dan hasilnya dikirimkan

2 Mesin Analytical engine dikatakan merupakan general purpose computer karena mesin tersebut dapat diprogram.

Dasar Teknik Komputer 7 kembali ke penyimpanan. Instruksi-instruksi yang lain dapat mengetest sebuah bilangan dan mencabangkannya dengan bersyarat bergantung kepada apakah dia positip atau negatip. Dengan punching sebuah program yang lain pada input cards adalah memungkinkan bagi analytical engine untuk melakukan penghitungan-penghitungan yang berbeda, sesuatu yang tidak bisa dilakukan oleh difference engine. Karena analytical engine tersebut dapat diprogram dalam sebuah bahasa assembly yang sederhana, tentunya mesin tersebut membutuhkan software. Dan untuk menghasilkan software tersebut, Babbage kemudian menyewa seorang wanita muda bernama Ada Augusta Lovelace, yang merupakan seorang putri dari seorang penyair Inggris terkenal bernama Lord Byron. Program komputer pertama tersebut ditulis oleh Ada Lovelace dalam sebuah paper yang dia publish pada tahun 1843 pada usia 27 tahun. Ada menyarankan sebuah rencana untuk perhitungan bilangan- bilangan Bernoulli dengan mesin analytical engine tersebut. Dia memprogram sebuah mesin analytical engine bahkan hampir seratus tahun sebelum keberadaan komputer. Oleh karenaya, Ada Lovelace ini kemudian dikenal sebagai seorang programmer wanita dan pertama di dunia. Bahasa pemrograman Ada adalah dinamakan sebagai penghargaan dan penghormatan terhadap dirinya.

8 Dasar Teknik Komputer

Gambar 1.4. Ada Lovelace (sumber : David M. Harris)

Ide-ide dari Babbage tersebut adalah sudah sangat jauh ke depan pada waktu itu, dan bahkan saat ini kebanyakan komputer- komputer digital modern mempunyai sebuah struktur yang sangat serupa dengan analytical engine buatan Babbage tersebut, sehingga tentu saja cukup beralasan bila dikatakan bahwa Babbage adalah sebagai bapak komputer digital modern. Pada tahun 1896, seorang statistikawan dan inventor (penemu) asal Amerika Serikat, Herman Hollerith membentuk sebuah perusahaan yang bernama Tabulating Machine Company, yang mengembangkan mesin-mesin yang menggunakan punched cards untuk tabulasi. Kemudian setelah sejumlah merger, perusahaan tersebut berubah menjadi International Business Machines Corporation yang sekarang terkenal dengan nama IBM, Inc. Punched cards yang digunakan pada awal-awal sistem komputer adalah seringkali disebut sebagai Hollerith cards. Sementara kode 12 bit yang digunakan pada sebuah punched card disebut sebagai Hollerith cards.

Dasar Teknik Komputer 9

Gambar 1.5 Punched card IBM (sumber : Paul E. Ceruzi)

1.3. Komputer-Komputer Elektronik Pada akhir tahun 1930-an dan awal tahun 1940-an, beberapa kelompok peneliti yang berbeda secara independen mengembangkan versi dari komputer elektronik modern. Mark I, dibangun pada tahun 1937 oleh seorang matematikawan asal Amerika Seikat, Howard H. Aiken dan koleganya di universitas Harvard dengan bantuan dan pendanaan dari IBM. Mesin ini menggunakan ribuan relay, dimana relay adalah switch biner mekanik yang dikontrol oleh arus listrik. Meskipun relay- relay biner adalah digunakan untuk penghitungan, disain fundamentalnya adalah desimal. Penyimpanan terdiri dari tujuh puluh dua bilangan-bilangan desimal 23-digit, disimpan pada roda hitung (counter wheels). Sebuah digit roda penghitung tambahan memegang tanda, dengan menggunakan digit 0 untuk positif dan 9 untuk negatif. Rancangan Harvard Mark I tersebut nampaknya berdasarkan secara langsung dari konsep Babbage original dan menggunakan bagian-bagian penghitung mekanik dari mesin akunting IBM.

10 Dasar Teknik Komputer

Sementara itu, sebuah komputer elektromekanik yang serupa adalah dirancang dan dibangun oleh Konrad Zuse di Jerman pada pada tahun 1941. Konrad Zuse adalah seorang insinyur Jerman yang bekerja pada Henschel Aircraft Company di Berlin. Mesin hitung yang diberi nama Z3 tersbut, dibangun untuk penggunaan pada aircraft dan rancangan missile selama perang dunia II.

Gambar 1.6.. Komputer Z3 (sumber : Barry B. Brey)

Di Amerika Serikat, ada dua orang yang merancang dan membangun mesin hitung, yaitu John Atanasoff di Iowa State College dan George Stibbitz di Bell Labs. Mesin Atanasoff adalah sangat mengagumkan di jamannya dan canggih untuk saat itu. Mesin tersebut dibangun pada tahun 1939 oleh Atanasof dan seorang mahasiswa graduate yang bernama Clifford Berry, dengan menggunakan tabung hampa udara elektronik sebagai komponen-komponen switching. Mesin tersebut menggunakan aritmatika biner dan kapasitor-kapasitor untuk memory, yang

Dasar Teknik Komputer 11 secara periodik direfresh3 untuk tetap menjaga muatan dari kebocoran, sebuah proses yang dia sebut sebagai “jogging the memory”. Bisa dikatakan bahwa komputer yang betul-betul elektronik digital sepenuhnya adalah komputer yang direncanakan dan dirancang oleh John V. Atanasoff ini. Mesin tersebut dikenal sebagai mesin “ABC”, singkatan dari Atanasoff-Berry Computer. Mesin tersebut tidak dimaksudkan sebagai sebuah general-purpose computer, akan tetapi dibangun untuk menyelesaikan persamaan-persamaan fisika yang sedang Atanasoff kerjakan pada saat itu. ABC adalah sebuah mesin berbasis biner, seperti halnya komputer-komputer yang digunakan saat ini. Mesin ini terdiri dari sebuah unit logika/aritmatika dengan 30 unit yang dapat melakukan operasi penambahan dan pengurangan, sebuah memory drum yang berotasi yang memegang 30 bilangan-bilangan biner yang terdiri dari masing-masing 50 digit, dan masukan kartu berlubang (punched card input). Setiap punched card input tersebut memegang lima bilangan-bilangan desimal 15 digit. Bilangan- bilangan ini adalah dirubah menjadi biner ketika mereka memasuki mesin tersebut. Meskipun dengan keterbatasannya, ABC adalah sebuah pathmark yang membawa peningkatan penting selanjutnya didalam rancangan komputer. Sementara itu komputer Stibbitz, meskipun lebih primitif daripada komputer Atanasoff, sebetulnya bekerja dengan cukup baik. Stibbitz memberikan sebuah demonstrasi publik dari hasil karyanya tersebut pada sebuah konferensi di Dartmouth College pada tahun 1940. Salah seorang penontonnya yang bernama John

3 Proses ini mirip sekali dengan cara kerja dari chip-chip memory dinamik modern (DRAM) yang digunakan oleh komputer modern saat ini.

12 Dasar Teknik Komputer

Mauchley, seorang professor fisika di Universitas Pennsylvania, dimana dunia komputer akan lebih mengenal tentang sosok Prof. Mauchley ini nantinya.

1.3.1. Komputer Generasi Pertama Pemicu dibangunnya komputer-komputer elektronik adalah pada saat terjadinya perang dunia II. Selama bagian awal dari perang tersebut, kapal selam Jerman (Nazi) menghancurkan kapal perang Inggris. Perintah dikirim dari para petinggi militer Jerman di Berlin terhadap kapal selam tersebut melalui radio, dimana sebetulnya angkatan bersenjata Inggris dapat melakukan pencegahan (intercept). Problemnya adalah bahwa pesan-pesan (perintah) tersebut ditulis dalam bentuk kode atau sandi (encoded) dengan menggunakan sebuah perangkat yang disebut ENIGMA4. Kode-kode enigma tersebut pertama kali dipecahkan oleh Polandia, dibawah kepemimpinan matematikawan Marian Rejewski, pada awal 1930. Kemudian pada tahun 1939, dengan terjadinya peningkatan invasi oleh militer Jerman, Polandia menyerahkan enigma tersebut kepada militer Inggris. Bagaimananpun, untuk memecah sebuah pesan yang terkode tersebut, sejumlah besar penghitungan dibutuhkan. Untuk membaca dan menguraikan kode sandi (decode) pesan-pesan tersebut, pemerintah Inggris kemudian membangun sebuah laboratorium yang sangat rahasia untuk membangun sebuah komputer elektronik yang disebut COLOSSUS. Seorang matematikawan Inggris yang terkenal yang bernama Alan M. Turing memimpin grup pemecah kode tersebut yang dikenal sebagai ultra. Dan karena Jerman berbagi (share) perangkat

4 Enigma adalah sebuah perangkat yang digunakan oleh petinggi-petinggi militer Jerman (nazi) untuk mengencode pesan-pesan strategis sebelum dan selama perang dunia II.

Dasar Teknik Komputer 13 enkripsi tersebut dengan Jepang, maka ultra juga turut berkontribusi terhadap kemenangan sekutu di perang Pasifik. COLOSSUS, yang mulai beroperasi pada tahun 1943, merupakan sistem komputer elektronik pertama. Mesin ini menggunakan tabung-tabung vacuum untuk beroperasinya. Collosus terdiri lebih dari 1700 tabung vacuum (hampa udara), menggunakan thermionic valve atau tabung vacuum untuk melakukan operasi-operasi Bolean dan aritmatika dengan konsumsi daya 8,5 kW. Turing menyebut mesin ini Colossus, mungkin karena ukurannya yang sangat besar. Colossus tidak dapat diprogram karena merupakan sebuah sistem komputer yang sudah fix terprogram, yang sekarang ini sering disebut sebagai special purpose computer. Pencapaian dari colossus ini adalah telah mempersingkat perang, dan oleh karenanya tentu saja telah menyelamatkan jutaan nyawa.

Gambar 1.7. COLOSSUS

Selain stimulasi konstruksi dari COLOSSUS, perang tersebut juga mempengaruhi perkembangan komputer di AS.

14 Dasar Teknik Komputer

Tentara Amerika membutuhkan tabel-tabel jangkauan (range) untuk mengarahkan artillery-artilery beratnya. Mereka menghasilkan tabel-tabel ini dengan menyewa ratusan wanita untuk memproduksi masal dengan menggunakan kalkulator- kalkulator tangan meskipun proses ini pada akhirnya hanya menghabiskan banyak waktu dan error saja. John Mauchley, yang mengetahui hasil kerja Atanasoff dan juga Stibbitz, adalah sangat peduli dan aware bahwa militer sangat tertarik dengan kalkulator-kalkulator mekanik. Dia pun kemudian mengajukan proposal dan meminta angkatan bersenjata untuk mendanai pembangunan sebuah komputer elektronik. Proposal tersebut diterima pada tahun 1943 dan Mauchley beserta mahasiswa graduatenya yang bernama J. Presper Eckert, mulai memproses pembangunan sebuah komputer elektronik, yang diberi nama ENIAC (Electronic Numerical Integrator And Computer). Mesin hitung ini terdiri dari 18.000 tabung hampa udara (vacum) dan 1500 relay. Berat ENIAC mencapai 30 ton dan mengkonsumsi daya hingga 140 kWatt. Secara arsitektur, mesin tersebut mempunyai 20 register- register, dimana masing-masingnya dapat memegang sebuah bilangan desimal 10 digit. Mesin ENIAC adalah diprogram dengan mensetting hingga 6000 switch multiposisi, dan mengkoneksikan soket-soket multitude dengan sebuah kabel- kabel jumper veritable forest. ENIAC adalah pada umumnya dipertimbangkan menjadi sebuah komputer digital elektronik yang pertama. Sebagai langkah hukum, Mauchley dan Eckert mengajukan sebuah paten dan mengklaim bahwa mereka menemukan komputer digital tersebut. Setelah bertahun-tahun proses litigasi, akhirnya pengadilan memutuskan bahwa patent Eckert-Mauchley adalah invalid dan bahwa John Atanasoff lah

Dasar Teknik Komputer 15 yang menemukan komputer digital, meskipun dia tidak pernah mempatenkannya.

Gambar 1.8.. UNIVAC I (sumber: Paul E. Ceruzzi)

ENIAC adalah sebuah mesin yang penting, beberapa mengatakan mesin yang paling penting, terutama karena mesin tersebut membawa secara langsung terhadap perkembangan dari UNIVAC I, komputer yang tersedia secara komersial, pada tahun 1951. Bahkan pada saat itu, ENIAC adalah dikenal sebagai sebuah prestasi yang penting. ENIAC beroperasi dengan berhasil hingga tahun 1955, ketika mesin tersebut didismantled, tetapi tidak dihancurkan. Bagian-bagian dari komputer tersebut dapat dilihat di Smithsonian Institute dan di Universitas Michigan. Bagaimanapun, karena perang telah selesai. Mauchley dan Eckert dijinkan untuk mengorganisasikan sebuah summer school untuk menggambarkan dan menjelaskan hasil kerjanya ke sesama kolega ilmuwan. Summer school tersebut ternyata adalah awal dari sebuah ledakan akan minat dalam membangun komputer-komputer digital yang besar. Setelah summer school yang historis tersebut, banyak penelitian-penelitian lainnya

16 Dasar Teknik Komputer

dilakukan untuk membangun komputer-komputer elektronik. Salah satunya yang pertama operasional adalah EDSAC pada tahun 1946, dibangun di Universitas Cambridge oleh Maurice Wilkes. Yang lainnya meliputi JOHNIAC di Rand corporation, ILLIAC di universitas Illionis, MANIAC di Los Alamos Laboratory dan WEIZAC di Weizman Institute di Israel. Pada tahun 1945, seorang matematikawan Amerika kelahiran Hongaria, John von Neumann (1903-1957), mengusulkan sebuah komputer yang meliputi sejumlah peningkatan-peningkatan yang penting untuk mengatasi kekurangan-kekurangan pada rancangan mesin komputer ENIAC. Peningkatan-peningkatan yang paling penting tersebut adalah : Sebuah memori yang akan dapat menyinpan program dan data, yang sering disebut sebagai stored program concept. Konsep ini akan menyelesaikan problem yang sulit dalam pengawatan ulang panel-panel kontrol untuk perubahan program pada ENIAC. Kemudian pengolahan data biner. Hal ini akan dapat menyederhanakan rancangan komputer dan memungkinkan penggunaan memory biner untuk instruksi dan data. Juga mengenai adanya hubungan natural antara sifat switch yang ON dan OFF dan penghitungan dalam sistem bilangan biner, dengan menggunakan logika Boolean. Satu hal yang nampak pada mesin ENIAC adalah bahwa pemrograman komputer dengan sejumlah besar dan kabel adalah sangat lambat, menjemukan dan tidak fleksibel. Dia menyadari bahwa program dapat direpresentasikan dalam bentuk digital didalam memory komputer bersamaan juga dengan data. Dia juga melihat bahwa aritmatika desimal serial yang kaku (clumsy) yang digunakan oleh ENIAC, dimana setiap digit direpresentasikan oleh 10 tabung hampa udara (vacuum) (1 on dan 9 off) dapat digantikan dengan menggunakan aritmatika

Dasar Teknik Komputer 17 biner parallel, sesuatu yang telah disadari oleh Atanasoff sebelumnya. Karena intrik politik dan kontroversi, dua versi yang berbeda dari arsitektur von Neumann dirancang dan dibangun. Yang pertama adalah komputer EDVAC (Electronic Discrete Variable Automatic Computer) di Universitas Pennsylvania yang dibangun oleh Mauchley dan Eckert sementara yang kedua adalah komputer IAS di Universitas Princeton Institute for Advanced Studies (IAS) yang dibangun oleh John Von Neumann. Kedua mesin komputer tersebut diselesaikan pada tahun 1951-1952. Mesin von Neumann (IAS computer) mempunyai lima bagian-bagian dasar, yaitu : memory, ALU, CU dan perangkat input dan output atau I/O. Secara bersama ALU dan CU membentuk otak dari komputer. Didalam komputer modern, mereka digabungkan dalam sebuah chip tunggal yang disebut CPU. Didalam ALU ada sebuah register 40-bit internal yang special yang disebut accumulator. Suatu instruksi tipikal menambahkan sebuah word memory pada accumulator atau menyimpan konten-konten dari accumulator didalam memory. CPU tersebut meliputi komponen-komponen ALU (Arithmetic and Logical Unit), memory dan CU (Control Unit). Control unit membaca instruksi-instruksi dari memory dan mengeksekusinya. Sebuah metode untuk menangani I/O (input/output) melalui control unit juga telah dikembangkan. Set instruksi yang berisi instruksi-instruksi yang merepresentasikan semua fitur-fitur dari sebuah komputer modern. Dengan kata lain, mesin von Neumann berisi setiap fitur utama yang dipertimbangkan penting terhadap arsitektur komputer modern. Dan arsitektur komputer modern adalah masih menganggap arsitektur von Neumann sebagai rujukan atau referensi. Pada

18 Dasar Teknik Komputer

poin ini, arsitektur von Neumann (komputer IAS) adalah terbangun dan berkembang dengan kokoh. Dia mempertahankan standard kelaziman dan terdapat dimana-mana (prevalent standard) hingga saat ini dan menyediakan fondasi bagi komputer-komputer berikutnya. Meskipun terjadi peningkatan teknologi yang penting, dan peningkatan dalam rancangan yang telah dihasilkan, rancangan-rancangan komputer modern saat ini masih merefleksikan pekerjaan yang telah dilakukan pada 1951, ABC, ENIAC, EDVAC dan IAS. Keberhasilan dari komputer EDVAC dan IAS tersebut membawa pada perkembangan dari banyak turunan komputer, kebanyakan dengan nama-nama yang ganjil, dan pada beberapa komputer-komputer komersial, termasuk komputer-komputer IBM yang pertama.

Gambar 1.9.. Mesin Von Neumann atau komputer IAS (sumber: Bruce Gilchrist)

Semua komputer-komputer elektronik pada generasi pertama tersebut bergantung pada tabung hampa udara (vacuum) untuk operasinya. Tabung vakum tersebut adalah

Dasar Teknik Komputer 19 berukuran besar (bulky), terbuat dari glass, mudah pecah, berumur pendek (short-lived) dan memerlukan power yang sangat besar untuk beroperasi. Tabung-tabung vakum memerlukan sebuah pemanas elektrik internal untuk berfungsi, dan pemanas-pemanas tersebut cenderung fail (cepat rusak) dengan cepat, menghasilkan apa yang dikenal sebagai sebuah tabung “burned out”. Lebih jauh lagi, panas yang dibangkitkan oleh sejumlah besar tabung-tabung yang digunakan didalam sebuah komputer memerlukan sebuah sistem pendinginan udara yang sangat massive. Berikut ini adalah ciri-ciri komputer pada generasi pertama : menggunakan tabung hampa udara, karenanya ukuran fisiknya besar, menggunakan stored program concept, program dibuat dengan menggunakan bahasa mesin, silinder magnet untuk penyimpanan data, magnetik tape dan magnetic disc untuk penyimpanan eksternal, butuh daya listrik yang besar, prosesnya kurang cepat dan daya penyimpanan yang kecil.

1.3.2. Komputer Generasi Kedua Perubahan utama yang pertama didalam komputer elekntronik adalah terjadi ketika penggunaan tabung-tabung vacuum digantikan oleh transistor. Transistor pertama kali ditemukan di laboratorium AT&T Bell Lab pada tahun 1947 oleh John Bardeen, William Shockley dan Walter Brattain, dan dengan cepat menggantikan teknologi tabung hampa udara dalam implementasi fungsi-fungsi logika. Sejak demonstrasi dari transistor pertama di Bell Lab pada tahun 1947 tersebut, perkembangan yang sangat cepat di dalam rancangan dan manufaktur semikonduktor telah membawa pada mikroprosesor- mikroprosesor gigahertz dan memori-memori gigabit saat ini.

20 Dasar Teknik Komputer

Transistor-transistor mempunyai ukuran yang jauh lebih kecil dari tabung hampa udara, lebih murah dan membangkitkan panas yang jauh lebih rendah dibandingkan dengan tabung vacuum. Tidak seperti halnya tabung vacuum, yang memerlukan kawat-kawat, piringan metal, kapsul gelas dan sebuah vacuum, transistor adalah berupa sebuah perangkat solid state yang terbuat dari silicon. Pergeseran teknologi yang fundamental ini menandai permulaan dari generasi kedua. Perangkat-perangkat penyimpanan memory magnetic core dan magnetic drum digunakan dalam generasi kedua ini. Perangkat-perangkat penyimpanan magnetic disc adalah dikembangkan pada generasi ini. Bahasa tingkat tinggi (high-level langages) yang paling awal, seperti misalnya FORTRAN dan COBOL, dikembangkan pada generasi ini, membuat persiapan program-program aplikasi jauh lebih cepat. Compiler-compiler adalah juga dikembangkan untuk mentranslasikan bahasa pemrograman tingkat tinggi tersebut kedalam bahasa assembly, yang kemudian ditranslasikan kedalam bentuk bahasa mesin (machine language) yang dapat dieksekusi. IBM menjadi pemain utama pada generasi kedua ini. Beberapa model komputer yang terkenal pada generasi kedua ini diantaranya adalah IBM 1401, IBM 7094, UNIVAC III, UNIVAC SS90, IBM 7080, 7070 dan 1600. Berikut ini adalah ciri-ciri komputer pada generasi kedua : menggunakan teknologi transistor, karenanya ukurannya sudah lebih kecil disbanding generasi pertama, menggunakan bahasa pemrograman tingkat tinggi (COBOL dan FORTRAN), kapasiyas memori yang telah dikembangkan dari magnetic core, magnetic tape dan magnetic disc sebagai penyimpana luar, proses lebih cepat dan kebutuhan daya listrik yang lebih kecil.

Dasar Teknik Komputer 21

Gambar 1.10. Konsol pengendali IBM 7094 (sumber : Paul E. Ceruzi)

1.3.3. Komputer Generasi Ketiga Penemuan rangkaian terintegrasi () IC oleh Jack Kilby pada tahun 1958 dan peningkatan- peningkatan berikutnya dalam konsep pada tahun 1960-an membuatnya mungkin untuk menggabungkan bermacam-macam perangkat (device) dalam sebuah chip tunggal yang terbuat dari silikon sebagai pengganti pengawatan-pengawatan bersama perangkat-perangkat pada sebuah papan rangkaian (circuit board). Penemuan IC dari Texas Instruments inilah yang mengawali komputer generasi ketiga. Selama tahun 1950-an dan awal 1960-an, perangkat-perangkat elektronik terbuat dari komponen-komponen diskrit seperti transistor-transistor, resistor-resistor, kapasitor-kapasitor dan lain sebagainya yang disusun menjadi satu rangkaian yang terintegrasi yang disebut sebagai IC atau integrated circuit. Texas Instruments dan Fairchild Semiconductor mengembangkan kemampuan untuk memfabrikasi banyak transistor-transistor pada sebuah chip silicon tunggal, yang disebut teknologi IC. Hal ini memungkinkan prosesor-prosesor yang lebih cepat dengan harga

22 Dasar Teknik Komputer

yang lebih murah dan elemen-elemen memory dibangun. Memori-memori IC mulai menggantikan memory magnetic core. Perkembangan teknologi ini menandai awal dari generasi ketiga. Perkembangan-perkembangan lainnya meliputi pengenalan microprogramming, parallelism dan pipelining. Software sistem operasi memungkinakan sharing yang efisien dari sebuh sistem komputer dengan beberapa program-program user. Cache dan virtual memory juga dikembangkan. Cache memory membuat memory utama nampak lebih cepat dari yang terlihat sementara virtual memory menjadikannya nampak lebih besar. Beberapa model komputer pada generasi ketiga ini diantaranya adalah : Sistem komputer mainframe IBM system 360, DEC5 PDP-8, UNIVAC 900, Burroughts 5700, GE 600, CDC 3000, NCR Century, PDP-8 dan PDP-11. Berikut ini adalah ciri-ciri komputer pada generasi ketiga : menggunakan rangkaian terintegrasi IC, kapasitas memori yang lebih besar, kinerja komputer lebih cepat, kemampuan melakukan dan multitasking, telah menggunakan terminal visual display dan kemampuan melakukan komunikasi dengan komputer lain.

5 DEC adalah produk-produk komersial yang dominan pada generasi ketiga. DEC PDP-8 adalah minicomputer pertama yang dibuat pada tahun 1964.

Dasar Teknik Komputer 23

Gambar 1.11. DEC PDP-8 (sumber : Paul E. Ceruzi)

1.3.4. Komputer Generasi Lanjut Menjelang awal tahun 1970-an, teknik-teknik fabrikasi IC telah berevolusi pada suatu titik dimana prosesor-prosesor lengkap dan bagian-bagian terbesar dari memory utama dari komputer-komputer kecil dapat diimplementasikan pada sebuah chip tunggal. Hal ini menandai awal dari generas lanjut. Puluhan ribu transistor dapat ditempatkan pada sebuah chip tunggal dan nama VLSI diciptakan untuk menggambarkan teknologi pada generasi ini. Sebuah prosesor yang lengkap difabrikasi pada sebuah chip tunggal menjadi terkenal sebagai sebuah microprossesor. Perusahaan-perusahaan seperti misalnya Intel, National Semiconductor, Motorola, Texas Instruments dan Advanced Micro Device telah menjadi daya penggerak bagi teknologi ini. Teknologi VLSI saat ini memungkinkan integrasi

24 Dasar Teknik Komputer

dari multiple processors (cores) dan cache memories pada sebuah chip tunggal. Sebuah bentuk yang khusus dari teknologi VLSI, yang disebut Field Programmable Gate Arrays (FP-Gas), telah memungkinkan para developer sistem untuk merancang dan mengimplementasikan prosesor, memory dan rangkaian- rangkaian I/O pada sebuah chip tunggal untuk memenuhi persyaratan-persyaratan dari aplikasi-aplikasi khusus, terutamanya dalam sistem-ssistem komputer tertanam (embeded computers). Tool-tool CAD yang canggih (sophisticated) memungkinkannya mengembangkan produk-produk berbasis FPGA dengan cepat. Perusahaan-perusahaan seperti misalnya Altera dan Xilinx menyediakan teknologi ini, bersamaan dengan sistem-sistem pengembangan software yang diperlukan. Sistem- sistem tertanam, komputer-komputer notebook portable dan versatile mobile telephone handsets adalah sekarang dipergunakan secara luas. PC-PC desktop dan workstation- workstation terkoneksi melalui jaringan-jaringan LAN kabel atau radio atau juga internet, dengan akses terhadap database server dan search engines, menyediakan bervariasinya platform- platform komputer yang powerful. Dalam era komputer generasi lanjut ini, ada dua perkembangan yang sangat penting, yaitu perkembangan memori semikonduktor dan mikroprosesor. Pada tahun 1950- an dan 1960-an, kebanyakan memori-memori komputer adalah dikonstruksi dari cincin-cincin kecil bahan ferromagnetic. Memory magnetic core tersebut agak cepat tetapi sangat mahal dan berukuran besar dan menggunakan pembacaan (readout) yang destruktif. Kemudian pada tahun 1970, Fairchild memproduksi memory semikonduktor pertama yang relatif lapang dan dapat menampung banyak memory. Dan sejak tahun

Dasar Teknik Komputer 25 1970, memory semikonduktor telah melewati lebih dari 13 generasi, yaitu : 1k, 4k, 16k, 64k, 256k, 1M, 4M, 16M, 64M, 256M, 1G, 4G, 8G dst. Sementara untuk mikroprosesor, sebuah breakthrough dicapai pada tahun 1971 ketika Intel mengembangakan mikroprosesor 4004. Mikroprosesor 4004 tersebut adalah merupakan chip pertama yang berisikan semua komponen- komponen dari sebuah CPU pada sebuah chip tunggal. Inilah masa awal dari kelahiran sebuah mikroprosesor. Generasi mikroprosesor yang terjadi pada tahun 1970-an adalah diantaranya, 4004, 8008, 8080, 8086 dan 8088. Generasi tahun 1980-an diantaranya yaitu, 80286, 386TM DX, 386TM SX dan 486TM DX CPU. Kemudian generasi tahun 1990-an diantaranya adalah 486TM SX, Pentium, Pentium Pro dan Pentium II. Sementara prosesor generasi saat ini diantaranya adalah Pentium III, Pentium 4, Core 2 Duo, Core i7 EE 4960X dst.

1.4. Perkembangan Bahasa Pemrograman Mesin-mesin (komputer) yang dapat diprogram terus mengalami perkembangan. Sementara itu, program-program dan bahasa pemrograman (programming language) mulai bermunculan. ENIAC adalah sistem komputer elektronik pertama yang dapat diprogram dengan cara melakukan pengkabelan ulang (rewiring) pada rangkaian-rangkaiannya.

26 Dasar Teknik Komputer

Gambar 1.12. Pemrograman pada sistem komputer ENIAC

Karena hal tersebut terbukti terlalu membebani (cumbersome) untuk aplikasi-aplikasi praktis, maka pada awal- awal evolusi sistem komputer, bahasa-bahasa komputer mulai bermunculan untuk mengendalikan komputer. Bahasa semacam itu yang pertama kali dikembangkan adalah bahasa mesin (machine language), yang dikontstruksikan dengan kode-kode bilangan biner (1 dan 0) yang disimpan di dalam sistem memori komputer sebagai kelompok-kelompok instruksi yang disebut sebagai program. Hal ini tentu lebih efisien daripada melakukan pengkabelan ulang pada mesin untuk memprogramnya. Orang yang pertama kali mengembangkan sebuah sistem (komputer) yang dapat menerima instruksi-instruksi dan menyimpannya di dalam memori adalah John Von Neumann. Ketika sistem-sistem komputer seperti misalnya UNIVAC tersedia diawal tahun 1950-an, bahasa rakitan (assembly language) adalah digunakan untuk menyederhanakan pekerjaan sehari-hari (chore) untuk memasukan kode-kode biner ke dalam sebuah komputer sebagai instruksi-instruksinya. Assembler tersebut memungkinkan (allow) para programmer untuk

Dasar Teknik Komputer 27 menggunakan kode-kode mnemonic, seperti misalnya ADD untuk proses penjumlahan dan SUB untuk operasi pengurangan, menggantikan (in place of) sebuah bilangan biner seperti misalnya 0100 0111. Meskipun bahasa rakitan (assembly language) adalah membantu untuk pemrograman, itu tidak sampai tahun 1957, ketika Grace Hopper (1906-1992) mengembangkan bahasa pemrograman tingkat tinggi (high- level programming language) yang disebut FLOWMATIC, sehingga komputer-komputer menjadi mudah untuk diprogram. Pada tahun yang sama, IBM juga mengembangkan FORTRAN (Formula Translator) untuk sistem-sistem komputernya. Bahasa FORTRAN memungkinkan para programmer untuk mengembangkan program-program yang menggunakan formula- formula untuk menyelesaikan problem-problem matematika. Catatan bahwa FORTRAN adalah masih digunakan oleh beberapa ilmuwan untuk pemrograman komputer. Bahasa serupa lainnya, diperkenalkan sekitar setahun setelahnya, yaitu ALGOL (Algorithmic Language). Bahasa pemrograman pertama yang benar-benar berhasil dan berkembang luas untuk aplikasi-aplikasi bisnis adalah COBOL (Computer Business Oriented Language). Meskipun penggunaan COBOL memudar (diminished) tahun belakangan ini, bahasa tersebut masih merupakan pemain di beberapa perusahaan besar dan sistem pemerintahan. Bahasa bisnis yang popular lainnya adalah RPG (Report Program Generator), yang memungkinkan pemrograman dengan menspesifikasikan bentuk dari masukan, keluaran dan perhitungan-perhitungan.

28 Dasar Teknik Komputer

Gambar 1.13. Grace Hopper (sumber : David M. Harris)

Kemudian bahasa-bahasa tambahan untuk pemrograman yang baru bermunculan. Beberapa dari bahasa pemrograman modern yang lebih umum diantaranya adalah BASIC, C#, C/C++, Java, PASCAL dan ADA. Bahasa-bahasa PASCAL dan BASIC adalah dirancang sebagai bahasa-bahasa pengajaran. Bahasa BASIC digunakan di banyak sistem-sistem komputer dan boleh jadi salah satu dari bahasa pemrograman yang paling umum saat ini. Bahasa BASIC boleh jadi bahasa pemrograman yang paling mudah dipelajari. Pada dekade terakhir (past decade), sebuah versi BASIC yang baru, Visual BASIC, telah membuat pemrograman di lingkungan Windows menjadi lebih mudah. Bahasa Visual BASIC tersebut boleh jadi pada akhirnya supplent C/C++ dan PASCAL sebagai sebuah bahasa saintifik. Di dalam komunitas saintifik, terutamanya C/C++ dan kadang-kadang PASCAL dan FORTRAN muncul sebagai program-program kontrol. Sebuah survey baru-baru ini dari pengembang-pengembang embedded systems (sistem tertanam)

Dasar Teknik Komputer 29 menunjukkan bahwa C digunakan oleh 60% dan 30% menggunakan bahasa assembly. Sisanya BASIC dan JAVA. Bahasa-bahasa ini, khususnya C/C++, memungkinkan programmer hampir mengendalikan secara menyeluruh terhadap sistem control dan lingkungan pemrograman. Dalam banyak kasus, C/C++ adalah menggantikan beberapa dari software kendali mesin tingkat rendah atau driver-driver umumnya dicadangkan untuk bahasa assembly. Meskipun demikian, bahasa assembly masih memainkan peranan yang penting didalam pemrograman. Banyak video games yang ditulis untuk PC adalah ditulis hampir secara ekslusive didalam bahasa assembly. Bahasa assembly berselang-seling dengan C/C++ untuk melakukan fungsi-fungsi control secara efisien. Beberapa dari instruksi- instruksi parallel yang lebih baru ditemukan di mikroprosesor- mikroprosesor Pentium yang terbaru dan Core2 adalah hanya dapat diprogram dengan bahasa assembly. Bahasa ADA banyak digunakan oleh department pertahanan.

1.5. Perkembangan Mikroprosesor (Intel) Jantung dari sistem komputer yang berbasis mikroprosesor adalah rangkaian terintegrasi (IC) mikroprosesor. Mikroprosesor, yang kadang-kadang dirujuk sebagai central processing unit atau CPU, adalah elemen pengendali di dalam sebuah sistem komputer. Mikroprosesor mengendalikan memori dan I/O melalui sebuah rangkaian koneksi yang disebut bus. Bus-bus tersebut memilih sebuah perangkat I/O atau memori, mentransfer data diantara sebuah perangkat I/O atau memori dan mikroprosesor tersebut dan mengendalikan sistem I/O dan memori. Memori dan I/O adalah dikendalikan melalui instruksi- instruksi yang ditaruh di dalam memori dan dieksekusi oleh mikroprosesor.

30 Dasar Teknik Komputer

Mikroprosesor adalah sebuah chip semikonduktor atau chip set yang mengimplementasikan prosesor pusat dari sebuah komputer. Mikroprosesor terdiri dari setidaknya rangkaian- rangkaian ALU (arithmetic and logical unit) dan CU (control unit). Sementara itu, control unit CU sendiri terdiri dari beberapa register-register yang penting diantaranya PC, instruction register IR, memory address register MAR dan memory buffer register MBR.

Gambar 1.14. Sebuah mikroprosesor sederhana (sumber : Mark Balch)

Tabel 1.2. Prosesor produksi tahun 1970-an (sumber : William Stalling) 4004 8008 8080 8086 8088 Diperkenalkan 1971 1972 1974 1978 1979 108 108 2 5 MHz, 8 MHz dan 10 5 MHz dan 8 Kecepatan clock kHz kHz MHz MHz MHz Lebar bus 4 bit 8 bit 8 bit 16 bit 8 bit Jumlah transistor 2300 3500 6000 29000 29000 Ukuran fitur (μm) 10 8 6 3 6 Memori yang dapat 640 64 dialamati byte 16 KB KB 1 MB 1 MB

Dasar Teknik Komputer 31 Mikroprosesor pertama di dunia, Intel 4004, adalah sebuah mikroprosesor controller 4 bit6 yang dapat diprogram pada sebuah chip. Mikroprosesor yang diperkenalkan pada tahun 1971 ini hanya mempunyai 4096 alamat, dengan lebar lokasi memory 4 bit. Set instruksi hanya terdiri dari 45 instruksi. Mikroprosesor 4004 ini dapat mengeksekusi instruksi pada rate 50 KIP (kilo- instruction per second) atau 50.000 instruksi per detik (bandingkan dengan ENIAC yang dapat mengeksekusi 100.000 instruksi per detik). Pada awalnya, aplikasi-aplikasi melimpah untuk perangkat ini. Mikroprosesor 4 bit ini mengawali debutnya pada awal-awal sistem video game dan sistem-sistem kontrol berbasis mikroprosesor. Video game awal semacam itu, shuffleboard game, adalah diproduksi oleh Bailey. Problem utama dari mikroprosesor awal ini adalah kecepatannya, lebar word dan ukuran memori. Evolusi dari mikroprosesor 4 bit tersebut berakhir ketika Intel merilis 4040, versi terupdate dari sebelumnya 4004. Mikroprosesor 4040 beroperasi pada kecepatan yang lebih tinggi. Kemudian pada tahun 1972, menyadari bahwa mikroprosesor adalah sebuah produk yang viable secara komersial, Intel Corporation merilis 8008, sebuah versi mikroprosesor 4004 yang ditingkatkan menjadi 8 bit. 8008 tersebut mengalamati ukuran memori yang ditingkatkan, yaitu 16K bytes7 dan berisi instruksi-instruksi tambahan dengan jumlah total 48 instruksi yang menyediakan sebuah kesempatan

6 Satu bit adalah sebuah digit biner dengan nilai 1 atau 0. Sementara itu lokasi memori yang terdiri dari 4 buah bit sering disebut sebagai nibble. 7 Satu byte pada umumnya adalah sebuah bilangan biner dengan lebar 8 bit sementara satu K (kilo) adalah sama dengan 1024.

32 Dasar Teknik Komputer

untuk aplikasi-aplikasinya di dalam sistem-sistem yang lebih canggih (advanced). Ketika para insinyur masih mengembangkan penggunaan mikroprosesor 8008 tersebut, mereka menemukan bahwa ukuran memorinya yang agak kecil, kecepatan yang rendah dan set instruksi membatasi kegunannya (its usefulness). Intel menyadari keterbatasann-keterbatasan mikroprosesor tersebut dan kemudian memperkenalkan mikroprosesor 8080 pada tahun 1974. 8080 adalah general purpose microprosesor modern 8 bit pertama di dunia dengan sebauh data path pada memori sebesar 8 bit. Mikroprosesor 8080 ini digunakan pada PC (personal computer) pertama , yaitu Altair. Jumlah transistor yang digunakan pada mikroprosesor 8080 adalah sebanyak 6000 buah. Sekitar enam bulan setelah Intel merilis mikroprosesor 8080, Motorola Corporation memperkenalkan MC6800-nya. Pintu air (floodgates) terbuka dan perusahaan-perusahaan lain mulai memperkenalkan mikroprosesor 8 bit versinya masing-masing. Apa sebenarnya yang spesial dari 8080 tersebut ?. Mikroprosesor 8080 tidak hanya mengalamati lebih banyak memori dan mengeksekusi instruksi-instruksi tambahan, tetapi mikroprosesor tersebut juga dapat mengeksekusi hungga sepuluh kali lebih cepat dari 8008. Sebuah (operasi) penjumlahan yang membutuhkan waktu 20 μS (50.000 instruksi per detik) pada sebuah sistem yang berbasis 8008 hanya memerlukan 2.0 μS (500.000 instruksi perdetik) pada sistem yang berbasis 8080. Juga, 8080 adalah kompatible dengan TTL (transistor-transistor logic), dimana 8008 adalah tidak kompatible secara langsung. Hal ini membuat interfacing jauh lebih mudah dan lebih murah. 8080 juga mengalamati empat kali lebih memori (64K bytes) daripada 8008 (16K bytes). Dan secara kebetulan, komputer PC (personal computer) pertama, MITS Altair 8800, dirilis pada

Dasar Teknik Komputer 33 tahun 1974. Interpreter bahasa BASIC, yang ditulsi untuk komputer Altair 8800, dikembangkan pada tahun 1975 oleh Bill Gates dan Paul Allen8. Program assembler untuk Altair 8800 adalah ditulis oleh Digital Research Corporation, yang menghasilkan DR-DOS untuk PC.

Gambar 1.15. MITS Altair computer (sumber : Paul E. Ceruzi)

Pada tahun 1977, Intel memperkenalkan sebuah versi update dari 8080, yaitu 8085. Mikroprosesor 8085 adalah menjadi mikroprosesor untuk tujuan umum (general purpose ) 8 bit yang terakhir. 8085 mengeksekusi software pada kecepatan yang lebih tinggi. Sebuah penjumlahan yang membutuhkan waktu 2.0 μS (500.000 instruksi per detik pada 8080) hanya memerlukan 1,3 μS (769,230 instruksi per detik) pada 8085. Keuntungan utama dari 8085 adalah generator clock internal dan controller sistem internalnya serta frekwensi clocknya yang lebih tinggi. Pada tahun 1978, Intel merilis mikroprosesor 8086. Setahun kemudian merilis lagi mikroprosesor yang baru, yaitu 8088.

8 Bill Gates dan Paul Allen adalah para pendiri Microsoft Corporation.

34 Dasar Teknik Komputer

Keduanya adalah mikroprosesor 16 bit, yang dapat mengeksekusi instruksi hingga 400 μS (2.5 MIPs, millions of instruction per second). Ini merepresentasikan sebuah peningkatan yang utama atas kecepatan eksekusi dari 8085. Dan lagi, memori 8086 dan 8088 dapat dialamati hingga 1M byte 9, yang adalah 16 kali lebih memori daripada 8085. Kecepatan eksekusi yang lebih tinggi dan ukuran memori yang lebih besar ini memungkinkan 8086 dan 8088 untuk menggantikan (replace) minikomputer- minikomputer yang lebih kecil di banyak aplikasi. Satu fitur lainnya yang ditemukan pada 8086/8088 adalah sebuah instruction cache atau antrian yang diambi sebelumnya beberapa instruksi sebelum mereka dieksekusi. Antrian tersebut mempercepat operasi dari banyak urutan-urutan instruksi dan terbukti menjadi basis bagi cache-cache instruksi yang lebih besar ditemukan pada mikroprosesor-mikroprosesor modern. Ukuran memori yang ditingkatkan dan penambahan instruksi-instruksi didalam 8086 dan 8088 telah membawa pada banyaknya aplikasi-aplikasi yang canggih bagi mikroprosesor. Peningkatan-peningkatan pada set instruksi meliputi instruksi- instruksi perkalian dan pembagian, yang adalah missing (tidak ada) pada mikroprosesor-mikroprosesor versi sebelumnya. Jumlah instruksi-instruksi meningkat dari 45 pada mikroprosesor 4004 menjadi 246 pada mikroprosesor 8085. Catatan bahwa mikroprosesor-mikroprosesor ini disebut CISC (complex instruction set computers) karena jumlah dan kompleksitas instruksi-instruksinya. Mikroprosesor 16 bit tersebut juga menyediakan ruang penyimpanan register yang lebih daripada mikroprosesor 8 bit. Register-register tambahan tersebut

9 1M byte memori berisi 1024K byte-sized lokasi-lokasi memori atau 1,048,576 byte.

Dasar Teknik Komputer 35 memungkinkan software ditulis lebih efisien.. PC IBM dan XT original dan yang kompatible memakai 8086 atau 8088. Dimana mikroprosessor ini merupakan pendahulu dari tipe-tipe mikroprosesor yang lebih mutahir, seperti 80286, 80386, 80486 dan Pentium. Selain itu terdapat pula sejumlah variasi, missal SX dan DX. Setiap mikroprosesor menjalankan instruksi pendahulunya yang belum canggih. Chip baru hanya ditingkatkan kecepatan proses dan perluasan fasilitasnya saja. Jadi PC 80486 atau 8088 yang dijalankan dengan DOS mempunyai performa yang sama, jika anda mengabaikan beberapa failitas tambahannya.

Gambar 1.16. IBM PC 1981 (sumber : Paul E. Ceruzi)

Mikroprosesor 16 bit tersebut berkembang terutama karena kebutuhan untuk sistem-sistem memori yang lebih besar. Popularitas dari keluarga Intel tersebut adalah ditentukan pada tahun 1981, ketika IBM Corporation memutuskan untuk menggunakan mikroprosesor 8088 pada komputer personalnya

36 Dasar Teknik Komputer

(PC). Aplikasi-aplikasi seperti misalnya spreadsheet, word , spelling checkers dan thesaurus-thesaurus yang berbasis komputer adalah memory-intensive dan memerlukan lebih dari 64K bytes memori yang ditemukan pada mikroprosesor 8n bit untuk mengeksekusi dengan efisien. 8086 dan 8088 16 bit tersebut menyediakan 1M byte memori untuk aplikasi-aplikasi ini. Berikutnya, bahkan sistem memori 1M byte terbukti membatasi untuk database-database yang besar dan aplikasi-aplikasi lainnya. Inilah yang menjadikan/membuat Intel memperkenalkan mikroprosesor 286, sebagai update dari 8086, pada tahun 1982.

Tabel 1.3. Prosesor produksi tahun 1980-an (sumber : William Stalling)

386TM 386TM 486TM DX 80286 DX SX CPU Diperkenalkan 1982 1985 1988 1989 6-12,5 16-33 16-33 Kecepatan clock MHz MHz MHz 25-50 MHz Lebar bus 16 bit 32 bit 16 bit 32 bit Jumlah transistor 134.000 275.000 275.000 1,2 juta Ukuran fitur (μm) 1,5 1 1 08-1 Memori yang dapat dialamati 16 MB 4 GB 16 MB 4 GB Virtual memori 1 GB 64 TB 64 TB 64 TB Cache - - - 8 KB

Mikroprosesor 80286 yang merupakan mikroprosesor dengan arsitektur 16 bit adalah sebetulnya identik dengan 8086 dan 8088 kecuali bahwa mikroprosesor ini mengalamati sebuah sistem memori dengan 16M byte sebagai pengganti sistem 1M byte. Set instruksi dari 80286 adalah hampir identik dengan 8086 dan 8088 kecuali untuk beberapa instruksi-instruksi tambahan yang managed 15m byte extra memori. Kecepatan clock dari 80286 adalah ditingkatkan sehingga dia dapat mengeksekusi

Dasar Teknik Komputer 37 beberapa instruksi sedikitnya 250 nS atau sekitar 4.0 MIPs dengan rilis original versi 8.0 MHz. Beberapa perubahan juga terjadi terhadap eksekusi internal dari instruksi-instruksi, yang membawa pada peningkatan delapan kali lipat dalam kecepatan untuk kebanyakan instruksi-instruksi jika dibandingkan dengan instruksi-instruksi 8086/8088. Aplikasi-aplikasi mulai membutuhkan kecepatan-kecepatan mikroprosesor yang lebih tinggi, lebih banyak memori dan data paths yang lebih lebar. Hal ini membawa pada kehadiran 80386 pada tahun 1985 oleh Intel Corporation. 80386 merepresentasikan suatu perbaikan yang utama dari arsitektur mikroprosesor 8086 – 80286 16 bit. 80386 adalah mikroprosesor 32 bit Intel pertama yang berisi sebuah bus data 32 bit dan sebuah alamat memori 32 bit. Melalui bus-bus 32 bit ini, 80386 mengalamati memori hingga 4G 10bytes. Mikroprosesor 32 bit adalah diperlukan karena ukuran dari bus datanya, yang mentransfer bilangan-bilangan real (floating point presisi tunggal) yang memerlukan memori dengan lebar 32 bit. Untuk dapat memproses secara efisien bilangan-bilangan real 32 bit, mikroprosesor tersebut harus melewatkannya secara efisien dianatara dianya sendiri dan memori. Kebanyakan bahasa-bahasa tingkat tinggi, spreadsheet dan sistem-sistem manajemen database menggunakan bilangan-bilangan real untuk penyimpanan data. Bilangan-bilangan real adalah juga digunakan dalam paket-paket disain grafis yang menggunakan vector-vektor untuk memplot gambar pada layar video. Termasuk disini adalah sistem-sistem CAD (computer-aided design).

10 1G byte memori berisi 1024M atau 1,073,741,824 lokasi. Sebuah memori 4G dapat menaruh an astounding 1,000,000 typewritten, double space halaman- halaman data teks ASCII.

38 Dasar Teknik Komputer

Disamping menyediakan kecepatan-kecepatan clock yang lebih tinggi, 80386 juga meliputi sebuah unit manajemen memori yang memungkinkan sumber daya-sumber daya memori untuk dialokasikan dan diatur oleh sistem operasi. Set instruksi mikroprosesor 80386 adalah upward-compatible dengan mikroprosesor-mikroprosesor sebelumnya seperti 8086, 8088 dan 80286. Pada tahun 1989, Intel merilis mikroprosesor 80486 yang menggabungkan sebuah mikroprosesor seperti 80386, sebuah coprosesor numeric seperti 80387 dan sebuah sistem memori cache 8K byte kedalam sebuah paket yang terintegrasi. Meskipun mikroprosesor 80486 tidak begitu berbeda jauh dengan pendahulunya yaitu 80386, akan tetapi dia meliputi sebuah perubahan yang substansial. Struktur internal dari 80486 adalah dimodifikasi dari 80386 sehinggan sekitar setengah dari instruksi-instruksinya dieksekusi dalam satu clock sebagai pengganti dua clock. Karena 80486 adalah tersedia dalam sebuah versi 50 MHz, sekitar setengah dari instruksi-instruksinya adalah sekitar 50% melebihi 80386 yang dioperasikan pada kecepatan yang sama. Untuk versi berikutnya dari 80486, yaitu 80486DX2, mengeksekusi instruksi-instruksinya bahkan pada kecepatan yang lebih tinggi dengan sebuah clock ganda 66 MHz. Sementara 80486DX4 adalah untuk versi triple clock. Versi lain dari 80486 adalah prosesor-prosesor OverDrive dimana prosesor tersebut sebenarnya adalah merupakan sebuah versi double-clocked dari 80486DX yang menggantikan sebuah 80486SX.

Dasar Teknik Komputer 39 Tabel 1.4. Prosesor produksi tahun 1990-an (sumber : William Stalling)

486TM SX Pentium Pentium Pro Pentium II Diperkenalkan 1991 1993 1995 1997 16-33 60-166 200-300 Kecepatan clock MHz MHz 150-200 MHz MHz Lebar bus 32 bit 32 bit 64 bit 64 bit 1,185 Jumlah transistor juta 3,1 juta 5,5 juta 7,5 juta Ukuran fitur (μm) 1 0,8 0,6 0.35 Memori yang dapat dialamati 4 GB 4 GB 64 GB 64 GB Virtual memori 64 TB 64 TB 64 TB 64 TB 512 KB L1 dan 1 Cache 8 KB 8 KB MB L2 512 KB L2

Mikroprosesor Pentium diperkenalkan pada tahun 1993. Mikroprosesor ini serupa dengam mikroprosesor 80386 dan 80486. Mikroprosesor ini pada awalnya diberi label P5 atau 80586, akan tetapi Intel memutuskan tidak menggunakan sebuah bilangan karena nampaknya adalah tidak mungkin untuk meng- copyright sebuah bilangan. Dua versi pembuka dari Pentium beroperasi dengan clocking frequency 60 MHz dan 66 MHz dan sebuah kecepatan 110 MIPs, dengan sebuah frekwensi yang lebih tinggi 100 MHz dan versi 1 setengah clocked yang beroperasi pada 150 MIPs. Pentium clock ganda (double-clocked Pentium), yang beroperasi pada 120 MHz dan 133 MHz juga tersedia, yang merupakan versi tiga dan satu setengah clocked). Perbedaan yang lain adalah bahwa ukuran cache ditingkatkan hingga 16K bytes dari cache 8K yang ditemukan didalam versi dasar 80486. Pentium tersebut berisi cache instruksi 8K byte dan cache data 8K byte, yang memungkinkan sebuah program yang mentransfer sejumlah besar data memori menghilangkan keuntungan dari sebuah cache. Sistem memori tersebut berisi hingga 4G bytes, dengan lebar bus data yang ditingkatkan dari 32 bits yang

40 Dasar Teknik Komputer

ditemukan pada 80386 dan 80486 menjadi full 64 bits. Kecepatan transfer bus data adalah 60 MHz dan 66 MHz, bergantung kepada versi dari Pentium tersebut. Mungkin fitur yang paling ingenious dari Pentium adalah prosesor-prosesor integer dual-nya. Pentium tersebut mengeksekusi dua instruksi, yang adalah tidak saling bergantung satu sama lain, secara simultan karena dia berisi dua prosesor- prosesor integer internal independen yang disebut superscalar technology. Hal ini memungkinkan Pentium tersebut sering mengeksekusi dua instruksi-instruksi setiap periode clocking. Fitur lainnya yang meningkatkan performa adalah sebuah jump prediction technology yang mempercepat eksekusi dari loop-loop program. Seperti halnya 80486, Pentium juga mengemploy sebuah coprosesor floating-point internal untuk menangani data floating point. Intel juga memungkinkan Pentium tersebut untuk menggantikan (replace) beberapa mesin RISC (reduced instruction set computer) yang saat ini mengeksekusi satu instruksi per clock. Catatan bahwa beberapa prosesor-prosesor RISC yang baru mengeksekusi lebih dari satu instruksi per clock melalui introduction superscalar technology. Motorola, Apple dan IBM memproduksi PowerPC, sebuah mikroprosesor RISC yang mempunyai dua unit integer dan sebuah unit floating- point. Selanjutnya Intel merilis prosesor Pentium Pro11. Prosesor ini berisi 5,5 juta transistor, unit-unit integer juga sebuah unit floating point untuk emningkatkan performa dari sebagian besar software. Clock frequency dasarnya adalah 150 MHz dan 166 MHz yang pada awalnya ditawarkan pada tahun 1995. In addition to cache level satu (L1) 16K (8K untuk data dan 8K

11 Pentium Pro sebelumnya bernama mikroprosesor P6.

Dasar Teknik Komputer 41 untuk instruksi-instruksi), prosesor Pentium Pro juga berisi sebuah cache level dua (L2) 256K. Satu lagi perubahan yang signifikan adalah bahwa prosesor Pentium Pro menggunakan tiga mesin eksekusi, sehingga dia dapat mengeksekusi hingga tiga instruksi setiap waktu. Intel meluncurkan prosesor Pentium Pro untuk pasar server. Pentium Pro dapat mengalamati sistem memori baik yang 4G byte atau sistem memori 64G byte. Pada tahun 1997 Intel merilis mikroprosesor Pentium II yang merepresentasikan arah baru bagi Intel. Sebagai pengganti sebuah rangkaian terintegrasi (IC) seperti mikroprosesor versi sebelumnya, Intel telah menempatkan Pentium II tersebut pada sebuah papan rangkaian yang kecil. Alasan utama untuk perubahan ini adalah bahwa cache L2 yang ditemukan pada papan rangkaian utama dari Pentium tersebut adalah tidak cukup cepat untuk berfungsi dengan tepat dengan Pentium II. Pada sistem Pentium tersebut, cache L2 tersebut beroperasi pada kecepatan bus sistem 60 MHz atau 66 MHz. Cache L2 dan mikroprosesor adalah berada pada sebuah papan rangkaian yang disebut modul Pentium II. Cache L2 onboard ini beroperasi pada sebuah kecepatan 133 MHz dan menaruh 512K byte informasi. Mikroprosesor pada modul Pentium II ini sebenarnya adalah Pentium Pro dengan perluasan MMX. Pada tahun 1998, Intel merubah kecepatan bus dari Pentium II. Karena 266 MHz melalui mikroprosesor Pentium II 333 MHz menggunakan sebuah kecepatan bus eksternal 66 MHz, terjadi sebuah bottleneck, maka mikroprosesor Pentium II terbaru menggunakan sebuah kecepatan bus 100 MHz. Mikroprosesor Pentium II rated pada 350 MHz, 400 MHz dan 450 MHz semuanya menggunakan kecepatan bus memori 100 MHz lebih tinggi. Semakin tinggi kecepatan bus memori memerlukan

42 Dasar Teknik Komputer

penggunaan 8 S SDRAM menggantikan 10 nS SDRAM yang ditemukan pada penggunaan dengan kecepatan bus 66 MHz. Pada pertengahan tahun 1998, Intel mengumumkan sebuah versi yang baru dari Pentium II yang disebut Xeon, yang secara spesifik dirancang untuk aplikasi-aplikasi server dan high-end workstation. Perebedaan utama diantara Pentium II dan Pentium II Xeon adalah bahwa Xeon tersebut adalah tersedia dengan sebuah ukuran cache L1 sebesar 32K bytes dan sebuah ukuran cache L2 sebesar 512K byte, 1M byte atau 2M bytes.

Tabel 1.5. Prosesor produksi saat ini (sumber : William Stalling)

Pentium Pentium Core 2 Core i7 EE 4960 III 4 Duo X Diperkenalkan 1999 2000 2006 2013 450-660 1,3-1,8 1,06-1,2 Kecepatan clock MHz GHz GHz 4 GHz Lebar bus 64 bit 64 bit 64 bit 64 bit Jumlah transistor 9,5 juta 42 juta 167 juta 1,86 milyar Ukuran fitur (μm) 250 180 65 22-Jan Memori yang dapat dialamati 64 GB 64 GB 64 GB 64 GB Virtual memori 64 TB 64 TB 64 TB 64 TB 256 KB 1,5 MB L2, 15 Cache 512 KB L2 L2 2 MB L2 MB L3 Jumlah core 1 1 2 6

Pentium III diperkenalkan oleh Intel pada tahun 1999. Mikroprosesor ini menggunakan sebuah core yang lebih cepat daripada Pentium II, tetapi itu masih merupakan sebuah prosesor Pentium Pro atau P6. Pentium II adalah tersedia dengan frekwensi clock hingga 1 GHz. Versi slot 1 berisi sebuah cache 512K dan versi flip-chip berisi sebuah cache 256K. Kecepatan- kecepatannya adalah dapat diperbandingkan karena cache pada versi slot 1 berjalan pada satu setengah kecepatan clock,

Dasar Teknik Komputer 43 sementara cache pada versi flip-chip berjalan pada kecepatan clock. Kedua versi tersebut menggunakan sebuah kecepatan bus memori 100 MHz sementara Celeron menggunakan kecepatan clock bus memori 66 MHz. Kecepatan dari bus sisi depan, koneksi dari mikroprosesor ke , PCI controller dan AGP controller, adalah sekarang 100 MHz atau 133 MHz. Meskipun memori tersebut masih berjalan pada 100 MHz, perubahan ini telah meningkatkan performa. Mikroprosesor Pentium 4 pertama kali diperkenalkan pada tahun 2000. Versi Pentium yang paling anyar (most recent version) adalah disebut Core2 by Intel. Pentium 4 dan Core2, seperti halnya Pentium Pro hingga Pentium III, menggunakan arsitektur Intel P6. Perbedaan utamnanya adalah bahwa Pentium 4 tersedia dengan kecepatan hingga 3,2 GHz dan lebih cepat dan chip sets yang mendukung Pentium 4 menggunakan RAMBUS atau teknologi memory DDR menggantikan standard sebelumnya teknologi SDRAM. Core2 adalah tersedia pada kecepatan hingga 3 GHz. Kecepatan-kecepatan mikroprosesor yang lebih tinggi ini adalah dibuat tersedia dengan sebuah peningkatan ukuran dari integrasi internal, yang pada saat ini adalah teknologi 0,045 micron atau 45 nm. Itu adalah juga menarik untuk dicatat bahwa Intel telah merubah ukuran cache Level 1 dari 32K menjadi 8K byte dan yang paling anyar hingga 64K. Baru-baru ini Intel telah memasukkan modifikasi baru pada Pentium 4 dan Core2 yang melibatkan sebuah core 64 bit dan core-core multiple. Modifikasi 64 bit tersebut memungkinkan mikroprosesor untuk mengalamati lebih dari 4G byte memori melalui sebuah addres dengan lebar bus 64 bit. Saat ini 40 pin- pin address didalam versi-versi yang baru ini memungkinkan

44 Dasar Teknik Komputer

hingga 1T (terabytes) memori yang dapat diakses. Mesin 64 bit tersebut juga membolehkan aritmetik integer 64 bit. Peningkatan terbesar di dalam teknologi tersebut bukan operasi 64 bitnya, tetapi termasuknya multiple core. Setiap core mengeksekusi sebuah tugas yang terpisah di dalam sebuah program, yang meningkatkan kecepatan dari eksekusi jika sebuah program ditulis untuk mengambil keuntungan dari multiple core tersebut. Program-program yang melakukan hal ini disebut dengan aplikasi-plikasi multithread. Saat ini Intel memproduksi (manufacture) versi core dual dan quad, tetapi di masa yang akan datang jumlah core nampaknya akan meningkat hingga delapan atau bahkan enambelas. Masalah yang dihadapi oleh Intel adalah bahwa kecepatan clock tidak dapat ditingkatkan pada sebuah rate yang jauh lebih tinggi, sehingga multiple cores adalah solusi saat ini untuk menyediakan mikroprosesor- mikroprosesor yang lebih cepat. Hampir 40 tahun setelah perkenalannya mikroprosesor 8086 pada tahun 1978, arsitektur terus mendominasi pasar prosesor. Meskipn organisasi dan teknologi dari mesin-mesin x86 telah berubah secara dramatis selama beberapa dekade, arsitektur set instruksi telah evolve untuk tetap kompatible ke belakang dengan versi-versi sebelumnya. Oleh karenanya, suatu program yag ditulis pada sebuah versi arsitektur x86 yang lebih lama dapat mengeksekusi pada versi-versi yang lebih baru. Mikroprosesor Intel Core i7 EE 4960X diperkenalkan pada tahun 2013 beroperasi pada 4 GHz dan mempunyai jumlah transistor sebanyak 1,86 milyar (1,86 billion) atau sekitar 64.000 kali jumlah mikroprosesor 8086 (29000 transistor).

Dasar Teknik Komputer 45 Soal-Soal 1. Jelaskan pembagian generasi komputer berdasarkan teknologi yang digunakan. 2. Apakah nama mesin hitung yang pertama kali digunakan oleh manusia ? 3. Apa yang menstimulasi terjadinya perkembangan teknologi komputer (elektronik) ? 4. Kenapa Charles Babbage pantas disebut sebagai bapak komputer digital modern ? 5. Siapakah programmer pertama di dunia ? 6. Apa nama mesin komputer yang dibuat untuk memecahkan kode-kode ENIGMA ? 7. Apa yang dimaksud dengan general purpose computer ? 8. Apa yang dimaksud dengan special purpose computer ? 9. Apa yang dimaksud dengan stored program concept ? 10. Apa kelebihan IAS computer yang dibuat oleh John Von Neumann ? 11. Sebutkan dua hal yang menyebabkan pesatnya perkembangan teknologi komputer saat ini. 12. Apa nama mikroposesor yang pertama kali diperkenalkan oleh Intel ? 13. Apa nama mikroprosesor yang digunakan pada personal computer PC pertama Altair ? 14. Apa nama mikroprosesor (Intel) yang digunakan pada personal computer PC IBM pertama ? 15. Berapa banyak memori yang dapat dialamati pada mikroprosesor Pentium 4 ?

46 Dasar Teknik Komputer

BAB 2. ARSITEKTUR DASAR KOMPUTER

2.1. Pendahuluan Sistem-sistem komputer telah mengalami banyak perubahan saat ini. Mesin-mesin yang pada awalnya menempati dan memenuhi ruangan yang sangat besar kini telah berubah dengan sangat drastis hingga berukuran komputer desktop yang cukup kecil tentu karena adanya mikroprosesor. Meskipun desktop- desktop komputer tersebut kompak, tetapi komputer-komputer tersebut mempunya daya hitung yang luar biasa yang pada beberapa tahun lalu mungkin hanyalah sebuah mimpi. Sistem- sistem komputer mainframe yang berharga mahal, yang dikembangkan pada awal tahun 1980-an, adalah sudah tidak sepowerful komputer-komputer berbasis Pentium Core2 saat ini. Dan pada kenyataannya, banyak perusahaan-perusahaan yang telah mengganti komputer-komputer mainframe mereka dengan sistem-sistem komputer yang berbasis mikroprosesor. Perusahaan-perusahaan besar seperti DEC (Digital Equipment Corporation) kini telah menghentikan memproduksi sistem- sistem komputer mainframe mereka dan berfokus pada sistem- sistem komputer berbasis mikroprosesor. Gambar dibawah ini adalah merupakan blok diagram dari sebuah personal computer PC. Blok diagram tersebut juga berlaku bagi semua jenis komputer, dari mulai sistem-sistem komputer mainframe yang dibuat pada masa-masa awalnya hingga sistem-sistem komputer yang berbasis mikroprosesor yang saat ini kita gunakan.

Dasar Teknik Komputer 47

Gambar 2.1.. Diagram blok dari sebuah sistem komputer berbasis mikroprosesor

2.2. Arsitektur Von Neumann Arsitektur Von Neumann adalah sebuah arsitektur komputer yang didasarkan pada deskripsi yang dibuat oleh seorang matematikawan Amerika yang bernama John Von Neumann dkk. pada tahun 1945 pada draft pertama dari sebuah report mengenai EDVAC. Dokumen tersebut menggambarkan sebuah arsitektur rancangan komputer digital elektronik. Istilah arsitektur Von Neuman telah berevolusi yang berarti suatu stored program computer dimana sebuah pengambilan informasi (information fetch) dan sebuah operasi data tidak dapat terjadi pada waktu yang bersamaan karena mereka berbagi sebuah bus (jalur) bersama. Hal ini dirujuk sebagai Von Neuman bottleneck dan seringkali membatasi performa dari sistem tersebut. Rancangan dari sebuah mesin arsitektur Von Neumann adalah lebih sederhana daripada mesin arsitektur Harvard yang juga sebuah stored program system tetapi mempunyai sebuah set alamat dan bus data yang dedicated untuk pembacaan dan penulisan pada memori, dan set alamat dan bus data yang lain untuk fetch instruksi-instruksi.

48 Dasar Teknik Komputer

Sebuah stored program digital computer tetap menjaga keduanya instruksi-instruksi program dan data di dalam sebuah RAM. Stored program computer adalah merupakan sebuah peningkatan dari program-controlled computer yang digunakan pada sistem komputer ENIAC pada masa itu. Pada komputer ENIAC, pemrograman dilakukan dengan cara mensetting saklar-saklar dengan pengkabelan ulang (rewiring cables) untuk me-rute-kan data dan sinyal-sinyal kontrol diantara bermacam-macam unit fungsional di dalam mesin tersebut. Arsitektur dasar mesin Von Neumann atau yang juga sering disebut sebagai arsitektur komputer IAS ini sampai sekarang masih menjadi rujukan dan kerangka referensi bagi sistem- sistem komputer digital umum modern. Dan pada dasarnya, mesin Von Neuman ini terdiri dari tiga bgaian atau unit yang sangat fundamental, yaitu : unit memori, CPU dan input-output I/O.

Gambar 2.2.. Arsitektur dasar Von Neumann (sumber : Andrew S. Tanembaun)

Dasar Teknik Komputer 49 Adapun cara kerja dari mesin tersebut adalah dapat dijelaskan sebagai berikut : Program disimpan didalam unit memori utama (main memory) melalui sebuah unit pengolahan pusat atau CPU (central processing unit). CPU membaca dari atau menulis ke memori, pertama-tama dengan mengirimkan alamat word ke unit memori tersebut melalui bus alamat (address bus) dan kemudian menerima atau mengirimkan data melalui bus data (data bus). Selanjutnya data dipertukarkan diantara CPU dan I/O juga menggunakan bus data. Kemudian operasi ini disinkronisasikan oleh bus kendali (control bus) dengan sinyal kendali (control signal) yang dikirimkan oleh CPU dan sinyal acknowledgement (acknowledgement signal) serta sinyal interupsi (interrupt signal) yang diterima oleh CPU.

2.3. Arsitektur Harvard Arsitektur Harvard adalah sebuah disain arsitektur komputer dengan penyimpanan instruksi-instruksi program dan data pada memori yang terpisah secara fisik. Hal ini sangat bertolak belakang dengan arsitektur Von Neumann, dimana instruksi-instruksi program dan data berbagi memory dan jalur (bus) yang sama. Istilah tersebut berasal dari komputer Harvard Mark I yang berbasis relay, yang menaruh instruksi-instruksi program pada punched tape yang mempunyai lebar 24 bit. Sementara data ditaruh di penghitung-penghitung (counters) elektro mekanis. Mesin-mesin awal ini mempunyai penyimpanan (storage) data yang keseluruhannya berisi dalam central processing unit, dan tidak menyediakan akses untuk penyimpanan instruksi sebagai data. Program-program perlu

50 Dasar Teknik Komputer

dimuatkan oleh seorang operator; prosesor tersebut tidak dapat menginisialisasi dirinya sendiri. Prosesor-prosesor modern nampak pada user menjadi mesin-mesin Von Neumann, dengan kode program ditaruh di memori yang sama sebagai data. Untuk alasan performa, tidak dapat dilihat secara internal, kebanyakan rancangan-rancangan mempunyai cache-cache prosesor terpisah untuk instruksi- instruksi dan data, dengan jalur (bus) yang terpisah kedalam prosesor untuk masing-masing. Ini adalah salah satu bentuk yang dikenal sebagai modified Harvard (arsitektur Harvard yang dimodifikasi).

Gambar 2.4. Arsitektur Harvard

2.4. Komputer Digital Sebuah komputer digital adalah sekumpulan elemen-elemen logika yang dapat mengeksekusi algoritma-algoritma arbitrary untuk melakukan operasi perhitungan data dan fungsi-fungsi manipulasi. Sebuah komputer tersusun dari sebuah mikroprosesor (CPU), memori dan elemen input/output (I/O). Mikroprosesor yang juga sering disebut sebagai microprocessor unit (MPU) atau central processing unit (CPU) yang berisi

Dasar Teknik Komputer 51 logika langkah-langkah dari sebuah algoritma, yang disebut sebagai sebuah program. Program-program tersebut ditaruh di dalam memori komputer. Data yang digunakan dan dimanipulasi oleh program tersebut disimpan di dalam memori data komputer. Sementara itu, memori adalah sebuah tempat penyimpanan (repository) untuk data yang biasanya diorganisasikan sebagai sebuah array linear dari lokasi-lokasi yang dapat diakses secara individual. Mikroprosesor tersebut dapat mengakses sebuah lokasi tertentu di dalam memori dengan menghadirkan sebuah alamat memori (memory address) yang berupa index dari lokasi yang dikehendaki pada elemen memori tersebut. Sementara elemen-elemen I/O memungkinkan mikroprosesor untuk berkomunikasi dengan dunia luar untuk mendapatkan data baru atau menghadirkan hasil-hasil dari perhitungan-perhitungan yang diprogram tersebut. Elemen- elemen semacam itu dapat berupa sebuah keyboard atau display controller. Program-program adalah tersusun dari banyak operasi- operasi individual yang sangat sederhana, yang disebut dengan instruksi-instruksi, yang menspesifikasikan dengan detail eksak bagaimana mikroprosesor tersebut seharusnya melaksanakan sebuah algoritma. Sebuah program yang sederhana boleh jadi mempunyai lusinan instruksi-instruksi, sementara sebuah program yang kompleks boleh jadi mempunyai puluhan juta instruksi-instruksi. Secara kolektif, program-program yang berjalan pada mikroprosesor adalah disebut sebagai software, dan berlawanan dengan hardware dimana mereka berjalan. Setiap tipe mikroprosesor mempunyai set instruksi-set instruksinya sendiri yang mendefinisikan sekumpulan operasi- operasi diskrit yang penuh dan unik dimana dia sanggup mengeksekusi.

52 Dasar Teknik Komputer

Sebuah mikroprosesor tidak memiliki kecerdasan yang melekat (inherent intelligence) atau kemampuan untuk memulai secara spontan melakukan pekerjaan yang berguna. Setiap mikroprosesor dikonstruksikan dengan sebuah set instruksi yang dapat diminta didalam urutan yang berubah-ubah (arbitrary). Oleh karenanya, sebuah mikroprosesor mempunyai potensial untuk melakukan pekerjaan yang berguna tetapi tidak akan melakukan sesuatu semacam itu dengan sendirinya. Untuk membuat mikroprosesor melakukan pekerjaan yang berguna, itu memerlukan pedoman yang jelas (explicit guidance) dalam bentuk pemrograman software. Sebuah tugas atau bahkan kompleksitas moderate harus diurai menjadi banyak langkah- langkah kecil untuk diimplementasi dalam sebuah mikroprosesor. Langkah-langkah ini meliputi aritmetika dasar, operasi-operasi Boolean, loading data dari memori atau sebuah elemen input seperti misalnya keyboard, dan penyimpanan data kembali pada memori atau sebuah elemen output seperti misalnya sebuah printer. Struktur memori adalah salah satu dari sebuah karakteristik kunci dari komputer, karena mikroprosesor tersebut adalah hampir secara konstan mengaksesnya atau mendapatkannya kembali (retrieve) sebuah instruksi baru, memuat (load) data baru untuk beroperasi pada, atau menaruh sebuah hasil yang telah dihitung. RAM adalah istilah yang digunakan untuk menggambarkan sebuah sumber daya memori generic yang lokasi-lokasinnya dapat diakses, atau dialamati, didalam suatu urutan yang arbitrary dan keduanya read atau writte. Sebuah read adalah proses untuk mendapatkan (retrieving) data dari sebuah alamat memori dan memuatnya (loading) ke dalam mikroprosesor. Sebuah wrute adalah proses untuk menaruh data pada sebuah alamat memori dari mikroprosesor tersebut.

Dasar Teknik Komputer 53 Keduanya, program dan data dapat menempati sebuah RAM. Pertimbangkanlah komputer desktop anda. Ketika anda mengeksekusi sebuah program yang berlokasi pada sebuah disk drive, program tersebut adalah pertama kali dimuat (loaded) ke dalam RAM komputer dan kemudian dieksekusi dari sebuah region. Seperti pada sebuah komputer desktop, RAM seringkali kebanyakan volatile, artinya bahwa dia akan kehilangan isinya ketika power atau daya listrik dimatikan. Sebuah program adalah sebuah daftar instruksi yang mengerjakan sebuah tugas. Program ditaruh didalam memori. Prosesor mengambil instruksi-instruksi program tersebut dari memori dan mengerjakan operasi-operasi yang diinginkan. Komputer adalah dikontrol oleh program yang ditaruh di dalam memori tersebut, kecuali untuk interupsi eksternal yang mungkin oleh sebuah operator atau oleh perangkat-perangkat I/O yang terkoneksi dengannya. Data adalah bilangan-bilangan atau karakter-karakter yang digunakan sebagai operand-operand oleh instruksi-instruksi. Data juga ditaruh didalam memori. Instruksi-instruksi dan data-data yang ditangani oleh sebuah komputer harus didekode (encoded) dalam sebuah format yang tepat. Kebanyakan hardware saat ini mempekerjakan rangkaian- rangkaian digital yang hanya mempunyai dua keadaan yang stabil.. Masing-masing instruksi, bilangan atau karakter adalah dienkode (encoded) sebagai sebuah urutan digit biner yang disebut bit, yang mana masing-masing mempunyai satu dari dua nilai yang mungkin, yaitu 0 atau 1, yang direpresentasikan oleh dua keadaan-keadaan yang stabil. Bilangan-bilangan adalah biasanya direpresentasikan dalam notasi biner posisional. Karakter-karakter adalah juga diekspresikan dalam hal kode- kode biner.

54 Dasar Teknik Komputer

2.4.1. Cara Kerja Komputer Program disimpan didalam unit memori utama (main memory) melalui sebuah unit pengolahan pusat atau CPU (central processing unit). CPU membaca dari atau menulis ke memori, pertama-tama dengan mengirimkan alamat word (word address) ke unit memori tersebut melalui bus alamat (address bus) dan kemudian menerima atau mengirimkan data melalui bus data (data bus). Selanjutnya data dipertukarkan diantara CPU dan I/O juga menggunakan bus data. Kemudian operasi ini disinkronisasikan oleh bus kendali (control bus) dengan sinyal kendali (control signal) yang dikirimkan oleh CPU dan sinyal acknowledgement (acknowledgement signal) serta sinyal interupsi (interrupt signal) yang diterima oleh CPU. Setiap CPU dibuat untuk melaksanakan sekumpulan operasi mikro tertentu. Rangkaian operasi-operasi tersebut, yang disebut sebagai instruksi mesin, digunakan untuk memprogram komputer. CPU menjalankan setiap instruksi mesin dengan menjalankan serangkaian operasi mikro yang tepat. Subkelompok operasi mikro yang dipilih untuk pelaksanaan instruksi tertentu, didasarkan pada interpretasi instruksi dan ditentukan selama proses perancangan komputer. Secara umum, program memerintahkan CPU untuk memindahkan data dari lokasi memori yang satu ke lokasi memori yang lain, kemudian memuatkannya (loading) ke memori lokal atau menyimpannya di register. Atau mengolahnya melalui operasi aritmatika (perhitungan) seperti penjumlahan, pengurangan, perkalian atau pembagian. Atau memerintahkan untuk melakukan sesuatu pengujian dan kemudian melompat (jump) ke bagian lain dari program bila ia berhasil. Instruksi tersebut dinamakan machine code atau machine language, dan primitif sifatnya. Misalnya, diperlukan

Dasar Teknik Komputer 55 lusinan perintah untuk menampilkan hanya satu karakter dilayar monitor. Tetapi karena CPU melakukannya secara cepat, maka tugas kompleks sekalipun hanhya memerlukan waktu yang singkat.

2.4.2. Format Instruksi Organisasi internal pada komputer dinyatakan oleh instruksi-instruksi yang dapat dijalankannya. Suatu instruksi merupakan suatu tata cara yang digunakan oleh komputer untuk menyatakan operasi-operasi seperti ADD, STORE, LOAD, MOVE dan BRANCH serta untuk menentukan lokasi data dimana suatu operasi akan dikerjakan. Kumpulan seluruh instruksi tersebut, disebut sebagai kumpulan instruksi, juga mencakup berbagai variasi operasi aritmatika dan logika, instruksi transfer data, instruksi I/O dan instruksi pengendalian. Setelah digabungkan bersama-sama oleh programmer, intruksi- instruksi tersebut membentuk sebuah program yang menyakan urutan pola perpindahan dan transformasi data. Suatu instruksi komputer merupakan kode biner yang dibagi menjadi sebuah field. Operasi field atau opcode menerima operasi yang harus dilaksanakan. Operasi ini dilaksanakan pada beberapa data, operand, yang bisa merupakan bagian instruksi atau disimpan dalam register atau dalam memori utama, dan yang lokasinya dijabarkan oleh field alamat pada instruks tersebut. Cara menginterpretasikan field operand diperinci oleh mode pengalamatan. Tergantung pada mode pengalamatan dan operasi tertentu, operand-operand yang sesungguhnya mungkin termasuk didalamnya, mungkin berupa konstanta atau mungkin disimpan dilokasi lainnya.. Panjang instruksi komputer tidak tetap. Suatu instruksi mungkin mempunyai panjang satu word

56 Dasar Teknik Komputer

atau lebih, dengan demikian memerlukan satu word memori atau lebih untuk diambil (fetched). Format instruksi yang umum diperlihatkan pada gambar dibawah. Field opcode atau kode operasi menunjukkan operasi yang dikerjakan. Sedangkan field operand menunjukkan data. Umumnya field operand atau data memberikan alamat lokasi memori dimana operand tersebut disimpan.

Gambar 2.5. Format instrukdi (assembly)

Soal-Soal 1. Jelaskan perbedaan antara arsitektur Von Neumann dan arsitektur Harvard. 2. Jelaskan cara kerja dari sebuah sistem komputer digital.

Dasar Teknik Komputer 57 BAB 3. KONSEP DASAR SISTEM BILANGAN

3.1. Pendahuluan Dalam kehidupan sehari-hari, kita mungkin sudah familiar dan terbiasa dalam menggunakan sistem bilangan yang disebut dengan bilangan desimal. Bilangan desimal adalah bilangan yang direpresentasikan dengan menggunakan 10 digit angka yang berbeda, yaitu mulai dari 0 hingga 9 (0,1,2,3,4,5,6,7,8,9). Dan oleh karena menggunakan 10 digit angka yang berbeda tersebut, maka sistem bilangan desimal dikatakan mempunyai radix atau basis 10. Sementara itu, di dalam sistem komputer ataupun rangkaian-rangkaian elektronika digital pada umumnya, satu- satunya pilihan basis yang bisa digunakan untuk melakukan proses aritmatika (perhitungan) adalah radix 2, yaitu aritmatika biner dengan menggunakan 2 digit angka yang berbeda (1 dan 0). Sistem komputer hanya mengenal tegangan tinggi yang direpresentasikan dengan digit 1 ataupun tegangan rendah yang direpresentasikan dengan digit 0. Atau kondisi saklar (switch) ON (tertutup) yang direpresentasikan dengan digit biner 1 dan saklar OFF (terbuka) yang direpresentasikan dengan digit biner 0. Selain kedua sistem bilangan tersebut diatas, terdapat juga sistem bilangan oktal dan bilangan heksadesimal. Kedua sistem bilangan non desimal terakhir ini, pada dasarnya adalah merupakan perluasan dari sistem bilangan biner. Sistim bilangan oktal mempunyai radix 8 sementara bilangan heksadesimal mempunyai radix 16.

58 Dasar Teknik Komputer

Tabel 3.1. Sistem bilangan Bilangan Radix r Digit (d) Desimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Biner 2 0, 1 Oktal 8 0, 1, 2, 3, 4, 5, 6, 7 Heksadesimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

3.2. Sistem Bilangan Desimal Sistem bilangan tradisional yang kita pelajari di sekolah dan kita gunakan sehari-hari di dalam perhitungan adalah disebut sebagai sistem bilangan posisional. Di dalam sistem bilangan posisional tersebut, sebuah bilangan direpresentasikan dengan sebuah deretan digit, dan tiap-tiap posisi digit mempunyai bobot masing-masing. Nilai dari sebuah bilangan adalah jumlah total bobot dari digit-digit yang berada didalam bilangan tersebut. Misalnya sebuah bilangan desimal 1734, maka akan mempunyai nilai : 1734 = 1 × 103 + 7 × 102 + 3 × 101 + 4 × 100 1734 = 1 ∙ 1000 + 7 ∙ 100 + 3 ∙ 10 + 4 ∙ 1

Setiap bobot pada digit bilangn desimal adalah 10 pangkat posisi digitnya masing-masing dikalikan dengan digit ke-1, ke-2, ke-3 dan ke-4 (lihat contoh diatas). Sebuah bilangan desimal yang berbentuk pecahan juga menggunakan formula yang sama, dimana untuk sebelah kiri koma adalah merupakan pangkat positif dan sebelah kanan koma adalah pangkat negatif. Misalnya bilangan desimal 5185,68 berikut ini : 5185,68 = 5 × 103 + 1 × 102 + 8 × 101 + 5 × 100 + 6 × 10−1 + 8 × 10−2 5185,68 = 5 ∙ 1000 + 1 ∙ 100 + 8 ∙ 10 + 5 ∙ 1 + 6 ∙ 0,1 + 8 ∙ 0,01 Dan secara umum, sebuah bilangan desimal 퐷 dengan bentuk 푑1푑0, 푑−1푑−2 mempunyai nilai :

Dasar Teknik Komputer 59 1 0 −1 −2 퐷 = 푑1 × 10 + 푑2 × 10 + 푑−1 × 10 + 푑−2 × 10 1 0 −1 −2 퐷 = 푑1 ∙ 10 + 푑2 ∙ 10 + 푑−1 ∙ 10 + 푑−2 ∙ 10 (3.1)

Didalam sebuah sistem bilangan posisional umum, basis atau radix boleh jadi merupakan sebuah integer 푟 ≥ 2 dan sebuah digit pada posisi 푖 mempunyai bobot 푟푖. Maka, bentuk umum dari sebuah bilangan didalam sistem semacam itu adalah :

푑푝−1푑푝−2 … . . 푑1푑0 , 푑−1푑−2 … . . 푑푛 (3.2)

Dimana ada 푝 digit ke kiri dari koma (,) dan 푛 digit ke kanan dari koma (,). Sementara nilai dari bilangan tersebut adalah jumlah dari masing-masing digit dikalikan dengan radix pangkatnya yang berkaitan : 푝=1 푖 퐷 = ∑푖=−푛 푑푖 푟 (3.3)

Representasi dari sebuah bilangan dalam sistem bilangan posisional adalah unik (misalnya 0125,6300 adalah serupa dengan 125,63 dst). Digit yang paling kiri dari sebuah bilangan semacam itu disebut sebagai digit yang paling signifikan (the most significant digit MSD), sementara yang paling kanan disebut digit yang paling tidak signifikan (the least significant digit LSD).

3.3. Sistem Bilangan Biner Rrangkaian-rangkaian digital mempunyai sinyal-sinyal yang pada umumnya adalah satu dari dua kondisi-kondisi yang berbeda, yaitu tinggi atau rendah, bermuatan atau kosong, ON atau OFF dsb. Sinyal-sinyal pada rangkaian-rangkaian ini adalah diinterpretasikan untuk merepresentasikan digit-digit biner. Jadi,

60 Dasar Teknik Komputer

basis biner adalah pada umumnya digunakan untuk merepresentasikan bilangan-bilangan di dalam sebuah sistem rangkaian digital. Bentuk umum dari sebuah bilangan biner adalah : 푏푝−1푏푝−2 … . . 푏1푏0, 푏−1푏−2 … . . 푏−푛 (3.4) Sementara nilai atau jumlah bobotnya adalah : 푝=1 푖 퐵 = ∑푖=−푛 푏푖 ∙ 2 (3.5)

Ketika mengkaitkan bilangan-bilangan biner dengan bilangan-bilangan desimal atau bilangan-bilangan non desimal lainnya, kita menggunakan sebuah tanda subscript untuk menunjukkan radix atau basis dari bilangan tersebut. Contoh- contoh dari bilangan-bilangan biner dan ekivalen desimalnya adalah diberikan sebagai berikut : 4 3 2 1 0 100112 = 1 × 2 + 0 × 2 + 0 × 2 + 1 × 2 + 1 × 2 = 1910 atau

100112 = 1 × 16 + 0 × 8 + 0 × 4 + 1 × 2 + 1 × 1 = 1910 Maka 10112 = 1910. 2 1 0 −1 −2 −3 101,0012 = 1 × 2 + 0 × 2 + 1 × 2 + 0 × 2 + 0 × 2 + 1 × 2 = 5,12410 atau

101,0012 = 1 × 4 + 0 × 2 + 1 × 1 + 0 × 0,5 + 0 × 0,25 + 1 × 0,125 = 5,12510

Maka 101,0012 = 5,12510. Yang paling kiri disebut sebagai the most significant bit (MSB). Sementara yang paling kanan disebut sebagai the least significant bit ( LSB).

Dasar Teknik Komputer 61 3.4. Sistem Bilangan Oktal dan Heksadesimal Sistem bilangan dengan radix 10 adalah penting karena kita menggunakannya dalam kehidupan sehari-hari. Sementara sistem dengan radix 2 juga adalah penting karena bilangan biner tersebut dapat diproses secara langsung pada rangkaian- rangkaian switch atau rangkaian-rangkaian elektronika digital seperti misalnya pada sebuah sistem komputer. Bilangan- bilangan dengan radix yang lain adalah seringkali tidak diproses secara langsung, akan tetapi menjadi penting untuk tujuan-tujuan yang lainnya. Tabel dibawah ini menunjukkan integer biner dari 0 hingga 1111 dan ekivalen oktal, desimal dan heksadesimalnya. Sistem oktal memerlukan 8 digit maka dia menggunakan digit 0 – 7 dari sistem desimal. Sementara sistem heksdesimal memerlukan 16 digit maka dia menggunakan digit-digit desimal 0 - 9 dengan huruf A – F. Bilangan oktal dan heksadesimal adalah berguna untuk merepresentasikan bilangan-bilangan multibit (terdiri dari banyak bit-bit) karena radix mereka adalah pangkat dari 2. Karena sebuah deretan yang berisi 3 buah bit dapat membentuk 8 kombinasi yang berbeda, dan masing-masing deretan 3 bit tersebut dapat direpresentasikan secara unik dengan sebuah digit oktal. Begitu pula dengan deretan 4-bit yang dapat direpresentasikan dengan satu digit heksadesimal. Selain itu juga adalah sangat mudah untuk merubah-rubah atau mengkonversi bilangan biner menjadi oktal atau heksadesimal. Dimulai pada biner point dan bekerja ke kiri, kita tinggal memisahkan bit-bit menjadi kelompok-kelompok yang berisi tiga atau empat bit dan menggantikan masing-masing kelompok dengan digit oktal dan heksa. Berikut ini adalah contoh- contohnya :

62 Dasar Teknik Komputer

100011001112 = 100 011 001 1102 = 43168 (bilangan oktal) 100011001112 = 1000 1100 11102 = 8CE16 (bilangan heksadrsimal)

Tabel 3.2. Bilangan-bilangan biner, desimal, oktal dan heksadesimal

Bine Desim Okta Deretan 3- Heksadesim Deretan 4- r al l bit al bit 0 0 0 000 0 0000 1 1 1 001 1 0001 10 2 2 010 2 0010 11 3 3 011 3 0011 100 4 4 100 4 0100 101 5 5 101 5 0101 110 6 6 110 6 0110 111 7 7 111 7 0111 1000 8 10 - 8 1000 1001 9 11 - 9 1001 1010 10 12 - A 1010 1011 11 13 - B 1011 1100 12 14 - C 1100 1101 13 15 - D 1101 1110 14 16 - E 1110 1111 15 17 - F 1111

3.5. Konversi Konversi Bilangan Pada umumnya, konversi diantara dua radix atau basis dari suatu bilangan dapat dilakukan melalui operasi-operasi aritmatika tertentu. Kita akan menunjukkan bagaimana mengkonversi sebuah bilangan dengan suatu radix tertentu menjadi radix 10 dan atau sebaliknya, dengan menggunakan

Dasar Teknik Komputer 63 aritmatika radix 10. Dan seperti yang telah dijelaskan sebelumnya, nilai dari sebuah bilangan dengan suatu basis tertentu diberikan oleh formula sbb : 푝=1 푖 퐷 = ∑ 푑1 ∙ 푟 푖=−푛

Dimana 푟 adalah radix atau basis dari bilangan tersebut dan ada 푝 digits kearah kiri dari radix point dan 푛 kearah kanan. Maka nilai dari bilangan tersebut dapat dicari dengan merubah tiap-tiap digit dari bilangan tersebut terhadap ekivalen radix 10 nya dan memperluas formula dengan menggunakan aritmatika radix 10. 3 2 1 0 1CE816 = 1 ∙ 16 + 12 ∙ 16 + 14 ∙ 16 + 3 ∙ 16 = 740010 2 1 0 −1 436,58 = 4 ∙ 8 + 3 ∙ 8 + 6 ∙ 8 + 5 ∙ 8 = 286,62510

3.5.1. Konversi Bilangan Desimal ke Biner Berikut ini adalah beberapa contoh bagaimana mengkonversi dari suatu bilangan desimal menjadi ekivalen bilangan biner.

Contoh 3.1 Konversikan bilangan desimal 9 menjadi bentuk bilangan biner. Penyelesaian : 9 ∶ 2 = 4 푠푖푠푎 1 (LSB) : 2 = 2 푠푖푠푎 0 : 2 = 1 푠푖푠푎 0 : 2 = 0 푠푖푠푎 1 (푀푆퐵)

Maka 910 = 10012

64 Dasar Teknik Komputer

Contoh 3.2 Konversikan bilangan desimal 47 menjadi bentuk bilangan biner. Penyelesaian : 47 ∶ 2 = 23 푠푖푠푎 1 (퐿푆퐵) : 2 = 11 푠푖푠푎 1 : 2 = 5 푠푖푠푎 1 : 2 = 4 푠푖푠푎 1 : 2 = 2 푠푖푠푎 0 : 2 = 1 푠푖푠푎 0 : 2 = 0 푠푖푠푎 1 (푀푆퐵)

Maka 4710 = 10011112

Contoh 3.3 Konversikan bilangan desimal 179 menjadi bentuk bilangan biner. Penyelesaian : 179 ∶ 2 = 89 푠푖푠푎 1 (퐿푆퐵) : 2 = 44 푠푖푠푎 1 : 2 = 22 푠푖푠푎 0 : 2 = 11 푠푖푠푎 0 : 2 = 5 푠푖푠푎 1 : 2 = 2 푠푖푠푎 1 : 2 = 1 푠푖푠푎 0 : 2 = 0 푠푖푠푎 1 (푀푆퐵)

Maka 17910 = 101100112

Dasar Teknik Komputer 65 Contoh 3.4 Konversikan bilangan desimal 1347 menjadi bentuk bilangan biner. Penyelesaian : 1347 ∶ 2 = 673 푠푖푠푎 1 (퐿푆퐵) : 2 = 336 푠푖푠푎 1 : 2 = 168 푠푖푠푎 0 : 2 = 84 푠푖푠푎 0 : 2 = 42 푠푖푠푎 0 : 2 = 21 푠푖푠푎 0 : 2 = 10 푠푖푠푎 1 : 2 = 5 푠푖푠푎 0 : 2 = 2 푠푖푠푎 1 : 2 = 1 푠푖푠푎 0 : 2 = 0 푠푖푠푎 1 (푀푆퐵)

Maka 134710 = 101010000112 Contoh 3.5 Konversikan bilangan desimal 5239 menjadi bentuk bilangan biner. Penyelesaian : 5239 ∶ 2 = 2619 푠푖푠푎 1 (퐿푆퐵) : 2 = 1309 푠푖푠푎 1 : 2 = 654 푠푖푠푎 1 : 2 = 327 푠푖푠푎 0 : 2 = 163 푠푖푠푎 1 : 2 = 81 푠푖푠푎 1 : 2 = 40 푠푖푠푎 1 : 2 = 20 푠푖푠푎 0 : 2 = 10 푠푖푠푎 0 : 2 = 5 푠푖푠푎 0 : 2 = 2 푠푖푠푎 1 : 2 = 1 푠푖푠푎 0 : 2 = 0 푠푖푠푎 1 (푀푆퐵)

Maka 523910 = 10100011101112

66 Dasar Teknik Komputer

Konversi dari suatu bilangan desimal menjadi bilangan dengan radix 푛 dilakukan dengan pengurangan yang berulang dari bilangan yang diperkirakan paling mendekati yang diberikan oleh suatu digit tunggal (dalam basis 푛) dari sisa bilangan yang akan dikonversi. Misalnya :

Berapakah bilangan 12510 apabila dikonversi menjadi basis 7 ? Pertama, karena 125 < 73 = 343, adalah bilangan 72 =

49 yang terdapat di 12510 yang pertama yang harus dicari, adalah 2 karena 2 × 49 = 98 yang adalah < 125. Ini menyisakan 2710. Kemudian 2710 perlu dibuat (made up) dari 71 dan 70. Karena (3 × 7) = 21, menyisakan 6, maka :

125 2 × 49 → −98 → 2푋푋7 ----- 3 × 7 → −21 → 23푋7 ___ 6 6 × 1 → −6 → 2367 ___ 0

Atau seperti telah ditunjukkan pada contoh-contoh sebelumnya untuk mengkonversi dari bilangan desimal menjadi biner, yaitu kita selesaikan dengan cara membagi 7 secara berulang.

Dasar Teknik Komputer 67 Contoh 3.6 Konversikan bilangan desimal 125 menjadi bilangan dengan radix 7. Penyelesaian :

125 ∶ 7 = 17 푠푖푠푎 6 (퐿푆퐷) : 7 = 2 푠푖푠푎 3 : 7 = 0 푠푖푠푎 2 (푀푆퐷)

Maka 12510 = 2367

3.5.2. Konversi Bilangan Desimal ke Oktal Berikut ini adalah beberapa contoh bagaimana mengkonversi dari suatu bilangan desimal menjadi ekivalen bilangan oktal. Contoh 3.7 Konversikan bilangan desimal 108 menjadi bilangan dengan radix 8 (oktal). Penyelesaian : 108 ∶ 8 = 13 푠푖푠푎 4 (퐿푆퐷) : 8 = 1 푠푖푠푎 5 : 8 = 0 푠푖푠푎 1 (푀푆퐷)

Maka 10810 = 1548 Contoh 3.8 Konversikan bilangan desimal 467 menjadi bentuk bilangan oktal. Penyelesaian : 467 ∶ 8 = 58 푠푖푠푎 3 (퐿푆퐷) : 8 = 7 푠푖푠푎 2 : 8 = 0 푠푖푠푎 7 (푀푆퐷)

Maka 46710 = 7238

68 Dasar Teknik Komputer

3.5.3. Konversi Bilangan Desimal ke Heksa Berikut ini adalah beberapa contoh bagaimana mengkonversi dari suatu bilangan desimal menjadi ekivalen bilangan heksadesimal. Contoh 3.9 Konversikan bilangan desimal 108 menjadi bentuk bilangan heksadesimal. Penyelesaian : 108 ∶ 16 = 6 푠푖푠푎 12 (퐿푆퐷) : 16 = 0 푠푖푠푎 6 (푀푆퐷)

Maka 10810 = 6퐶16

Selanjutnya, bagaimana cara mengkonversi bilangan-bilngan desimal campuran yang mengandung bentuk pecahan (fractional)?. Berikut ini adalah beberapa contohnya : Contoh 3.10 Konversikan bilangan desimal 0,625 menjadi bentuk bilangan biner. Penyelesaian :

0,62510 0,625 × 2 = 1, 250 0,250 × 2 = 0, 500 0,500 × 2 = 1,000

Maka 0,62510 = 0,1012

Dasar Teknik Komputer 69 Contoh 3.11 Konversikan bilangan desimal 0,40625 menjadi bentuk bilangan biner. Penyelesaian :

0,4062510 0,40625 × 2 = 0,8125 0,8125 × 2 = 1,625 0,625 × 2 = 1,250 0,250 × 2 = 0,500 0,500 × 2 = 1,000

Maka 0,4062510 = 0,011012

Contoh 3.12 Konversikan bilangan desimal 0,59375 menjadi bentuk bilangan biner. Penyelesaian :

0,5937510 0,59375 × 2 = 1,1875 0,1875 × 2 = 0,375 0,375 × 2 = 0,750 0,750 × 2 = 1,500 0,500 × 2 = 1,000

Maka 0,5937510 = 0,100112

70 Dasar Teknik Komputer

Contoh 3.13 Konversikan bilangan desimal 58,3125 menjadi bentuk bilangan biner. Penyelesaian :

58,312510 58 ∶ 2 = 29 푠푖푠푎 0 : 2 = 14 푠푖푠푎 1 : 2 = 7 푠푖푠푎 0 : 2 = 3 푠푖푠푎 1 : 2 = 1 푠푖푠푎 1 : 2 = 0 푠푖푠푎 1

Maka 58, … .10 = 111010, … .2

0,3125 × 2 = 0,625 0,625 × 2 = 1,250 0,250 × 2 = 0,500 0,500 × 2 = 1,000

Maka 0,312510 = 0,01012 → Maka 58,312510 = 111010,01012

Contoh 3.14 Konversikan bilangan desimal 5613,90625 menjadi bentuk bilangan biner. Penyelesaian :

5613,9062510 5613 ∶ 8 = 701 푠푖푠푎 5 : 8 = 87 푠푖푠푎 5 : 8 = 10 푠푖푠푎 7 : 8 = 1 푠푖푠푎 2 : 8 = 0 푠푖푠푎 1

Maka 5610 = 127558 = 001 010 111 101 1012

Dasar Teknik Komputer 71 0,90625 × 8 = 7,25 0,25 × 8 = 2

Maka 0,9062510 = 728 = 111 0102 Maka 5613,9062510 = 001 010 111 101 101,111 0102

Pada sebuah bilangan biner yang mengandung bentuk pecahan, kita dapat mengkonversinya menjadi bentuk bilangan oktal atau heksadesimal dengan memulai pada binary point (titik biner) tersebut dan bekerja ke kanan. Keduanya sisi kiri dan sisi kanan dapat ditambahkan dengan angka "ퟎ" untuk mendapatkan multiple bit (kelompok bilangan biner yang terdiri dari 3 bit dan 4 bit).

10,10110010112 = 010, 101 100 101 1002 = 2,54548 (oktal) 10,10110010112 = 0110, 1011 0010 11002 = 2, B2C16 (heksadesimal)

Untuk mengkonversi arah sebaliknya, dari oktal atau heksadesimal menjadi biner, adalah sangat mudah. Dimana kita tinggal mengganti masing-masing digit oktal atau heksadesimal dengan deretan 3-bit atau 4-bit bilangan terkait, misalnya :

13578 = 001 011 101 1112 BEAD16 = 1011 1110 1010 11012

Selanjutnya kita akan mengkonversi dari bilangan biner menjadi bilangan desimal. Misalkan diberikan sebuah bilangan desimal 123,5. Maka bilangan tersebut adalah ekivalen dan merupakan penjumlahan dari masing-masing digitnya dikalikan dengan radixnya :

1 × 102 + 2 × 101 + 3 × 100 + 5 × 10−1

72 Dasar Teknik Komputer

Cara yang sama juga berlaku untuk sebuah sistem bilangan biner yang mempunyai radix 2. Untuk melakukan konversi dari suatu bilangan biner menjadi bilangan desimal dapat dilakukan melalui proses penjumlahan.

3.5.4. Konversi Bilangan Biner ke Desimal Berikut ini adalah beberapa contoh bagaimana mengkonversi dari suatu bilangan biner menjadi ekivalen bilangan desimal. Contoh 3.15 Konversikan bilangan biner 1001,1 menjadi bentuk bilangan desimal. Penyelesaian : 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 + 1 × 2−1 1 8 + 0 + 0 + 1 + = 9,5 2 Maka 1001,12 = 9,510

Contoh 3.16 Konversikan bilangan biner 11010 menjadi bentuk bilangan desimal. Penyelesaian :

4 3 2 1 0 110102 = 1 × 2 + 1 × 2 + 0 × 2 + 1 × 2 + 0 × 2 = 16 + 8 + 0 + 2 + 0

= 2610 Maka 110102 = 2610

Dasar Teknik Komputer 73 Contoh 3.17 Konversikan bilangan biner 0,1011 menjadi bentuk bilangan desimal. Penyelesaian : Misalnya bilangan biner 0,1011, maka dengan cara yang sama seperti diatas, bilangan tersebut dapat kita rubah menjadi bentuk desimalnya sebagai berikut : −1 −2 −3 −4 0,10112 = 1 × 2 + 0 × 2 + 1 × 2 + 1 × 2 1 1 1 1 = 1 × + 0 × + 1 × + 1 × 2 22 23 24 1 1 1 = + 0 + + 2 8 16 = 0,5 + 0,125 + 0,0625

= 0,687510 Maka 0,10112 = 0, 687510

Contoh 3.18 Konversikan bilangan biner 101,0101 menjadi bentuk bilangan desimalnya. Penyelesaian : 2 1 0 −1 −2 −3 −4 101,01012 = 1 × 2 + 0 × 2 + 1 × 2 + 0 × 2 + 1 × 2 + 0 × 2 + 1 × 2 = 4 + 0 + 1 + 0 + 0,25 + 0 + 0,0625

= 5,312510

3.5.5. Konversi Bilangan Biner ke Oktal Berikut ini adalah beberapa contoh bagaimana mengkonversi dari suatu bilangan biner menjadi ekivalen bilangan oktal. Contoh 3.19 Konversikan bilangan biner 10111011001 menjadi bentuk bilangan octal.

74 Dasar Teknik Komputer

Penyelesaian : Bilangan-bilangan biner tersebut dikelompokkan terlebih dahulu dimana masing-masing kelompok berisi 3 bilangan biner :

10 111 011 001 2 7 3 1

Maka 101110110012 = 27318.

3.5.6. Konversi Bilangan Biner ke Heksadesimal Berikut ini adalah beberapa contoh bagaimana mengkonversi dari suatu bilangan biner menjadi ekivalen bilangan heksadesimal. Contoh 3.20 Konversikan bilangan biner 1110011110101001 menjadi bentuk bilangan heksadesimal. Penyelesaian : Bilangan-bilangan biner tersebut dikelompokkan terlebih dahulu dimana masing-masing kelompok terdiri dari empat bit, maka : 1110 0111 1010 1001 E 7 A 9

Sehingga 11100111101010012 = E7A916.

3.6. Representasi Bilangan Biner 3.6.1. Sign-Bit Magnitude Sebelumnya, didalam pembahassn mengenai sistem bilangan ini, kita hanya membahas mengenai bilangan-bilangan positif saja. Selanjutnya bagaimanakah dengan bilangan- bilangan negatif ?. Ada beberapa cara untuk merepresentasikan bilangan-bilangan negatif. Di dalam kegiatan sehari-hari, kita menggunakan sistem magnitude bertanda (the signed- magnitude system). Dimana di dalam represerntasi sistem

Dasar Teknik Komputer 75 magnitudo bertanda tersebut sebuah bilangan terdiri dari sebuah magnitudo (besaran atau nilai) dan sebuah simbol yang menunjukkan apakah magnitudo tersebut bertanda positif atau negatif. Oleh karenanya, kita menginterpretasikan bilangan- bilangan desimal negatif sebagai −1, −2, −3 dst. dengan cara yang seperti biasa. Kita juga menganggap bahwa tanda dari bilangan tersebut adalah " + " jika simbol tanda tidak ditulis. Dan terdapat dua kemungkinan representasi untuk bilangan nol, yaitu " + 0" dan " − 0". Akan tetapi, untuk bilangan "ퟎ" ini keduanya mempunyai nilai atau magnitudo yang sama. Signed- magnitude system adalah digunakan untuk merepresentasikan bilangan integer negatif dan positif. Dengan menggunakan MSB sebagai bit tanda, dimana 0=positif dan 1=negatif. Contoh sign- magnitude +9 dalam 8-bit=00001001. Sign-magnitude −4 dalam 4-bit=1100. Magnitude dari bilangan positif dan negatif adalah sama yang membedakan hanya MSB saja pada sign bitnya. Suatu cara untuk merepresentasikan bilangan-bilangan negatif pada bilangan biner adalah dengan mengubah magnitudonya (1,2,3 dst.) ke dalam bentuk biner yang ekivalen dan menuliskan tandanya di depan bilangan yang bersangkutan. Sehingga bilangan-bilangan desimal −1, −2, dan − 3 tersebut menjadi bilangan biner −001, −010 dan −011. Akan tetapi, tanda negatif " − " pada bilangan-bilangan biner tersebut biasanya digantikan dengan angka 1. Sementara angka 0 dipakai untuk menggantikan tanda positif " + ".Sehingga bilangan- bilangan biner −001, −010 dan −011 dapat dituliskan kembali sebagai 1001, 1010 dan 1011. Bilangan-bilangan tersebut diatas memiliki bit tanda yang diikuti oleh bit-bit magnitudonya. Bilangan biner dalam bentuk demikian disebut sebagai bilangan biner bertanda. Apabila bilangan desimalnya lebih besar maka

76 Dasar Teknik Komputer

tentunya akan diperlukan lebih dari 4 bit biner untuk merepresentasikannya. Namun demikian gagasan dasarnya adalah masih tetap sama, yaitu bit awal (MSB) digunakan untuk menunjukkan tanda sementara bit-bit berikutnya menyatakan magnitudonya. Sekarang anggaplah bahwa kita ingin membangun sebuah rangkaian logika digital yang menjumlahkan bilangan- bilangan biner bertanda. Rangkaian tersebut harus memeriksa (examine) tanda dari bilangan-bilangan yang dijumlahkan untuk menentukan apa yang harus dilakukan dengan magnitudo- magnitudo tersebut. Jika tanda pada bilangan-bilangan tersebut adalah sama, maka rangkaian harus menjumlahkan magnitudo- magnitudo tersebut dan memberikan hasil tanda yang sama. Jika tandanya adalah berbeda, maka rangkaian harus membandingkan magnitudo-magnitudo tersebut, mengurangkan yang lebih kecil dari yang lebih besar, dan memberikan hasil tanda yang lebih besar. Contoh 3.21 Nyatakanlah bilangan-bilangan +0 dan −0 sebagai bilangan biner bertanda 8 bit. Penyelesaian :

0000 00002 = +010 1000 00002 = −010 Contoh 3.22 Nyatakanlah setiap bilangan-bilangan berikut ini sebagai bilangan biner bertanda 8 bit : +85, −85, +127, −127. Penyelesaian :

0101 01012 = +8510 1101 01012 = −8510 0111 11112 = +12710 1111 11112 = −12710

Dasar Teknik Komputer 77 Contoh 3.23 Nyatakan setiap bilangan berikut ini sebagai bilangan biner bertanda 16 bit : +7, −7, +25 dan −25. Penyelesaian :

0000 0000 0000 01112 = +710 1000 0000 0000 01112 = −710 0000 0000 0001 10012 = +2510 1000 0000 0001 10012 = −2510

Contoh 3.24 Rubahlah bilangan biner bertanda berikut ini ke dalam bentuk desimal : 1000 0000 0000 1111, 1000 0000 0011 0000, 0000 0000 1010 0101 dan 0000 0000 0000 1001. Penyelesaian :

1000 0000 0000 11112 = −1510 1000 0000 0011 00002 = −4810 000 0000 1010 01012 = +16510 0000 0000 0000 10012 = +910

3.6.2. Sistem Bilangan Komplemen Sementara sistem magnitudo bertanda menegasikan sebuah bilangan dengan merubah tandanya, sebuah sistem bilangan komplemen menegasikan sebuah bilangan dengan mengambil bentuk komplemennya seperti yang didefinisikan oleh sistem. Mengambil komplemennya adalah lebih sulit daripada merubah tanda, akan tetapi dua buah bilangan didalam sebuah sistem bilangan komplemen dapat dijumlahkan atau dikurangkan secara langsung tanpa diperlukan eksaminasi atau pemeriksaan tanda dan magnitudo oleh sistem magnitude bertanda tersebut (signed-magnitude system). Penjumlah- penjumlah (adders) untuk sistem-sistem bilangan komplemen

78 Dasar Teknik Komputer

adalah jauh lebih sederhana. Dan kebanyakan dari komputer- komputer adalah menggunakan sistem bilangan komplemen dalam operasi aritmatikanya. Bilangan biner bertanda memang mudah dimengerti, akan tetapi bentuk bilangan ini memerlukan perangkat keras yang terlampau banyak dan rumit untuk operasi penjumlahan dan pengurangannya. Kekurangan inilah yang mendorong penggunaan format bilangan komplemen secara luas dalam aritmatika biner. Di dalam sebuah sistem bilangan magnitude bertanda dan sistem bilangan komplemen, kita pada umumnya berhubungan dengan sebuah bilangan dengan jumlah digit yang tetap fixed point numbers, katakanlah 푛. Bagaimanapun, kita dapat meningkatkan jumlah dari digit dengan sign extention dan mengurangi jumlah dengan truncating high order digits. Dengan menganggap bahwa basis atau radix adalah 푟, dan bilangan- bilangan tersebut mempunyai bentuk :

퐷 = 푑푛−1푑푛−2 … 푑1푑0 (3.6)

Pada bilangan-bilangan fixed point (fixed point numbers), titik radix (radix point) adalah di kanan dan oleh karenanya bilangan tersebut adalah sebuah integer. Radix point/binary point adalah tetap dan diasumsikan akan berada disebelah kanan dari digit yang paling kanan. Titik radiks adalah titik yang memisahkan bilangan bulat dan pecahan. Penggunaan titik radiks ini adalah berkaitan dengan jajaran bilangan yang dapat ditampung oleh komputer. Jika sebuah operasi menghasilkan sebuah hasil yang memerlukan lebih dari 푛 digit, kita membuang (throw away) digit-digit ekstra yang lebih tinggi. Dan jika sebuah bilangan 퐷 adalah dikomplemenkan dua kali, maka hasilnya adalah 퐷.

Dasar Teknik Komputer 79 Menurut definisi, komplemen radix dari sebuah bilangan 퐷 푛-digit adalah diperoleh dengan mengurangkannya dari 푟푛. Jika 퐷 adalah diantara 1 dan 푟푛 − 1, pengurangan ini menghasilkan bilangan lain diantara 1 dan 푟푛 − 1. Jika 퐷 adalah 0, hasil dari pengurangan adalah 푟푛, yang mempunyai bentuk 100…00, dimana ada total sebanyak 푛 + 1 digit. Kita membuang (throw away) digit ekstra yang lebih tinggi dan mendapatkan hasil 0. Oleh karenanya, hanya ada satu representasi dari nol didalam sebuah sistem komplemen radix. Di dalam sistem bilangan desimal, komplemen radix adalah disebut sebagai komplemen -10 (10’s complement). Beberapa contoh yang menggunakan bilangan-bilangan desimal 4 digit (dan pengurangan dari 10,000) adalah ditunjukkan pada tabel dibawah ini.

Tabel 3.3. Bilangan Komplemen 10 Komplemen 9 1849 8151 8150 2067 7933 7932 100 9900 9899 7 9993 9992 8151 1849 1848 0 10000 (=0) 9999

Terlihat dari definisi bahwa sebuah operasi pengurangan adalah diperlukan untuk menghitung komplemen radix dari 퐷. Bagaimanapun, pengurangan ini dapat dihindari dengan penulisan kembali 푟푛 sebagai (푟푛 − 1) + 1 dan 푟푛 − 퐷 sebagai ((푟푛 − 1) − 퐷) + 1. Bilangan 푟푛 − 1 mempunyai bentuk

80 Dasar Teknik Komputer

푚푚 … 푚푚, dimana 푚 = 푟 − 1 dan ada 푛 푚′푠. Sebagai contoh, 10,000 sama dengan 9,999 + 1. Jika kita mendefinisikan komplemen dari sebuah digit 푑 adalah 푟 − 1 − 푑, maka (푟푛 − 1) − 퐷 adalah diperoleh dengan mengkomplemenkan digit-digit dari 퐷. Oleh karenanya, komplemen radix dari sebuah bilangan 퐷 adalah diperoleh dengan mengkomplemenkan masing-masing digit dari 퐷 dan penambahan 1. Sebagai contoh, komplemen 10 dari 1849 adalah 8150 + 1, atau 8151. Anda harus mengkonfirmasi bahwa trik ini juga berlaku untuk contoh-contoh komplemen 10 lainnya diatas. Tabel dibawah memberikan daftar komplemen-komplemen digit untuk bilangan-bilangan biner, oktal, desimal dan heksadesimal.

Tabel 3.4. Komplemen-komplemen digit

Komplemen Digit Biner Oktal Desimal Heksadesimal 0 1 7 9 F 1 0 6 8 E 2 - 5 7 D 3 - 4 6 C 4 - 3 5 B 5 - 2 4 A 6 - 1 3 9 7 - 0 2 8 8 - - 1 7 9 - - 0 6 A - - - 5 B - - - 4 C - - - 3 D - - - 2 E - - - 1 F - - - 0

Dasar Teknik Komputer 81 3.6.2.1. Representasi Komplemen -1 Di dalam format komplemen -1, bilangan-bilangan positif adalah tetap tidak berubah. Sementara bilangan-bilangan negatif adalah diperoleh dengan mengambil komplemen -1 dari counterpart-counterpart positif. Artinya untuk mendapatkan komplemen -1, maka bilangan 0 menjadi 1 dan sebaliknya, 1 menjadi 0. Sebagai contoh, bilangan desimal +9 akan direpresentasikan sebagai 00001001 didalam notasi 8 bit, dan −9 akan direpresentasikan sebagai 11110110, yang adalah komplemen -1 dari 00001001. Lagi, notasi 푛-bit dapat digunakan untuk merepresentasikan bilangan-bilangan didalam range dari −(2푛−1 − 1) hingga +(2푛−1 − 1) dengan menggunakan format komplemen -1. Representasi 8-bit dari format komplemen -1 dapat digunakan untuk merepresentasikan bilangan-bilangan desimal di dalam range dari −127 hingga +127. Berikut ini adalah contoh-ontoh lainya dari representasi komplemen -1 dalam 8-bit : +12 = 00001100 +42 = 00101010 −12 = 11110011 −42 = 11010101

3.6.2.2. Representasi Komplemen -2 Untuk sistem bilangan-bilangan biner, komplemen radix dinamakan sebagai komplemen -2. Dimana di dalam format representasi komplemen -2 tersebut , MSB adalah merepresentasikan tanda (0 adalah digunakan untuk tanda positif dan 1 digunakan untuk tanda negatif). Sementara bit-bit berikutnya digunakan untuk merepresentasikan magnitudo. Magnitudo-magnitudo positif adalah direpresentasikan dengan cara yang sama seperti dalam kasus bit tanda atau representasi

82 Dasar Teknik Komputer

komplemen -1. Magnitudo-magnitudo negatif adalah direpresentasikan dengan komplemen -2 dari counterpart- counterpart positif mereka. Sistem komplemen -2 adalah sangat popular karena format tersebut sangat mudah untuk men- generate komplemen -2 dari sebuah bilangan biner dan juga karena operasi-operasi aritmatika adalah relatif lebih mudah untuk dilakukan ketika bilangan-bilangan tersebut adalah dalam format komplemen -2.

Tabel 3.5. Bilangan desimal dan bilangan 4-bit Desimal Signed Magnitude Komplemen -1 Komplemen -2 -8 - - 1000 -7 1111 1000 1001 -6 1110 1001 1010 -5 1101 1010 1011 -4 1100 1011 1100 -3 1011 1100 1101 -2 1010 1101 1110 -1 1001 1110 1111 0 1000 atau 0000 1111 atau 0000 0000 1 0001 0001 0001 2 0010 0010 0010 3 0011 0011 0011 4 0100 0100 0100 5 0101 0101 0101 6 0110 0110 0110 7 0111 0111 0111

Dasar Teknik Komputer 83 Misalnya, jika 퐴 = 0111, maka komplemen -1 dari bilangan tersebut adalah 퐴′ = 1000. Sementara komplemen -2 didefinisikan sebagai kata baru yang diperoleh dengan menambahkan 1 kepada komplemen -1, yaitu 퐴′′ = 퐴′ + 1 dimana 퐴′′ = komplemen -2 dan 퐴′= komplemen -1. Berikut ini adalah beberapa contoh penentuan komplemen -2, misalnya 퐴 = 0111. Komplemen -1 nya adalah 퐴′ = 1000 dan komplemen -2 nya adalah 퐴′′ = 1001. Pada odometer, komplemen -2 adalah merupakan hasil pembacaan berikutnya setelah komplemen -1. Misalnya 퐴 = 0000 1000, maka komplemen -1 nya adalah 퐴 = 1111 0111. Sementara komplemen -2 nya menjadi 퐴′′ = 1111 1000. Jika kita melakukan komplemen -2 dari suatu bilangan secara berturut-turut sebanyak dua kali, maka kita akan memperoleh kembali bilangan semula. Misalnya 퐴′′ = 1001, maka komplemen -2 dari 퐴′′ adalah 0111. Maka dapat dikatakan bahwa komplemen ganda dari 퐴 adalah sama dengan 퐴′′. Karena sifat ini, komplemen -2 dari bilangan biner adalah ekivalen dengan angka negatif dalam bilangan desimal.

84 Dasar Teknik Komputer

Gambar 3.1. (sumber : William Stalling)

Penentuan komplemen -2 dari suatu bilangan biner adalah sama dengan perubahan tanda pada bilangan desimal yang ekivalen. Misalnya, jika 퐴 = 0001 (+1), maka operasi komplemen -2 memeberikan 퐴′′ = 1111 (−1). Atau jika 퐴 = 0010 (+2), maka operasi komplemen -2 menghasilkan 퐴′′ = 1110 (−2). Atau misalnya jika 퐴 = 0011 (+3), maka operasi komplemen -2 akan menghasilkan 퐴′′ = 1101 (−3). Prinsipnya adalah bahwa pengambilan bentuk komplemen -2 dari suatu bilangan biner sama dengan perubahan tanda pada bilangan desimal yang ekivalen. Sebagai contoh, +9 akan direpresentasikn sebagai 00001001, dan −9 akan ditulis sebagai 11110111. Tolong dicatat bahwa, jika komplemen -2 dari magnitude +9 memberikan sebuah magnitudo −9, maka proses reverse tersebut juga akan

Dasar Teknik Komputer 85 benar, yaitu komplemen -2 dari magnitudo −9 akan memberikan sebuah magnitude +9. Notasi 푛-bit dari format komplemen -2 dapat digunakan untuk merepresentasikan semua bilangan- bilangan desimal dalam range dari +(2푛−1 − 1) hingga −(2푛−1). Dan berikut ini adalah hal-hal pokok yang perlu diingat tentang representasi komplemen -2 : 1. Bit awal adalah merupakan bit tanda dengan "0" untuk positif dan "1" untuk negatif. 2. Bilangan desimal positif dinyatakan dalam bentuk magnitudo bertanda. 3. Bilangan desimal negatif diungkapkan dalam representasi komplemen -2.

Contoh 3.25 Bagaimanakah bentuk komplemen -2 dari bilangan biner (word) berikut ini : 퐴 = 0011 0101 1001 1100 Penyelesaian : 퐴′′ = 1100 1010 0110 0100

Contoh 3.26 Bagaimana bentuk biner dari +5 dan −5 dalam representasi komplemen -2 ? Nyatakan jawaban sebagai bilangan 8 bit. Penyelesaian : Berikut ini adalah langkah-langkah untuk pengubahan dari bilangan desimal bertanda menjadi bilangan komplemen -2 dengan notasi 8-bit : a. Tentukan bit tanda MSB 0=positif dan 1=negative. b. Ubah desimal ke biner (7-bit).

86 Dasar Teknik Komputer

c. Ubah ke komplemen -1 (setiap 0 diubah ke 1 dan setiap 1 diubah ke 0). d. Ubah ke komplemen -2 (tambahkan +1 ke komplemen -1 untuk mendapat bil. Komplemen -2). e. Gabung menjadi satu yaitu MSB sebagai tanda bit dan 7- bit sebagai besarannya.

+5 desimal dinyatakan dalam bentuk magnitude bertanda: +5 = 0000 0101. Sementara −5, adalah merupakan representasi dari komplemen -2 : −5 = 1111 1011

Contoh 3.27 Tentukan representasi komplemen -2 dari −24 dalam mikrokomputer 16 bit. Penyelesaian : Mulailah dengan bentuk bilanagn positif : +24 = 0000 0000 0001 1000. Kemudial lakukan operasi komplemen - 2 untuk mendapatkan bentuk negatifnya : −24 = 1111 1111 1110 1001.

Contoh 3.28 Bilangan desimal berapakah yang diungkapkan dalam representasi komplemen -2 berikut : 1111 0001

Penyelesaian : Berikut ini adalah langkah-langkah untuk pengubahan dari bilangan komplemen -2 (8-bit) menjadi bilangan desimal bertanda : a. Tentukan bit tanda/MSB. b. Ubah 7-bit komplemen -2 tersebut ke komplemen 1.

Dasar Teknik Komputer 87 c. Ditambah +1 ke komplemen -1. d. Ubah biner ke desimal.

Mulailah dengan penentuan komplemen -2 dari bilangan tersebut. Dan hasilnya adalah : 0000 1111

Hasil tersebut ekivalen dengan +15. Jadi bilangan semula adalah: 1111 0001 = −15 Contoh 3.29 Bagaimana bentuk biner dari bilangan desimal 0 dalam format representasi komplemen -2 ? Dan nyatakan jawaban tersebut sebagai bilangan 8 bit. Penyelesaian :

Sebuah carry out dari posisi MSB terjadi dalam satu kasus. Seperti halnya dalam semua operasi-operasi komplemen -2, bit ini adalah diabaikan dan hanya bit-bit n orde rendah dari hasil yang digunakan. Di dalam sistem bilangan komplemen -2, nol adalah dianggap positif karena bit tandanya adalah 0.

Contoh 3.30 Bagaimana bentuk biner dari +17 dan −17 dalam representasi komplemen -2 ?. Nyatakan jawaban sebagai bilangan 8 bit.

88 Dasar Teknik Komputer

Penyelesaian :

Contoh 3.31 Bagaimana bentuk biner dari −99 dan +99 dalam representasi komplemen -2 ?. Nyatakan jawaban sebagai bilangan 8 bit. Penyelesaian :

Contoh 3.32 Bagaimanakah bentuk biner dari −127 dan +127 dalam representasi komplemen -2 ?. Dan nyatakan jawaban tersebut sebagai bilangan 8 bit. Penyelesaian :

3.7. Bilangan Floating Point Format floating point adalah digunakan untuk merepresentasikan bilangan-bilangan yang ukurannya sangat besar atau sangat kecil. Bilangan-bilangan tersebut dapat diwujudkan dalam notasi ilmiah yang berupa angka pecahan desimal dikalikan dengan 10 pangkat bilangan tertentu. Hal ini membuat proses operasi aritmatika pada bilangan-bilangan jauh

Dasar Teknik Komputer 89 lebih mudah. Representasi floating point meningkatkan range dari bilangan-bilangan dari yang terkecil hingga yang terbesar yang dapat direpresentasikan dengan menggunakan sebuah bilangan digit-digit yang diberikan. Bilangan floating point adalah secara umum dapat diekspresikan dalam bentuk sebagai berikut : 푁 = ±푚 × 푏푒 (3.7)

Dimana 푚 adalah bagian pecahan (fractional) yang disebut dengan mantissa, 푒 adalah bagian bilangan bulat integer yang disebut eksponen dan 푏 adalah basis atau radix dari sistem bilangan tersebut. Mantissa adalah bagian yang berfungsi menentukan digit dalam angka tersebut. Eksponen berfungsi untuk menentukan nilai berapa besar pangkat pada bagian mantissa tersebut (jarak dari titik posisi desimal). Bagian fractional 푚 adalah sebuah bilangan 푝-digit dalam bentuk (±푑, 푑푑푑푑, … 푑푑) dengan setiap digit 푑 merupakan sebuah integer diantara 0 dan (푏 − 1) inclusive, jika the leading digit dari 푚 adalah non zero, maka bilangan tersebut adalah dikatakan ternormalisasi (normalized). Persamaan diatas dalam basis sistem bilangan biner, desimal dan heksadesimal adalah dapat dituliskan sebagai berikut : 푁 = 푚 × 2푒 (biner) (3.8) 푁 = 푚 × 10푒 (desimal) (3.9) 푁 = 푚 × 16푒 (heksadesimal) (3.10)

Sebagai contoh, bilangan-bilangan desimal 0,0002975 dan 2975 dapat direpresentasikan dalam notasi floating point sebagai 2,975 × 10−4 dan 2,975 × 103 secera berturut-turut. Sebuah bilangan heksa 257, ABF akan direpresentasikan sebagai 2,574ABF × 102. Dalam kasus bilangan-bilangan biner yang

90 Dasar Teknik Komputer

dinormalisasi, digit awal (the leading digit) yang adalah merupakan MSB, adalah selalu "ퟏ" dan oleh karenanya tidak perlu disimpan atau ditaruh secara eksplisit. Oleh karenanya jika bilangan-bilangan tersebut adalah diperlukan untuk dinormalisasi bilangan-bilangan biner 11011,011 dan ,00011011 akan ditulis dalam notasi floating point sebagai 0,11011011 × 25 dan 0,11011 × 2−3 secara berturut-turut. Juga, sementara mengekspresikan sebuah bilangan biner campuran sebagai sebuah bilangan floating point notasi titik radix (radix point) is so shifted as to have the MSB dengan segera pada sisi kanan dari titik radix sebagai sebuah "ퟏ". Keduanya, mantissa dan eksponen dapat mempunyai sebuah nilai positif atau negatif.

Sebagai contoh, bilangan biner campuran 110,10112 akan direpresentasikan dalam notasi floating point sebagai 0,1101011 × 103 = 0.1101011 푒 + 0011. Juga 0,1101011 adalah mantissa dan 푒 + 0011 implies bahwa eksponen adalah

+3. Sebagai contoh lain 0,0001112 akan ditulis sebagai 0,111 푒 − 0,011 dengan 0,111 merupakan mantissa dan 푒 − 0011 implying sebuah eksponen dari −3. Juga

(−0,00000101)2 −0,000001012 dapat dituliskan sebagai −0,101 × 10−5 = −0.101 푒 − 0101, dimana −.101 adalah mantissa dan 푒 − 0101 eksponen −5. Jika kita ingin merepresentasikan mantissa dengan menggunakan 8 bits, maka 0.1101011 dan 0.111 akan direpresentasikan sebagai 0. 11010110 dan 0. 11100000.

Dasar Teknik Komputer 91 Soal-Soal

1. Rubahlah bilangan biner 110112 menjadi sebuah bilangan desimal.

2. Rubahlah bilangan 0,10112 menjadi sebuah pecahan desimal.

3. Rubahlah bilangan 101,01012 menjadi sebuah bilangan desimal.

4. Rubahlah bilangan 0,4062510 menjadi sebuah bilangan biner.

5. Rubahlah bilangan 4710 menjadi sebuah bilangan biner. 6. Rubahlah bilangan 49310 menjadi sebuah bilangan oktal. 7. Rubahlah bilangan 371410 menjadi sebuah bilangan oktal. 8. Rubahlah bilangan BD16 menjadi sebuah bilangan desimal. 9. Rubahlah bilangan 1A4E16 menjadi sebuah bilangan desimal.

10. Rubahlah bilangan 110011112 menjadi sebuah bilangan heksadesimal.

11. Rubahlah bilangan 1100111102 menjadi sebuah bilangan heksadesimal.

12. Rubahlah bilangan 1100101002 menjadi sebuah bilangan oktal.

13. Rubahlah bilangan 1010101011002 menjadi sebuah bilangan oktal.

92 Dasar Teknik Komputer

Bab 4. ARITMATIKA KOMPUTER

4.1. Pendahuluan Setelah mempelajari konsep dasar sistem bilangan dan konversinya, berikutnya kita akan mempelajari aturan-aturan untuk manipulasi data pada sistem komputer. Ada dua tipe operasi yang dapat dilakukan pada data biner, yaitu operasi aritmatika data dan operasi logika. Aturan-aturan untuk operasi aritmatika dasar bilangan biner, termasuk diantaranya adalah penjumlahan, pengurangan, perkalian dan pembagian, akan dijelaskan pada bab ini. Sementara yang berkaitan dengan operasi-operasi logika sepeerti misalnya AND, OR dan NOT, akan dijelaskan pada bab tersendiri berikutnya yaitu mengenai aljabar Boolean. Secara teori, aritmatika biner adalah sangat simple dan sederhana karena hanya ada dua digit yang digunakan, yaitu 1 dan 0. Namun bagaimanapun, untuk operasi pengurangan dapat menyebabkan problem jika dilakukan secara konvensional, dan oleh karenanya, biasanya dilakukan dengan menggunakan operasi aritmatika dengan komplemen -2.

4.2. Aturan Dasar Penjumlahan Biner Pada prinsipnya, aturan untuk penjumlahan biner adalah tidak berbeda dengan penjumlahan desimal seperti yang kita gunakan sehari-hari. Satu-satunya problem yang potensial adalah mengingat bahwa 1+1 memberikan hasil 0 dan carry 1, yang berarti bahwa 1 + 1 = 10 (dalam sistem desimal, 1+1=2), dan 1+1+1 memberikan hasil 1 dan carry 1, yang berarti bahwa 1 + 1 + 1 = 11 (dalam desimal, (1+1+1=3). Untuk menambahkan dua bilangan-bilangan biner 푿 dan 풀, kita menambahkan

Dasar Teknik Komputer 93 bersama LSB dengan sebuah carry awal 풄풊풏 “0”, sehingga menghasilkan hasil jumlah (sum) 푺 dan bawaan carry 풄풐풖풕 sesuai dengan tabel tersebut. Kemudian kita terus melanjutkan proses perhitungan bit-bit biner tersebut dari kanan ke kiri, menambahkan carry out (풄풐풖풕) dari setiap kolom kedalam kolom jumlah (sum) berikutnya. Pada kasus penjumlahan, penambahan “0” pada suatu digit ternetu menghasilkan digit yang sama seperti penjumlahan, dan, jika kita menambahakan “1” pada suatu digit tertentu atau bilangan di dalam sistem bilangan desimal, hasilnya adalah bilangan atau digit yang lebih tinggi berikutnya. Sebagai contoh, 6 +1 dalam sistem desimal sama dengan “7” karena “7” adalah bilangan berikutnya setelah bilangan “6” didalam sistem bilangan tersebut. Juga misalnya, 7+1 didalam sistem bilangan oktal akan menghasilkan “10”, karena didalam sistem bilangan oktal, bilangan setelah 7 adalah “10”. Dan dengan cara yang sama, 9+1 didalam sistem bilangan heksadesimal akan menghasilkan A. Dengan latar belakang dan penjelasan diatas, maka kita dapat menuliskan aturan-aturan dasar untuk penjumlahan biner sebagai berikut : 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 1 + 1 + 1 = 1 dimana untuk penjumlahan 1 + 1 = 0, (dengan sebuah carry “1” pada bit yang lebih penting berikutnya), dan 1 + 1 + 1 = 1, (dengan sebuah carry “1” pada bit yang lebih penting berikutnya).

94 Dasar Teknik Komputer

Tabel dibawah ini memberikan sebuah ringkasan keluaran jumlah (sum) dan bawaan (carry) untuk semua 3-bit kombinasi yang mungkin. Kita mengambil 3-bit kombinasi karena dalam semua situasi yang praktis melibatkan penambahan dari 2 bilangan bit yang lebih besar, kita perlu menambahkan 3 bit pada satu waktu. Dua dari ketiga bit adalah bit-bit yang adalah bagian dari dua bilangan-bilangan biner yang ditambahkan, dan bit ketiga adalah Carry-in dari kolom LSB berikutnya.

Tabel 4.1. Tabel penjumlahan biner 3 bit

푿 풀 푪풊풏 푺풖풎 푪풐풖풕 푿 풀 푪풊풏 푺풖풎 푪풐풖풕 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1

Contoh 4.1 Hitunglah 0011 + 0100 dengan menggunakan operasi aritmatika biner. Penyelesaian : Seperti telah dijelaskan sebelumnya, pada dasarnya metode penjumlahan bilangan biner ini serupa dengan metode penjumlahan bilangan desimal yang kita pergunakan sehari-hari. Hanya saja disini bawaan atau “carry” juga ikut diperhitungkan. Dengan mengacu pada tabel penjumlahan biner diatas, maka akan diperoleh hasil sebagai berikut : 푪 0 0 0 0 푿 0 0 1 1 풀 +0 1 0 0 푺 0 1 1 1

Dasar Teknik Komputer 95 Contoh 4.2 Hitunglah 1101 + 1011 dengan menggunakan operasi aritmatika biner. Penyelesaian : 1 1 1 1 0 1 1 0 1 +1 0 1 1 1 1 0 0 0 Contoh 4.3 Hitunglah 10111110 + 10001101 dengan menggunakan operasi aritmatika biner. Penyelesaian : 푪 1 0 1 1 1 1 0 0 0 푿 1 0 1 1 1 1 1 0 풀 +1 0 0 0 1 1 0 1 푺 1 0 1 0 0 1 0 1 1 Contoh 4.4 Hitunglah 10101101 + 00101100 dengan menggunakan operasi aritmatika biner. Penyelesaian : 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 1 + 0 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 Contoh 4.5 Hitunglah 01111111 + 0011111 dengan menggunakan operasi aritmatika biner. Penyelesaian : 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 + 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0

96 Dasar Teknik Komputer

Contoh 4.6 Hitunglah 10101010 + 01010101 dengan menggunakan operasi aritmatika biner. Penyelesaian : 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 + 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1

Contoh 4.7 Hitunglah 01100101100 + 01101101001 dengan menggunakan operasi aritmatika biner. Penyelesaian : 01100101100 + 01101101001 11010010101

4.3. Aturan Dasar Pengurangan Biner Pengurangan biner pada dasarnya adalah dilakukan dengan cara yang sama, dengan menggunakan pinjaman borrow 풃풊풏 dan 풃풐풖풕 sebagai pengganti dari bawaan carry diantara langkah- langkah, dan menghasilkan sebuah perbedaan bit 풅. Seperti halnya dalam pengurangan desimal, nilai-nilai minuend biner di dalam kolom-kolom adalah dimodifikasi ketika borrow terjadi. Adapaun aturan-aturan dasar dari pengurangan biner adalah: 0 – 0 = 0 1 – 0 = 1 1 – 1 = 0 0 – 1 = 1

Dasar Teknik Komputer 97 dimana untuk 0 – 1 = 1, (dengan sebuah borrow “1” dari bit yang lebih penting berikutnya). Aturan-aturan yang disebutkan diatas dapat juga dijelaskan dengan recalling rules untuk pengurangan bilangan-bilangan desimal. Mengurangkan “0” dari suatu digit atau bilangan meninggalkan digit atau bilangan unchanged. Ini menjelaskan dua aturan pertama. Mengurangkan “1” dari suatu digit atau bilangan dalam desimal menghasilkan digit atau bilangan sebelumnya sebagai jawaban. Pada umumnya, operasi pengurangan dari bilangan-bilangan biner bit lebih besar juga meliputi (involves) tiga bits, termasuk dua bit yang terlibat dalam pengurangan tersebut, yang disebut minuend (bit yang lebih atas) dan subtrahend (bit yang lebih rendah), dan borrow-in. Operasi pengurangan menghasilkan perbedaan output dan borrow-out, jika ada. Tabel dibawah memberikan ringkasan operasi pengurangan biner. Entry-entry pada tabel dibawah dapat dijelaskan dengan recalling aturan-aturan dasar dari pengurangan biner seperti yang disebutkan diatas, dan bahwa operasi pengurangan tersebut meliputi 3 bits, yaitu, minuend (푋), subtrahend (푌) dan borrow in (퐵푖푛), menghasilkan sebuah perbedaan output yang sama dengan (X − 푌 − 퐵푖푛) . Dapat disebutkan disini bahwa, pada kasus pengurangan dari bilangan- bilangan biner bit lebih besar, kolom bit yang paling tidak signifikan (the least significant bit column) selalu meliputi (involves) dua bit untuk menghasilkan sebuah bit perbedaan output dan bit borrow out. Bit borrow-out yang dihasilkan disini menjadi bit borrow-in untuk kolom yang lebih signifikan berrikutnya (more significant bit). Pengurangan dari bilangan- bilangan biner bit yang lebih besar diberikan pad contoh-contoh berikut.

98 Dasar Teknik Komputer

Tabel 4.2. Tabel Pengurangan biner 3 bit

Input Output Minuend Subtrahend Borrow-in Difference Borrow-out (푿) (풀) (풃풊풏) (풅) (풃풐) 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1

Contoh 4.8 Hitunglah 11100101 − 00101110 dengan menggunakan operasi aritmatika biner. Penyelesaian : 푩 0 0 1 1 1 1 1 0 0 푿 1 1 1 0 0 1 0 1 풀 − 0 0 1 0 1 1 1 0 푫 1 0 1 1 0 1 1 1 Contoh 4.9 Hitunglah 11010010 – 01101101 dengan menggunakan operasi aritmatika biner. Penyelesaian : 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 − 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1

Dasar Teknik Komputer 99 Contoh 4.10 Hitunglah 10101010 – 01010101 dengan menggunakan operasi aritmatika biner. Penyelesaian : 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 − 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Contoh 4.11 Hitunglah 11011101 – 01001100 dengan menggunakan operasi aritmatika biner. Penyelesaian : 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 − 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1

Sebuah penggunaan yang umum dari operasi pengurangan pada komputer adalah dengan membandingkan dua bilangan. Sebagai contoh, jika operasi 푋 − 푌 menghasilkan sebuah borrow out dari MSB, maka 푋 adalah lebih kecil dari 푌. Diluar itu (otherwise) , 푋 adalah lebih besar atau sama dengan 푌.

4.4. Aturan Dasar Perkalian Biner Aturan dasar dari perkalian biner adalah diatur (governed) dengan cara (melalui) fungsi-fungsi sebuah gerbang gate AND ketika kedua bit-bit yang akan dikalikan adalah diumpankan sebagai input-input terhadap gerbang. Dapat dikatakan bahwa hasil dari perkalian dua bit adalah sama dengan output dari gerbang AND dengan kedua bit-bit tersebut diberikan sebagai

100 Dasar Teknik Komputer

input dari gerbang tersebut. Aturan-aturan dasar perkalian biner adalah sebagai berikut : 0 × 0 = 0 0 × 1 = 0 1 × 0 = 0 1 × 1 = 1

Perkalian panjang didalam biner adalah dilakukan dengan cara yang sama seperti dalam aritmatika desimal. Bagaimanapun, dalam aritmatika biner digit-digit hanya dapat dikalikan dengan “1” atau “0”. Mengalikan dengan sebuah pangkat dua, misal 2 2 = 1002 cukup dihasilkan didalam bilangan biner dengan digeser n digits ke kiri dan n nol ditambahkan sebagai LSB. Konsekwensinya perkalian yang panjang adalah cukup dilakukan dengan pergeseran (shifting), yaitu mengalikan dengan pangkat dua dan penambahan.

Contoh 4.12 Hitunglah 1011 × 1101 dengan menggunakan operasi aritmatika biner. Penyelesaian : 1011 × 1101 1011 0000 1011 1011 10001111

Dasar Teknik Komputer 101 Contoh 4.13

Hitunglah 2310 × 610 dengan menggunakan operasi aritmatika biner. Penyelesaian : 10111 × 110 00000 10111 10111 10001010

Contoh 4.14

Hitunglah 1310 × 1110 dengan menggunakan operasi aritmatika biner. Penyelesaian : 1101 × 1011 1101 1101 0000 1101 10001111

4.5. Pembagian Biner Catatan bahwa pembagian dengan pangkat dua cukup dihasilkan dengan menggeser ke kanan. Karena rangkaian- rangkaian logika exist that perform operasi-operasi pergeseran ini, perkalian-perkalian dan pembagian-pembagian dengan pangkat dua adalah sangat mudah dan cepat dilakukan dalam rangkaian digital.

102 Dasar Teknik Komputer

Contoh 4.15 Hitunglah 10,625 + 2,5 dengan menggunakan operasi aritmatika biner Penyelesaian : Untuk menyederhanakan perhitungan, akan sangat membantu to turn the divisor menjadi sebuah integer dengan (dalam kasus ini) mengalikan keduanya divisor dan dividend dengan 2 (yaitu dengan cara menggeser ke kiri). Hal ini merubah perhitungan menjadi 21,25 : 5 yang mana binernya adalah 10101,01 : 101.

100,01 101 │ 10101,01 101 000 01 01 1 01 0 00

4.6. Operasi Aritmatika Komplemen -2 Komputer-komputer yang terdahulu menggunakan bilangan biner bertanda baik untuk bilangan positif maupun bilangan negatif. Representasi ini menghasilkan rangkaian aritmetika yang rumit. Kemudian para ahli rekayasa (insinyur) menemukan bahwa representasi komplemen -2 sangat berhasil dalam menyederhanakan perangkat keras aritmetika tersebut. Oleh sebab itu, penjumlah pengurang komplemen -2 kini dipergunakan secara luas sebagai rangkaian aritmetik biner.

Dasar Teknik Komputer 103 Contoh 4.16 Lakukanlah operasi penjumlahan dan pengurang dari bilangan- bilangan biner berikut ini :

퐴 = 0001 10002 = (24) 퐵 = 0001 00002 = (16)

Penyelesaian : Untuk penjumlahan 퐴 + 퐵 dapat dilakukan secara langsung seperti penjumlahan biner sebelumnya yang sudah kita pelajari.

0001 1000 + 0001 0000 0010 1000

Sementara untuk pengurangan 퐴 − 퐵, bisa dilakukan dengan operasi komplemen -2. Artinya bahwa 퐴 − 퐵 = 퐴 + 퐵′′, dimana 퐵′′ adalah merupakan komplemen -2 dari B :

0001 1000 + 1111 0000 0000 1000

4.6.1. Penjumlahan Dengan Menggunakan Komplemen -2 Sebuah tabel bilangan-bilangan desimal dan ekivalen- ekivalennya dalam sistem-sistem bilangan yang berbeda ditunjukkan pada tabel 3.5 pada bab III sebelumnya. Pada tabel tersebut diperlihatkan mengapa komplemen -2 lebih disukai atau dipilih dalam operasi-operasi aritmatika biner. Apabila kita mulai dari 10002 (−810) dan menghiutng ke atas (count up), kita akan melihat bahwa setiap bilangan komplemen -2 berturut-

104 Dasar Teknik Komputer

turut (successive) -2 hingga 01112 (+710) dapat diperoleh dengan menambahkan 1 pada (bilangan) sebelumnya dengan mengabaikan suatu carry diatas posisi bit keempat. Yang sama tidak dapat dikatakan atas signed-magnitude dan bilangan- bilangan komplemen -1. Karena penjumlahan biasa hanyalah sebuah perluasan dari perhitungan, bilangan-bilangan komplemen -2 oleh karenanya dapat ditambahkan dengan penjumlahan biner biasa, dengan mengabaikan suatu carry diatas MSB. Hasilnya akan selalu merupakan penjumlahan yang benar sepanjang range dari sistem bilangan tersebut tidak dilewati. Beberapa contoh penjumlahan desimal dan penjumlahan komplemen -2 bilangan 4 bit mengkonfirmasi hal ini. Komplemen -2 adalah kode yang paling umum digunakan untuk pemrosesan bilangan-bilangan biner positif dan negatif. Dia membentuk dasar-dasar dari rangkaian-rangkaian aritmatik di dalam komputer-komputer modern. Ketika bilangan- bilangan desimal yang akan ditambahkan adalah dinyatakan dalam bentuk komplemen -2, penjumlahan-penjumlahan bilangan ini, mengikuti hukum dasar penjumlahan biner, memberikan hasil-hasil langsung. Carry akhir yang diperoleh, jika ada, sementara penjumlahan MSBs harus diabaikan (disregarded). Untuk mengilustrasikan hal ini, kita akan mempertimbangkan kasus-kasus berikut ini :

Contoh 4.17 Jumlahkanlah bilangan desimal +37 dan +18 dengan menggunakan notasi biner. Penyelesaian : Komplemen -2 dari +37 dalam representasi 8-bit adalah 00100101. Sementara komplemen -2 dari +18 dalam

Dasar Teknik Komputer 105 representasi 8-bit adalah 00010010. Penjumlahan kedua bilangan-bilangan tersebut menghasilkan : 00100101 +00010010 00110111

Ekivalen desimal dari 001101112 = +55.

Contoh 4.18 Jumlahkanlah bilangan desimal +37 dan −18 dengan menggunakan notasi biner. Penyelesaian : Komplemen -2 dari +37 dalam representasi 8-bit adalah 00100101. Sementara komplemen -2 dari −18 dalam representasi 8-bit adalah 11101110. Penjumlahan kedua bilangan-bilangan tersebut menghasilkan : 00100101 +11101110 00010011

Carry akhir telah dihilangkan dan ekivalen desimal dari

000100112 = +19.

Contoh 4.19 Jumlahkanlah bilangan desimal +18 dan −37 dengan menggunakan notasi biner. Penyelesaian : Komplemen -2 dari −37 dalam representasi 8-bit adalah 11011011. Sementara komplemen -2 dari +18 dalam representasi 8-bit adalah 00010010. Penjumlahan kedua bilangan-bilangan tersebut menghasilkan :

106 Dasar Teknik Komputer

11011011 +00010010 11101101

Ekivalen decimal dari 111011012, yang adalah merupakan bentuk komplemen -2, adalah −19.

Contoh 4.20 Jumlahkanlah bilangan desimal −18 dan −37 dengan menggunakan notasi biner. Penyelesaian : Komplemen -2 dari −18 dan −37 masing-masing adalah 11101110 dan 11011011. Sementara itu, penjumlahan kedua bilangan tersebut menghasilkan :

11011011 +11101110 11001001 Carry akhir pada posisi bit ke enam adalah diabaikan

(disregarded) dan ekivalen desimal dari 110010012 = −55.

4.6.2. Pengurangan Dengan Menggunakan Komplemen -2 Penguranan biner dapat dilakukan hanya dengan menjumlahkan komplemen -2 dari suatu bilangan. Dan kesalahan yang sering terjadi pada umumnya adalah dalam memastikan bit tanda, dimana hal itu adalah perlu untuk mengindikasikan jika sebuah bilangan adalah positif atau negatif, adalah dihasilkan dan digunakan dengan tepat. Kebingungan mungkin terjadi karena didalam proses penjumlahan digit-digit dapat dibawa (carried) diatas bit tanda (the sign bit). Mereka seharusnya diabaikan. Operasi pengurangan adalah serupa dengan operasi penjumlahan. Penambahan komplemen -2 dari subtrahend pada

Dasar Teknik Komputer 107 minuend dan dengan mengabaikan (disregarding) carry, jika ada, mencapai pengurangan. Proses tersebut diilustrasikan dengan mempertimbangkan kasus-kasus yang berbeda berikut ini. Berikut ini adalah langkah-langkah yang harus diikuti untuk melakukan pengurangan pada aritmetika komplemen -2 adalah dapat diringkas sebagai berikut : 1. Representasikan minuend dan subtrahend dalam bentuk komplemen -2. 2. Tentukan komplemen -2 dari subtrahend. 3. Jumlahkan komplemen -2 dari subtrahend terhadap minuend. 4. Abaikan carry akhir, jika ada. 5. Hasilnya adalah dalam bentuk komplemen -2. 6. Notasi komplemen -2 dapat digunakan untuk melakukan (operasi) pengurangan ketika hasil yang diharapkan dari pengurangan tersebut terletak diantara range dari −2푛−1 hingga +(2푛−1 − 1), 푛 being jumlah dari bit-bit yang digunakan untuk merepresentasikan bilangan- Bilangan tersebut.

Contoh 4.21 Kurangkanlah 5 dari 8 dengan menggunakan notasi biner. Penyelesaian : 01000 = + 8 −00101 = −5 +3

Bit ke lima adalah bit tanda (0 untuk kode-kode biner +8 dan +5, tetapi 1 (yang mengindikasikan sebuah bilangan yang dikomplemenkan) untuk −5). Karena itu adalah 0 didalam

108 Dasar Teknik Komputer

jawaban, hal ini menunjukkan bahwa hasilnya adalah positif, dengan sebuah nilai biner 0011 = 310. Dan bit ke enam yang merupakan overflow didalam hasil adalah dibuang (tidak digunakan). 01000 +11011 100011 Contoh 4.22 Kurangkanlah 8 dari 5 dengan menggunakan nontasi biner. Penyelesaian :

00101 = 5 −01000 = −8 −3

Bit yang kelima adalah bit tanda yang mana karena 1 adalah mengindikasikan hasiladalah negatiif. Untuk mendapatkan magnitudo dari hasil bilangan yang negatif kita harus mengkomplemen -2 hasilnya. Hal ini memberikan 0011 = 310, sehingga jawabannya adalah −3. 00101 +11000 11101

Contoh 4.23 Kurangkanlah −5 dari −8 dengan menggunakan notasi biner. Penyelesaian : 01000 = −8 −00101 = −5 −13

Dasar Teknik Komputer 109 Bit tanda ke lima mengindikasikan bahwa hasilnya adalah negatif. Komplemen -2 dari 10011 adalah 01101 = 1310 memebrikan hasil −13 (Catatan : bit overflow adalah dibuang) : 11000 +11011 110011

Contoh 4.24 Kurangkanlah bilangan desimal +14 dari +24 dengan menggunakan notasi biner. Penyelesaian : Komplemen -2 dari bilangan +24 = 00011000. Sementara kompleman -2 dari bilangan +14 = 00001110. Selanjutnya, komplemen -2 dari subtrahend (+14) adalah 11110010. Oleh karenanya, maka +24 − (+14) adalah : 00011000 +11110010 00001010 Dengan carry akhir diabaikan, maka ekivalen desimal dari

000010102 = +10.

Contoh 4.25 Kurangkanlah bilangan desimal +24 dari +14 dengan menggunakan notasi biner. Penyelesaian : Komplemen -2 dari subtrahend (+24) adalah 11101000, Maka +14 − (+24) adalah : 00001110 +11101000 11110110

110 Dasar Teknik Komputer

Ekivalen desimal dari 111101102 = −10, adalah merupakan bentuk komplemen -2 tentunya.

Contoh 4.26 Kurangkanlah bilangan desimal −14 dari +24 dengan menggunakan notasi biner. Penyelesaian : Representasi komplemen -2 dari +24 = 00011000 = minuend. Sementara representasi komplemen -2 dari −14 = 11110010 = subtrahend. Selanjutnya, komplemen -2 dari suntrahend (yaitu : −14) = 00001110. Maka, +24 − (−14) adalah :

00011000 +00001110 00100110

Ekivalen desimal dari 001001102 = +38.

Contoh 4.27 Kurangkanlah −24 dari +14 dengan menggunakan notasi biner. Penyelesaian : Representasi komplemen -2 dari +14 = 00001110 = minuend. Sementara representasi komplemen -2 dari −24 = 11101000 = subtrahend. Selanjutnya, komplemen -2 dari subtrahend (−24) = 00011000. Maka +14 − (−24) adalah : 00001110 +00011000 00100110

Ekivalen desimal dari 001001102 = +38.

Dasar Teknik Komputer 111 Contoh 4.28 Kurangkanlah −14 dari −24 dengan menggunakan notasi biner. Penyelesaian : Representasi komplemen -2 dari −24 = 11101000 = minuend. Sementara reepresentasi komplemen -2 dari −14 =

111100102 = subtrahend. Selanjutnya komplemen -2 dari subtrahend = 00001110. Maka −24 − (−14) adalah : 11101000 +00001110 11110110

Ekivalen decimal dari 111101102 = −10, yang adalah merupakan bentuk komplemen -2.

Contoh 4.29 Kurangkanlah −24 dari −14 dengan menggunakan notasi biner. Penyelesaian : Representasi komplemen -2 dari −14 = 11110010 = minuend. Sementara representasi komplemen -2 dari −24 = 11101000 = subtrahend. Selanjutnya komplemen -2 dari subtrahend = 00011000. Maka −14 − (−24) adalah sebagai berikut : 11110010 +00011000 00001010

Dengan carry akhir diabaikan, ekivalen desimal dari

000010102, yang merupakan bentuk komplemen -2 adalah +10.

112 Dasar Teknik Komputer

Seperti telah disebutkan bahwa, di dalam aritmatika komplemen -2, jawaban tersebut juga adalah dalam notasi komplemen -2, dengan hanya MSB yang menunjukkan tanda sementara bit-bit sisanya menunjukkan magnitude. Di dalam notasi komplemen -2, magnitude-magnitudo positif adalah direpresentasikan dengan cara yang sama seperti counterpart- counterpart biner langsung (straight) mereka. Sebuah "ퟎ" pada posisi MSB menunjukkan sebuah tanda positif, sementara sebuah "ퟏ" pada posisi MSB mengindikasikan sebuah tanda negatif.

4.7. Aritmatika Bilangan Floating Point Sebelum melakukan operasi-operasi aritmatika pada bilangan-bilangan floating point, adalah penting untuk melakukan pemeriksaan terlebih dahulu. Seperti misalnya mencari tanda dari kedua mantissa tersebut, memeriksa kemungkinan misalignment of exponents dan lain-lian. Sebagai contoh, jika eksponen dari kedua bilangan adalah tidak sama, operasi-operasi penjumlahan dan pengurangan mengharuskan keduanya mempunyai eksponen yang sama. Dalam kasus tersebut, mantissa dari bilangan yang lebih kecil digeser ke kanan, dan eksponen adalah ditingkatkan untuk setiap pergeseran sehingga kedua eksponen tersebut adalah sama. Setelah titik biner adalah aligned dan eksponen keduanya adalah sama, maka operasi penjumlahan dan pengurangan dapat segera dilakukan. Sementara melakukan operasi pengurangan, tentu saja, pemeriksaan magnitude adalah diperlukan untuk menentukan yang lebih kecil dari kedua bilangan tersebut.

Dasar Teknik Komputer 113 4.7.1. Penjumlahan dan Pengurangan Bilangan Floating Point

Jika 푁1 dan 푁2 adalah bilangan-bilangan floating point, 푒 푒 dimana 푁1 = 푚1 × 2 dan 푁2 = 푚2 × 2 , maka penjumlahan bilangan floating point 푁1 dan 푁2 adalah: 푒 푁1 + 푁2 = (푚1 + 푚2) × 2

dan pengurangan bilangan floating point 푁2 dari 푁1 adalah : 푒 푁1 − 푁2 = (푚1 − 푚2) × 2

Operasi pengurangan tersebut menganggap bahwa 푁1 > 푁2. Post normalisasi adalah boleh jadi diperlukan setelah operasi penjumlahan dan pengurangan tersebut. Langkah-langkah yang perlu dilakukan untuk melakukan operasi penjumlahan dan pengurangan dari dua bilangan floating point adalah sebagai berikut : 1. Bandingkan kedua bilangan tersebut, kemudian rubah ke bentuk yang sesuai pada bilangan dengan nilai eksponensial yang lebih kecil. 2. Lakukan operasi penjumlahan/pengurangan. 3. Lakukan normalisasi dengan menggeser nilai mantissa dan mengatur nilai eksponensialnya.

Contoh 4.30 Jumlahkan dua bilangan floating point 1,1100 × 24 dan 1,1000 × 22. Penyelesaian : Sesuaikan kedua bilangan floating point tersebut sebagai berikut. Bilangan 1,1000 × 22 dirubah menjadi 0,0110 × 24. Kemudian lakukan operasi penjumlahan (1,1100 + 0,01100) × 24

114 Dasar Teknik Komputer

sehingga menghasilkan bilangan 10,0010 × 24. Selanjutnya lakukan normalisasi sehinnga hasilnya menjadi 0,1000 × 26 (dianggap bit yang diijinkan setelah koma adalah 4).

Contoh 4.31

Jumlahkan bilangan 3910 dan dan 1910 dengan menggunakan bilangan-bilangan floating point. Dan verifikasi jawaban tersebut dengan melakukan penjumlahan desimal yang ekivalen. Penyelesaian : 6 3910 = 100111 = 0,100111 × 2 6 1910 = 10011 = 0,010011 × 2 6 6 Maka 3910 + 1910 = 0,100111 × 2 + 0,010011 × 2 (0,10011 + 0, ,10011) × 26 = 0,111010 × 26

= 111010 = 55810

Contoh 4.32

Kurangkan bilangan 178 dari 218 dengan menggunakan bilangan-bilangan floating point dan verifikasi jawaban tersebut. Penyelesaian : 6 218 = 010001 = 0,010001 × 2 6 178 = 001111 = 0,001111 × 2 6 Maka 218 − 178 = (0,010001 − 0,00111) × 2 6 = 0,000010 × 2 = 000010 = 028

4.7.2. Perkalian dan Pembagian Bilangan Floating Point Dalam kasus perkalian dari dua bilangan-bilangan floating point, mantissa dari kedua bilangan tersebut adalah dikalikan sementara eksponennya adalah dijumlahkan. Jika 푁1 dan 푁2 adalah bilangan-bilangan floating point, dimana 푁1 = 푒1 푒2 푚1 × 2 dan 푁2 = 푚2 × 2 maka :

Dasar Teknik Komputer 115 푒1+푒2 푁1 × 푁2 = (푚1 × 푚2) × 2

Berikut ini adalah langkah-langkah yang diperlukan untuk melakukan operasi perkalian dari dua bilangan floating point : 1. Hitung hasil exponential dengan menjumlahkan nilai exponent dari kedua bilangan. 2. Kalikan kedua bilangan mantissa. 3. Normalisasi hasil akhir.

Contoh 4.33

Kalikan bilangan-bilangan 3710 dan 1010 dengan menggunakan bilangan-bilangan floating point. Dan verifikasi dengan menunjukkan ekivalen perkalian desimalnya. Penyelesaian :

6 Multiplicand = 3710 = 100101 = 0,100101 × 2 6 Multiplier = 1010 = 1010 = 0,1010 × 2 10 Maka 3710 × 1010 = (0,100101 × 0,1010) × 2 = 0,0101110010 × 210

= 101110010 = 37010

Dalam kasus operasi pembagian, mantissa of the quotient is given by the division of the two mantissa (i.e dividend mantissa divided by divisor mantissa) dan eksponen dari hasil bagi (quotient) is given by subtraction of the two exponents (i.e. dividend exponent minus divisor exponent). 푁 푚 1 = ( 1) × 2푒1−푒2 푁2 푚2

116 Dasar Teknik Komputer

Dan berikut ini adalah langkah-langkah yang diperlukan untuk melakukan operasi pembagian dari dua bilangan floating point : 1. Hitung hasil eksponensial dengan mengurangkan nilai exponent dari kedua bilangan. 2. Bagi kedua bilangan mantissa. 3. Normalisasi hasil akhir.

Sekali lagi, post normalisasi adalah boleh jadi diperlukan setelah operasi perkalian dan pembagian seperti halanya dalam kasus penjumlahan dan pengurangan.

Dasar Teknik Komputer 117 Soal-Soal 1. Hitunglah 110 × 101 dengan menggunakan aritmatika biner. 2. Hitunglah 110,10 × 010,11 dengan menggunakan aritmatika biner. 3. Karena 퐴 − 퐵 = 퐴 + (−퐵), pengurangan dari bilangan- bilangan bertanda dapat diselesaikan dengan menjumlahkan komplemennya. Kurangilah masing-masing pasangan bilangan- biner 5 bit berikut dengan menjumlahkan komplemen dari subtrahend pada minuend: 01001 − 11010 ; 11010 − 11001 ; 10110 − 01101 ; 11011 − 00111. Tunjukkan apabila terjadi sebuah overflow. Anggap bahwa bilangan-bilangan negatif adalah di dalam komplemen -1. Kemudian ulangi dengan menggunakan komplemen -2. 4. 퐴 = 101010 dan 퐵 = 011101 adalah bilangan-bilangan komplemen -1. Lakukan operasi Operasi berikut dan tunjukkan apakah terjadi overflow : a. 퐴 + 퐵 b. 퐴 − 퐵 c. Ulangi pertanyaan diatas dengan menganggap 퐴 dan 퐵 adalah bilangan-bilangan Komplemen -2. 5. Lakukan operasi-operasi penjumlahan, pengurangan dan perkalian dari bilangan-bilangan bner berikut ini : a. 1111 dan 1010 b. 110110 dan 11101 c. 100100 dan 10110 6. Lakukan operasi pengurangan untuk bilangan-bilangan biner berikut. Tambahkan satu pada setiap kolom apabila diperlukan sebuah pinjaman : a. 11110100 − 1000111 b. 1110110 − 111191 c. 10110010 − 111101

118 Dasar Teknik Komputer

7. Jumlahkan bilangan-bilangan berikut didalam biner dengan menggunakan komplemen -2 untuk merepresentasikan bilangan-bilangan negatif. Gunakan sebuah panjang word 6 bit termasuk sign bit) dan tunjukkan apabila terjadi overflow : a. 21 + 11 b. (−12) + 13 c. (−14) + (−32) d. (−11) + (−21) e. (−25) + 18

Dasar Teknik Komputer 119 Bab 5. ALJABAR BOOLEAN

5.1. Pendahuluan Aljabar Boolean adalah merupakan salah satu cabang ilmu matematika yang banyak digunakan untuk mempelajari rangkaian-rangkain logika dan sistem-sistem digital. Aljabar Boolean dikenal juga sebagai aljabar switching dan banyak diterapkan untuk rangkaian-rangkaian switching. Sesuai dengan namanya, aljabar Boolean pertama kali dikembangkan oleh seorang matematikawan Inggris bernama George Boole (1815- 1864) pada tahun 1854. Kemudian pada tahun 1938, seorang insinyur yang juga matematikawan asal Amerika Claude E. Shannon (1916-2001), menerapkan penggunaan dari aljabar Boolean tersebut untuk merancang sebuah rangkaian switching, yaitu rangkaian yang menerima masukan 0 dan 1 dan menghasilkan keluaran yang juga 0 dan 1. Aljabar Boolean telah menjadi dasar teknologi komputer digital karena rangkaian elektronik di dalam komputer juga bekerja dengan mode operasi bit, berupa 0 dan 1. Dan saat ini aljabar Boolean telah digunakan secara luas dalam perancangan rangkaian-rangkaian pensaklaran (switching), rangkaian digital dan rangkaian IC (integrated circuit) komputer. Semua perangkat-perangkat switching pada dasarnya adalah perangkat-perangkat dengan kedaan normal switch yang terbuka atau keadaan switch yang tertutup dan transistor-transistor dengan keluaran tegangan yang tinggi atau rendah. Berikut ini adalah beberapa contoh lain keadaan fisik yang merepresentasikna bit-bit didalam sistem komputer dan teknologi memori.

120 Dasar Teknik Komputer

Tabel 5.1. Beberapa keadaan fisik yang merepresentasikan bit-bit

Keadaan Representasi Bit Teknologi 0 1 Fluida pada tekanan Fluida pada tekanan Logika Pneumatik rendah tinggi Logika Switch/Saklar Rangkaian terbuka Rangkaian tertutup Logika CMOS 0 - 1,5 V 3,5 - 5.0 V Transistor-Transistor Logic (TTL) 0 - 0,8 V 2,0 - 5,0 V Fiber Optik Cahaya mati Cahaya menyala Memory Dinamik (DRAM) Pengosongan kapasitor Pengisian kapasitor

5.2. Operasi Dasar Pada bab 5 ini, kita akan mempelajari mengenai konsep dan operasi-operasi dasar aljabar Boolean, kemudian dilanjutkan dengan metode–metode penyederhanaan sebuah fungsi Boolean, dan pada bagian akhir akan ditunjukkan beberapa aplikasi dan implementasi dari aljabar Boolean tersebut. Setelah menyelesaikan bab ini, diharapkan para mahasiswa akan familiar dan dapat menggunakan hukum-hukum dan operasi-operasi dari aljabar Boolean. Tidak itu saja tetapi juga mampu menghubungkan operasi-operasi dan hukum-hukum tersebut dengan rangkaian-rangkaian logika yang terdiri dari gerbang (gate) AND, OR, NOT (inverter) dan gerbang-gerbang turunan lainnya, juga menghubungkan hukum-hukum dan operasi-operasi Boolean tersebut dengan rangkaian-rangkaian switching. Operasi dasar dari aljabar Boolean adalah terdiri dari gerbang-gerbang (gate) AND, OR dan NOT atau inverter. Dalam kasus rangkaian-rangkaian switching, operasi-operasi ini berhubungan dengan konfigurasi-konfigurasi switch yang berbeda. Untuk mengaplikasikan aljabar Boolean pada sebuah rangkaian switch, masing-masing kontak switch (relay) tersebut

Dasar Teknik Komputer 121 diberikan sebuah label berupa variabel (misalnya 푿). Kontak- kontak di dalam switch tersebut dapat berupa keadaan terbuka atau normally open (NO) dan keadaan tertutup atau normally closed (NC). Jika kontak 푋 adalah dalam keadaan terbuka, maka variabel 푋 tersebut didefinisikan sebagai “0”. Sementara jika kontak tersebut dalam keadaan tertutup, maka variabel 푋 tersebut didefinisikan sebagai “1”.

Gambar 5.1. Switch/saklar

Ketika posisi switch tersebut kita rubah, dimana kontak NO menjadi tertutup dan kontak NC menjadi terbuka, maka keduanya kontak-kontak NO dan NC tersebut akan selalu berada dalam keadaan yang saling berlawanan satu sama lain. Jika 푋 adalah variabel yang ditandai untuk kontak NO, maka variabel yang ditandai untuk kontak NC adalah merupakan komplemen dari 푋, dan dinyatakan sebagai 푿′. Dengan begitu komplemen dari 0 adalah 1 dan sebaliknya komplemen dari 1 adalah 0. Jadi, apabila 푋 adalah sebuah variabel switching, maka : 푋′ = 1 jika 푋 = 0 dan 푋′ = 0 jika 푋 = 1 (5.1)

Sementara itu, nama lain untuk komplemen adalah inversi, dan rangkaian elektronik yang melakukan sebuah fungsi inversi disebut sebagai inverter.

122 Dasar Teknik Komputer

5.2.1. Pernyataam (Ekspresi) Boolean Pada aljabar Boolean dua nilai, 퐵 = {ퟎ, ퟏ}, kedua elemen 퐵 ini seringkali disebut sebagai elemen biner atau bit (binary digit). Sementara itu Ekspresi atau pernyataan Boolean dibentuk dari elemen-elemen 퐵 tersebut dan/atau variabel-variabel yang dikombinasikan satu sama lain dengan menggunakan operator penjumlahan + (OR), operator perkalian ∙(AND) dan dan operator komplemen ′(NOT). Berikut ini adalah beberapa contoh dari ekspresi atau pernyataan Boolean :

1, 0, 푨, 푩, 푪, 푨 ∙ 푩, 푨 ∙ (푩 + 푪), 푨′ ∙ 푩 ∙ 푪, 푷′ + 푸, 푷 + 푸′ + 푹 dsb.

Selanjutnya, sebuah variabel 푋 dikatakan sebagai variabel Boolean atau variabel biner jika nilainya hanya berasal dari 퐵 tersebut. Variabel-variabel adalah simbol-simbol yang berbeda di dalam sebuah pernyataan atau ekspresi Boolean. Sebagai contoh, 푨, 푩 dan 푪 adalah merupakan variabel-variabel di dalam ekspresi atau pernyataan Boolean berikut : 퐴′ + 퐴 ∙ 퐵 + 퐴 ∙ 퐶′ + 퐴′ ∙ 퐵 ∙ 퐶 atau 푷, 푸, 푹 dan 푺 adalah merupakan variabel-variabel di dalam pernyataan atau ekspresi Boolean berikut : (푃′ + 푄) ∙ (푅 + 푆′) ∙ (푃 + 푄′ + 푅)

5.2.2. Tabel Kebenaran Sebuah tabel kebenaran (truth table) berisi daftar semua kombinasi-kombinasi yang mungkin dari variabel- variabel masukan (input) biner dan keluaran-keluarannya (output) yang terkait pada sebuah sistem atau rangkaian logika. Keluaran sistem logika yang didapatkan dari ekspresi logika

Dasar Teknik Komputer 123 tersebut seringkali dirujuk sebagai pernyataan atau ekspresi Boolean, yang menghubungkan antara keluaran dengan masukan dari sistem logika tersebut. Sebuah perancangan (design) rangkaian digital biasanya dimulai dengan menentukan spesifikasi keluaran yang diinginkan terlebih dahulu dengan menggunakan sebuah tabel kebenaran (truth table). Dan pertanyaan yang muncul kemudian adalah bagaimana mengimplementasikan rangkaian logika yang ekivalen fungsinya dengan tabel kebenaran tersebut. Maka aljabar Boolean dan peta Karnaugh inilah yang merupakan sarana dan metode yang digunakan untuk melakukan transformasi dari sebuah tabel kebenaran menjadi sebuah rangkaian digital atau rangkaian logika praktis.

5.2.3. Postulat-Postulat Aljabar Boolean Berikut ini adalah postulat-postulat12 aljabar Boolean : 1. 1 ∙ 1 = 1, 0 + 0 = 0 2. 1 ∙ 0 = 0 ∙ 1 = 0, 0 + 1 = 1 + 0 = 1 3. 0 ∙ 0 = 0, 1 + 1 = 1 4. 1′ = 0, 0′ = 1

5.2.4. Hukum-Hukum Aljabar Boolean Sementara berikut ini adalah beberapa hukum aljabar Boolean yang penting dan perlu kita pelajari. Dan kalau kita perhatikan disini bahwa ternyata terdapat kemiripan antara hukum-hukum aljabar Boolean dengan hukum-hukum aljabar matematika pada umumnya :

12 Postulat adalah sebuah pernyataan matematika yang disepakati benar tanpa perlu adanya pembuktian. Postulat yang sering juga disebut sebagai aksioma adalah merupakan struktur dasar dimana lemma dan teorema diturunkan..

124 Dasar Teknik Komputer

5.2.4.1. Hukum identitas : 퐴 + 0 = 퐴 (5.2) 퐴 ∙ 1 = 퐴 (5.3)

5.2.4.2. Hukum idempoten : 퐴 + 퐴 = 퐴 (5.4) 퐴 ∙ 퐴 = 퐴 (5.5)

Persamaan (5.4) dan (5.5) diatas disebut sebagai hukum idempoten sementara persamaan (5.2) dan (5,3) dikenal sebagai hukum identitas. Seringkali hukum idempoten tersebut disebut juga sebagai hukum identitas.. Dan cakupan dari hukum- hukum tersebut dapat dikembangkan lagi lebih luas dengan menganggap bahwa variabel ′푨′ tersebut adalah sebagai sebuah suku (term) yang terdiri dari lebih satu variabel atau sebuah ekspresi Boolean. Contoh 5.1 Buktikan hukum idempoten yang menghasilkan persamaan (5.4) dan (5.5). Penyelesaian : Untuk persamaan (5.4) pembuktiannya adalah sebagai berikut : 퐴 + 퐴 = (퐴 + 퐴) ∙ (1) ( hukum identitas) = (퐴 + 퐴) ∙ (퐴 + 퐴′) (hukum komplemen) = 퐴 + 퐴 ∙ 퐴′ ( hukum distributif) = 퐴 + 0 (hukum komplemen) = 퐴 (hukum identitas)

Dasar Teknik Komputer 125 Sementara untuk persamaan (5.5), pembuktiannya adalah sebagai berikut :

퐴 ∙ 퐴 = 퐴 ∙ 퐴 + 0 (hukum identitas) = 퐴 ∙ 퐴 + 퐴 ∙ 퐴′ (hukum komplemen) = 퐴 ∙ (퐴 + 퐴′) (hukum distributif) = 퐴 ∙ (1) (hukum komplemen) = 퐴 (hukum identitas)

5.2.4.3. Hukum komplemen : 퐴 + 퐴′ = 1 (5.6) 퐴퐴′ = 0 (5.7)

Secara umum, menurut hukum komplemen tersebut bahwa suatu ekspresi Boolean ketika di-OR-kan dengan komplemennya maka akan menghasilkan nilai ′ퟏ′ dan ketika di- AND-kan dengan komplemennya maka akan menghasilkan nilai ′ퟎ′.

5.2.4.4. Hukum dominansi : 퐴 ∙ 0 = 0 (5.8) 퐴 + 1 = 1 (5.9)

Seperti halnya pada hukum-hukum sebelumnya, pada hukum dominasi ini, ′푨′ tidak selalu harus sebuah variabel tunggal. 푨 disini dapat juga berupa sebuah suku (term) atau bahkan sebuah ekspresi yang terdiri dari beberapa variabel.

126 Dasar Teknik Komputer

Contoh 5.2 Buktikan hukum dominasi untuk persamaan (5.8) dan (5.9). Penyelesaian :

Untuk persamaan (5.8) pembuktiannya adalah sebagai berikut : 퐴 ∙ 0 = 퐴 ∙ (퐴 ∙ 퐴′) (hukum komplemen) = (퐴 ∙ 퐴) ∙ 퐴′ (hukum asosiatif) = 퐴 ∙ 퐴′ (hokum idempotent) = 0 (hukum komplemen)

Sementara untuk pembuktian persamaan (5.9) adalah sebagai berikut : 퐴 + 1 = 퐴 + (퐴 + 퐴′) (hukum komplemen) = (퐴 + 퐴) + 퐴′ (hukum asosiatif) = 퐴 + 퐴′ (hukum idempotent) = 1 (hukum komplemen)

5.2.4.5. Hukum involusi : (퐴′)′ = 퐴 (5.10)

Hukum involusi menyatakan bahwa komplemen dari sebuah komplemen suatu ekspresi akan menghasilkan suatu ekspresi yang tidak berubah. Artinya adalah bahwa apabila sebuah variabel 푨 dikomplemenkan ganda (dua kali) maka hasilnya akan tetap 푨.

5.2.4.6. Hukum penyerapan : A + AB = A (5.11) A (A + B) = A (5.12)

Dasar Teknik Komputer 127 Jika sebuah suku yang lebih kecil muncul didalam sebuah suku yang lebih besar, maka suku yang lebih besar tersebut adalah merupakan kelebihan (redundant). Oleh karenanya hukum penyerapan disebut juga sebagai hukum redundansi. Contoh 5.3 Buktikan hukum penyerapan pada persamaan (5.11) dan (5.12). Penyelesaian : Berikut adalah pembuktian untuk persamaan (5.11) : 퐴 + 퐴 ∙ 퐵 = 퐴 ∙ (1) + 퐴 ∙ 퐵 (hukum identitas) = 퐴 ∙ (1 + 퐵) (hukum distributif) = 퐴 ∙ (1) (hukum dominasi) = 퐴 (hukum identitas)

Sementara untuk persamaan (5.12) adalah sebagai berikut : 퐴 ∙ (퐴 + 퐵) = (퐴 + 0) ∙ (퐴 + 퐵) (hukum identitas) = 퐴 + (0 ∙ 퐵) hukum distributif) = 퐴 + 0 (hukum dominasi) = 퐴 (hukum identitas)

5.2.4.7. Hukum komutatif : 퐴 + 퐵 = 퐵 + 퐴 (5.13) 퐴퐵 = 퐵퐴 (5.14)

Persamaan (5.13) menyatakan bahwa susunan atau urutan dimana variabel-variabel tersebut dijumlahkan atau di- OR-kan adalah tidak penting (immaterial). Artinya adalah bahwa 퐴 푂푅 퐵 adalah sama dengan 퐵 푂푅 퐴. Dan begitu juga dengan persamaan (5.14) untuk operasi 퐴푁퐷. Hasil dari 퐴 퐴푁퐷 퐵 adalah sama dengan 퐵 퐴푁퐷 퐴.

128 Dasar Teknik Komputer

5.2.4.8. Hukum asosiatif : A + (B + C) = (A + B) + C (5.15) A (BC) = (AB) C (5.16)

Persamaan (5.15) dari hukum asosiatif menyatakan bahwa ketika tiga buah variabel adalah di-OR-kan, maka adalah tidak penting (immaterial) apakah anda melakukan ini dengan meng-OR-kan hasil dari variabel-variabel pertama dan kedua dengan variabel ketiga atau dengan meng-OR-kan variabel pertama dengan hasil dari variabel-variabel kedua dan ketiga. Konsep yang sama juga berlaku untuk persamaan (5.16). Contoh 5.4 Berikan contoh-contoh lain untuk hokum asosiatif. Penyelesaian : 퐴′퐵 + (퐶퐷′ + 퐸′퐹′) = 퐶퐷′ + (퐴′퐵 + 퐸′퐹′) = 퐸′퐹′ + (퐴′퐵 + 퐶퐷′) 퐴′퐵 ∙ (퐶퐷′ ∙ 퐸′퐹′) = 퐶퐷′ ∙ (퐴′퐵 ∙ 퐸′퐹′) = 퐸′퐹′ + (퐴′퐵 ∙ 퐶퐷′)

5.2.4.9. Hukum distributif : 퐴 + (퐵퐶) = (퐴 + 퐵)(퐴 + 퐶) (5.17) 퐴 (퐵 + 퐶) = 퐴퐵 + 퐴퐶 (5.18)

Hukum distributif menunjukkan bahwa sebuah ekspresi Boolean adalah selalu dapat diperluas suku demi suku (term by term).

5.2.4.10. Hukum De Morgan : (퐴 + 퐵)′ = 퐴′퐵′ (5.19) (퐴퐵)′ = 퐴′ + 퐵′ (5.20)

Dasar Teknik Komputer 129 5.2.4.11. Hukum 0/1 0′ = 1 (5.21) 1′ = 0 (5.22)

Dan berikut ini adalah beberapa hukum aljabar Boolean lainya yang juga penting : 퐴퐵 + 퐴퐵′퐶 = 퐴퐵 + 퐴퐶 (5.23) (퐴 + 퐵) ∙ (퐴 + 퐵′ + 퐶) = (퐴 + 퐵) ∙ (퐴 + 퐶) (5.24)

Interpretasi dari persamaan (5.23) dan (5.24) diatas adalah bahwa ketika sebuah suku yang lebih kecil muncul disebuah suku yang lebih besar kecual satu variabel yang muncul sebagai sebuah kompelemen di suku yang lebih besar tersebut, maka variabel yang berbentuk komplemen tersebut adalah merupakan sebuah redundant atau kelebihan. AB + A′C + BC = AB + A′C (5.25) (A + B) ∙ (A′ + C) ∙ (B + C) = (A + B) ∙ (A′ + C) (5.26)

Interpretasi dari teorema pada persamaan (5.25) dan (5.26) adalah bahwa jika dalam sebuah pernyataan Boolean yang diberikan, kita dapat mengidentifikasi dua suku dimana pada suku pertama terdapat sebuah variabel dan pada suku yang lain terdapat komplemennya, maka sebuah suku yang dibentuk melalui perkalian (product) dari variabel-variabel sisa di dalam kedua suku tersebut dalam hal ekspresi sum of product atau melalui sebuah penjumlahan dari variabel-variabel sisa dalam hal ekspresi product of sum adalah merupakan sebuah redundant (kelebihan).. Teorema pada persamaan (5.25) dan (5.26) diatas dikenal sebagai teorema consensus (consesnsus theorem).

130 Dasar Teknik Komputer

(퐴 + 퐵′) ∙ 퐵 = 퐴퐵 (5.27) 퐴퐵′ + 퐵 = 퐴 + 퐵 (5.28) 퐴퐵 + 퐴퐵′ = 퐴 (5.29) (퐴 + 퐵)(퐴 + 퐵′) = 퐴 (5.30) 퐴 + 퐴′퐵 = 퐴 + 퐵 (5.31) 퐴 ∙ (퐴′ + 퐵) = 퐴퐵 (5.32)

5.3. Gerbang Logika Gerbang logika adalah sebuah rangkaian digital dengan satu atau lebih masukan (input) dan satu keluaran (output). Didalam rangkaian digital terdapat tiga buah gerbang logika dasar yang sering digunakan, yaitu gerbang AND, OR dan NOT atau inverter. Sementara untuk gerbang-gerbang turunannya adalah gaerbang NAND, NOR, XOR dan XNOR. Diantara gerbang- gerbang logika tersebut dapat saling dihubungkan satu sama lain untuk membangun sebuah rangkaian baik rangkaian yang bersifat kombinasional13 maupun sekuensial14.

5.3.1. Gerbang AND Gerbang AND adalah sebuah rangkaian elektronika logika yang mempunyai dua atau lebih masukan dan sebuah keluaran. Keluaran dari sebuah gerbang AND adalah TINGGI atau "ퟏ" jika dan hanya jika semua masukannya adalah TINGGI atau "ퟏ". Sementara apabila salah satu masukannya adalah

13 Rangkaian kombinasi adalah sebuah rangkaian yang mempunyai keluaran yang hanya tergantung pada masukannya saat itu. 14 Rangkaian sekuensial adalah rangkaian yang mempunyai keluaran yang tidak hanya tergantung pada masukan saat itu, tetapi juga pada urutan masukan masa lalu atau masukan sebelumnya.

Dasar Teknik Komputer 131 RENDAH atau "ퟎ" maka keluarannya juga akan RENDAH atau "ퟎ". Jadi gerbang AND adalah merupakan rangkaian elektronika atau rangkaian logika yang akan mengeluarkan nilai satu "ퟏ" jika semua masukannya adalah bernilai satu "ퟏ".

Gambar 5.2. Gerbang AND

Sebuah gerbang AND dengan dua buah masukan 퐴 dan 퐵 adalah ditunjukkan pada gambar 5.2. Dan operasi dari gerbang tersebut dapat dituliskan secara aljabar sebagai 푌 = 퐴퐵 (baca : 푌 sama dengan 퐴 퐴푁퐷 퐵). Sementara itu tabel kebenaran (truth table) dari gerbang AND dengan dua masukan adalah ditunjukkan pada tabel 5.2. dibawah ini.

Tabel 5.2. Tabel kebenaran operasi AND dua masukan A B Y = A.B 0 0 0 0 1 0 1 0 0 1 1 1

5.3.2. Gerbang OR Sebuah gerbang OR dengan dua masukan 퐴 dan 퐵 dapat dituliskan secara aljabar sebagai 푌 = 퐴 + 퐵 (baca : 푌 sama dengan 퐴 푂푅 퐵 bukan 푌 sama dengan 퐴 plus 퐵). Sebuah gerbang OR adalah sebuah rangkaian lelektronika atau logika dengan dua atau lebih masukan dan satu keluaran. Gerbang tersebut akan mengeluarkan nilai ퟏ jika dan hanya jika salah satu

132 Dasar Teknik Komputer

masukannya bernilai ퟏ. Berikut ini adalah simbol dari gerbang OR dengan dua masukan dan satu keluaran (gambar 5.3) beserta tabel kebenarannya (tabel 5.3).

Gambar 5.3. Gerbang OR

Tabel 5.3. Tabel kebenaran operasi OR dua masukan A B Y = A+B 0 0 0 0 1 1 1 0 1 1 1 1

5.3.3. Gerbang NOT (Inverter) Sebuah gerbang NOT (gambar 5.4) adalah sebuah rangkaian logika dengan satu masukan dan satu keluaran. Gerbang tersebut akan menghasilkan keluaran yang bernilai kebalikan dari nilai masukan (Tabel 5.4). Inverter disebut juga sebagai komplemen dan operasi gerbang NOT tersebut pada umumnya dapat dituliskan sebagai 푌 = 푋′ atau 푋 = 푌′.15

15 Selain cara penulisan tersebut, untuk menyatakan sebuah komplemen dapat juga dengan menanbahkan tanda “bar” diatas variabel (huruf) tersebut. Namun untuk memudahkan dalam penulisan didalam buku ajar ini, penulis lebih memilih menggunakan tanda “’’” sebagai komplemen.

Dasar Teknik Komputer 133

Gambar 5.4 Gerbang NOT (inverter)

Tabel 5.4. Tabel kebenaran operasi NOT (inverter) Y = NOT A A 0 1 1 0

5.3.4. Gerbang NAND Gerbang NAND atau NOT AND yaitu rangkaian elektronika logika yang menggabungkan gerbang AND diikuti dengan gerbang NOT. Simbol lingkaran kecil pada keluaran gerbang adalah menunjukkan inversi. Jadi gerbang NAND adalah merupakan kebalikan dari gerbang AND. Berikut ini adalah simbol gerbang NAND (gambar 5.5) beserta tabel kebenarannya dengan dua masukan (Tabel 5.5).

Gambar 5.5. Gerbang NAND Tabel 5.5. Tabel kebenaran operasi NAND dua masukan A B Y = A NAND B 0 0 1 0 1 1 1 0 1 1 1 0

134 Dasar Teknik Komputer

5.3.5. Gerbang NOR Sementara gerbang NOR yaitu rangkaian elektronik logika yang menggabungkan antara gerbang OR diikuti gerbang NOT. Seperti halnya pada gerbang NAND, simbol lingkaran kecil pada keluaran gerbang OR adalah menunjukkan inversi. Oleh karenanya gerbang NOR adalah merupakan kebalikan dari gerbang OR. Berikut ini adalah simbol dari gerbang NOR (gambar 5.6) beserta tabel kebenarannya dengan dua masukan (Tabel 5.6).

Gambar 5.6 Gerbang NOR

Tabel 5.6 Tabel kebenaran operasi NOR dua masukan A B Y = A NOR B 0 0 1 0 1 0 1 0 0 1 1 0

5.3.6. Gerbang XOR Berikutnya adalah gerbang XOR atau Exklusive OR, yaitu suatu rangkaian elektronik digital yang mengeluarkan nilai 1 jika salah satu, tapi tidak keduanya, masukannya bernilai 1. Atau gerbang yang keluarannya akan bernilai 1 jika masukannya adalah berbeda. Berikut simbol gerbang XOR (Gambar 5.7) beserta tabel kebenarannya dengan dua masukan (Tabel 5.7).

Dasar Teknik Komputer 135

Gambar 5.7 Gerbang XOR Tabel 5.7. Tabel kebenaran operasi XOR dua masukan A B Y = A XOR B 0 0 0 0 1 1 1 0 1 1 1 0

5.3.7. Gerbang XNOR Dan yang terakhir adalah gerbang XNOR, yaitu rangkaian elektronik digital yang mengeluarkan nilai 0 jika salah satu, tetapi tidak keduanya, masukannya bernilai 0. Atau rangkaian elektronik yang nilai keluarannya 1, jika masukannya adalah sama. Gerbang XNOR adalah merupakan kebalikan dari gerbang XOR. Berikut ini adalah simbol untuk gerbang XNOR (Gambar 5.8) beserta tabel kebenarannya dengan dua masukan (Tabel 5.8).

Gambar 5.8. Gerbang XNOR Tabel 5.8. Tabel kebenaran operasi XNOR dua masukan A B Y = A XNOR B 0 0 1 0 1 0 1 0 0 1 1 1

136 Dasar Teknik Komputer

Contoh 5.5 : Bagaimanakah caranya untuk mengimplementasikan sebuah gerbang OR dengan empat empat masukan dengan hanya menggunakan gerbang-gerbang OR dua masukan ? Penyelesaian : Gambar berikut adalah konfigurasi yang mungkin dari gerbang- gerbang OR dua masukan untuk membentuk sebuah gerbang OR dengan empat masukan.

Gambar 5.9. Contoh 5.5a

Atau bisa juga dengan menggunakan konfigurasi berikut ini :

Gambar 5.10. Contoh 55b

Dasar Teknik Komputer 137 5.4. Penyederhanaan Fungsi Boolean Tujuan utama dari penyederhanaan fungsi Boolean ini adalah untuk mendapatkan sebuah ekspresi (pernyataan) Boolean dengan jumlah suku seminimal mungkin. Dan pada umumnya ada tiga metode yang dapat digunakan untuk proses penyederhanaan tersebut, yaitu pertama melalui penyederhanaan secara aljabar, kedua menggunakan peta Karnaugh dan ketiga menggunakan tabel Quine-McCluskey. Di dalam buku ajar ini, akan dijelaskan dua diantaranya, yaitu proses penyederhanaan secara aljabar dan metode peta Karnaugh Namun sebelum membahas mengenai kedua teknik penyederhanaan Boolean tersebut, perlu terlebih dahulu diketahui dan dipahami istilah ekspresi Boolean sum of product SOP (jumlah dari hasil kali) dan product of sum POS (hasil kali dari jumlah). Sebuah fungsi Boolean dapat diimplementasikan baik dalam bentuk jumlah dari hasil kali (sum of product) maupun dalam bentuk hasil kali dari jumlah (product of sum). Dan pilihan tersebut tentu akan sangat bergantung pada apakah tabel kebenaran yang kita rancang berisi lebih banyak logika “1” atau logika “0” untuk fungsi keluarannya. Ekspresi sum of product, yang juga dikenal sebagai minterm, berisi penjumlahan dari suku-suku yang berbeda dengan masing-masing suku dapat berupa sebuah literal16 tunggal atau merupakan sebuah perkalian lebih dari satu literal. Sum of product tersebut dihasilkan secara langsung dari sebuah tabel kebenaran (truth table) dengan mempertimbangkan kombinasi-kombinasi masukan yang menghasilkan logika “1” pada keluarannya. Jumlah dari semua

16 Literal adalah setiap variabel di dalam fungsi Boolean, termasuk dalam bentuk komplemennya. Misalnya sebuah fungsi f (x,y,z) = xyz’, maka fungsi tersebut terdiri dari tiga buah literal, yaitu x, y dan z.

138 Dasar Teknik Komputer

suku-suku tersebut memberikan sebuah ekspres Booleani. Pertimbangkanlah sebuah fungsi Boolean yang direpresentasikan dari tabel kebenaran dibawah ini (tabel 5.9). Kita dapat mengkespresikan fungsi ini dengan menuliskan nilai-nilai kombinasi dari A, B dan C yang menyebabkan keluaran F tersebut menghasilkan nilai 1. Dari tabel kebenaran tersebut, kita melihat bahwa terdapat tiga buah ekspresi Boolean yang menghasilkan keluaran yang bernilai 1, yaitu 푨′푩′푪′, 푨푩′푪′ dan 푨푩′푪. Ketiga ekspresi atau pernyataan Boolean tersebut masing- masing disebut sebagai hasil kali fundamental. Kemudian dengan menggunakan sebuah gerbang OR, ketiganya dapat saling dihubungkan sehingga membentuk sebuah persamaaan Boolean berikut : F = A′B′C′ + AB′C′ + AB′C (5.27)

Bentuk persamaan (5.27) diatas adalah merupakan implementasi dari metode sum of product atau jumlah dari hasil kali. Dan rangkaian logika dari bentuk sum of product (SOP) tersebut adalah ditunjukkan pada gambar (5.11). Tabel 5.9.Tabel sebuah fungsi Boolean dengan 3 variabel A B C F 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0

Dasar Teknik Komputer 139

Gambar 5.11. Implemenebtasi SOP dengan tiga variabel

Sementara itu, ekspresi product of sum POS, atau yang dikenal juga sebagai maxterm berisi perkalian dari suku-suku yang berbeda dengan masing-masing suku bisa berupa sebuah literal tunggal atau merupakan sebuah penjumlahan lebih dari satu literal. Product of sum juga dihasilkan dari sebuah tabel kebenaran dengan mempertimbangkan kombinasi-kombinasi masukan yang menghasilkan logika “0” pada keluarannya. Berikut adalah merupakan sebuah contoh dari bentuk ekspresi product of sum (POS) yang dihasilkan dari sebuah tabel kebenaran : F = (A + B + C) ∙ (A + B + C′) ∙ (A′ + B + C) ∙ (A′ + B + C′) ∙ (A′ + B′ + C′) (5.28)

5.4.1. Penyederhanaan Secara Aljabar Pada penyederhanaan secara aljabar tentunya akan melibatkan penerapan dari hukum-hukum aljabar Boolean yang sudah kita pelajari sebelumnya. Satu cara untuk mengurangi

140 Dasar Teknik Komputer

jumlah saluran dan elemen (gerbang) dari sebuah persamaan Boolean adalah dengan melakukan faktorisasi persamaan Boolean tersebut bilamana hal itu memungkinkan. Misalnya saja terdapat sebuah persamaan Boolean dengan bentuk sebagai berikut : Contoh 5.6 Sederhanakan persamaan Boolean berikut: 푌 = (푋 + 푌) ∙ (푋 + 푍). Penyelesaian : Maka apabila langsung kita buat rangkaian logikanya dari persamaan Boolean tersebut, akan nampak hasilnya seperti pada gambar berikut ini:

Gambar 5.12. Contoh 56a

Jika kita perhatikan dari gambar rangkaian logika tersebut, maka kita akan membutuhkan tiga buah gerbang logika (2 buah gerbang OR dan 1 buah gerbang AND) serta dibutuhkan 7 saluran untuk menyambungkan atau menghubungkan antara elemen-elemen tersebut. Selanjutnya apabila kita melakukan faktorisasi dari persamaan diatas, maka persamaan tersebut akan menjadi lebih sederhana sebagai berikut : Y = (X + Y) ∙ (X + Z) → Y = X + YZ Y = X + YZ

Dasar Teknik Komputer 141 Dan apabila kita gambarkan kembali rangkaian logikanya, maka akan nampak hasilnya adalah seperti berikut ini:

Gambar 5,13. Contoh 56b

Jelas terlihat bahwa sekarang bentuk rangkaian logikanya menjadi lebih sederhana dimana hanya dibutuhkan dua gerbang, yaitu 1 buah gerbang AND dan 1 buah gerbang OR. Sementara saluran yang digunakan sekarang berkurang menjadi 5 buah saluran dari sebelumnya 7 saluran. Contoh 5.7 Sederhanakan ekspresi Boolean berikut : (퐴 ∙ 퐵′ ∙ 퐵′ + 퐶 ∙ 퐶) ∙ (퐴 ∙ 퐵′ ∙ 퐵′ + 퐴 ∙ 퐵′ + 퐶 ∙ 퐶). Penyelesaian : (퐴 ∙ 퐵′ ∙ 퐵′ + 퐶 ∙ 퐶) ∙ (퐴 ∙ 퐵′ ∙ 퐵′ + 퐴 ∙ 퐵′ + 퐶 ∙ 퐶) = (퐴 ∙ 퐵′ + 퐶) ∙ (퐴 ∙ 퐵′ + 퐴 ∙ 퐵′ + 퐶) = (퐴 ∙ 퐵′ + 퐶) ∙ (퐴 ∙ 퐵′ + 퐶) = 퐴 ∙ 퐵′ + 퐶

Contoh 5.8 Sederhanakan ekspresi Boolean berikut : (퐴′ + 퐵′)(퐴′ + 퐵)(퐴 + 퐵′)(퐴 + 퐵). Penyelesaian : Persamaan (5.17) dapat digunakan untuk menyederhanakan ekspresi Boolean (퐴′ + 퐵′)(퐴′ + 퐵)(퐴 + 퐵′)(퐴 + 퐵) sebagai berikut : (퐴′ + 퐵′)(퐴′ + 퐵)(퐴 + 퐵′)(퐴 + 퐵) = (퐴′ + 퐵′ ∙ 퐵)(퐴 + 퐵′ ∙ 퐵) = (퐴′ + 0)(퐴 + 0) = 퐴′ ∙ 퐴 = 0

142 Dasar Teknik Komputer

Contoh 5.9 Sederhanakan ekspresi Boolean berikut : (퐴′퐵′ + 퐴′퐵 + 퐴퐵′ + 퐴퐵).

Penyelesaian : Persamaan (5.18) dapat digunakan untuk menyederhanakan ekspresi Boolean (퐴′퐵′ + 퐴′퐵 + 퐴퐵′ + 퐴퐵) sebagai berikut : (퐴′퐵′ + 퐴′퐵 + 퐴퐵′ + 퐴퐵) = 퐴′(퐵′ + 퐵) + 퐴(퐵′ + 퐵) 퐴′ ∙ 1 + 퐴 ∙ 1 = 퐴′ + 퐴 = 1

Contoh 5.10 Penyelesaian : Sederhanakan ekspresi Boolean berikut : 퐴퐵퐶 + 퐴′퐶퐷 + 퐵′퐶퐷 + 퐵퐶퐷 + 퐴퐶퐷. Penyelesaian : Gunakan persamaan (5.25) untuk menyelesaikan persamaan diatas, 퐴퐵퐶 + 퐴′퐶퐷 + 퐵′퐶퐷 + 퐵퐶퐷 + 퐴퐶퐷 = 퐴퐵퐶 + 퐴′퐶퐷 + 퐵′퐶퐷

Contoh 5.11 Sederhanakan ekspresi Boolean berikut : (퐴 + 퐵′) ∙ (퐴′ + 퐵′ + 퐶) ∙ (퐴′ + 퐵′ + 퐷). Penyelesaian : Gunakan persamaan (5.24) untuk menyelesaikan persamaan diatas, (퐴 + 퐵′) ∙ (퐴′ + 퐵′ + 퐶) ∙ (퐴′ + 퐵′ + 퐷) = (퐴 + 퐵′) ∙ (퐵′ + 퐶) ∙ (퐴′ + 퐵′ + 퐷) = (퐴 + 퐵′) ∙ (퐵′ + 퐶) ∙ (퐵′ + 퐷)

Dasar Teknik Komputer 143 Contoh 5.12 Sederhanakan ekspresi Bolean berikut : (퐴 + 퐵퐶) + (퐴 + 퐵퐶)′ dan (퐴 + 퐵퐶)(퐴 + 퐵퐶)′. Penyelesaian : Dengan menggunakan hukum komplemen, maka akan didapat hasil berikut : (퐴 + 퐵퐶) + (퐴 + 퐵퐶)′ = 1 (퐴 + 퐵퐶)(퐴 + 퐵퐶)′ = 0

Contoh 5.13 Sederhanakan persamaan berikut : 0 ∙ (퐴퐵 + 퐵퐶 + 퐶퐷) dan 1 + 퐴 + 퐵퐶. Penyelesaian : Gunakan hukum dominasi : 0 ∙ (퐴퐵 + 퐵퐶 + 퐶퐷) = 0 1 + 퐴 + 퐵퐶 = 1

Contoh 5.14 Sederhanakan dua ekspresi Boolean erikut : 퐴 + 퐴퐵′ + 퐴퐵′퐶′ + 퐴퐵′퐶 + 퐶′퐵퐴 dan 퐴 + 퐴퐵′ + 퐴퐵′퐶′ + 퐴퐵′퐶 + 퐶′퐵퐴. Penyelesaian : Dengan menggunakan hukum penyerapan, maka akan didapatkan hasil sebagai berikut : 퐴 + 퐴퐵′ + 퐴퐵′퐶′ + 퐴퐵′퐶 + 퐶′퐵퐴 = 퐴 (퐴′ + 퐵 + 퐶′) ∙ (퐴′ + 퐵) ∙ (퐶 + 퐵 + 퐴′) = 퐴′ + 퐵

144 Dasar Teknik Komputer

Contoh 5.15 Sederhanakan ekspresi Boolean berikut : 퐹 = 퐴′퐵퐶 + 퐴′. Penyelesaian : Gunakan hukum penyerapan 퐴 + 퐴퐵 = 퐴, maka akan didapatkan hasilnya sebagai berikut : 퐹 = 퐴′퐵퐶 + 퐴′ = 퐴′

Contoh 5.16 Sederhanakan ekspresi Boolean berikut : [퐴 + 퐵′퐶 + 퐷 + 퐸퐹] ∙ [퐴 + 퐵′퐶 + (퐷 + 퐸퐹)′]. Penyelesaian : Gunakan persamaan (5.30) : [퐴 + 퐵′퐶 + 퐷 + 퐸퐹] ∙ [퐴 + 퐵′퐶 + (퐷 + 퐸퐹)′] = 퐴 + 퐵′퐶.

Contoh 5.17 Sederhanakan ekspresi Boolean berikut ini : 퐴′퐵′퐶 + 퐴′퐵퐶 + 퐴퐵′. Penyelesaian : Gunakan hukum distributif−komplemen−identitas, maka akan didapatkan hasil berikut : 퐴′퐵′퐶 + 퐴′퐵퐶 + 퐴퐵′ = 퐴′ ∙ 퐶(퐵′ + 퐵) + 퐴퐵′ = 퐴′ ∙ 퐶(퐵′ + 퐵) + 퐴퐵′ = 퐴′ ∙ 퐶 ∙ (1) + 퐴퐶′ = 퐴′퐶 + 퐴퐶′

Dasar Teknik Komputer 145 Contoh 5.18 Sederhanakan persamaan berikut : 퐴퐶′ + 퐵′퐶 + 퐴퐵퐶′. Penyelesaian : Gunakan hukum identitas−distributif−dominasi−identitas, maka akan didapatkan hasil berikut : 퐴퐶′ + 퐵′퐶 + 퐴퐵퐶′ = 퐴퐶′ ∙ (1) + 퐵′퐶 + 퐴퐵퐶′ = 퐴퐶′ ∙ (1 + 퐵) + 퐵′퐶 = 퐴퐶′ ∙ (1) + 퐵′퐶 = 퐴퐶′ + 퐵′퐶

5.4.2. Metode Peta Karnaugh Untuk melakukan penyederhanaan persamaan secara aljabar Boolean tersebut kembali lagi tentunya diperlukan pemahaman yang baik tentang penerapan hukum-hukum aljabar Boolean yang sudah kita bahas sebelumnya. Namun dalam prakteknya, pada umumnya para engineer dan ahli rekayasa lebih memilih menggunakan cara dan metode yang lain untuk melakukan penyederhanan tersebut. Metode tersebut dikenal sebagai peta Karnaugh atau Karnaugh map. Peta Karnaugh adalah suatu metode atau cara yang lebih menyenangkan untuk merepresentasikan sebuah fungsi Boolean dengan sejumlah variabel masukan (maksimal hingga empat variabel masukan). Metode peta Karnaugh tersebut dikembangkan pertama kali oleh Maurice Karnaugh, seorang fisikawan dan matematikawan asal Amerika pada tahun 1953. Peta tersebut adalah sebuah array dengan jumlah bujur sangkar (squares) sebanyak ퟐ풏.,yang merepresentasikan semua nilai-nilai kombinasi yang mungkin dari 풏 variabel-variabel masukan biner tersebut. Variabel-variabel yang terdapat baik pada kolom vertikal maupun horisontal adalah mengikuti urutan-urutan

146 Dasar Teknik Komputer

sebagai berikut : 00, 01, 11 dan 10. Urut-urutan tersebut adalah dimaksudkan agar dalam peta Karnaugh nantinya hanya ada satu variabel yang mengalami perubahan dari bentuk komplemen menjadi bentuk bukan komplemen (begitu juga sebaliknya). Pada gambar 5.14 dibawah ini ditunjukkan format cara pembuatan dan penggunaan dari peta Karnaugh untuk 2 variabel masukan, 3 variabel masukan dan 4 variabel masukan. Gambar (5.14a) adalah format peta Karnaugh untuk dua variabel masukan, yaitu 퐴 dan 퐵. Ingat bahwa kita hanya mengambil data dari tabel kebenaran untuk hasil keluaran yang bernila logikai “1”. Kembali lagi pada gambar (5.14a), terlihat bahwa angka 1 yang pertama adalah mewakili variabel 퐴′퐵 sementara angka 1 yang kedua adalah mewakili variabel 퐴퐵′. Penjelasan yang sama juga berlaku untuk format peta Karnaugh 3 variabel masukan (gambar 5.14b) dan 4 variabel masukan (gambar 5.14c).

Gambar 5.14. Format peta Karnaugh untuk 2, 3 dan 4 masukan.

Dasar Teknik Komputer 147 Sementara pada gambar (5.15) dibawah ini ditunjukkan beberapa penggunaan peta Karnaugh dengan empat variabel masukan. Pertama Isikan pada setiap kotak (bujur sangkar) tersebut hasil kali fundamental yang bernilai 1 (keluaran pada tabel kebenaran yang bernilai 1). Kemudian langkah selanjutnya adalah cari pada kotak-kotak tersebut sebuah pasangan (dua angka 1 yang saling berdekatan), kuad (empat pasang angka 1 yang Saling berdekatan) dan oktet (delapan pasang angka 1 yang saling berdekatan). Masing-masing pasangan tersebut kemudian dilingkari untuk membedakannya satu dengan yang lainnya. Peta Karnaugh pada gambar (5.15a) adalah berisi sebuah pasangan (kelompok yang terdiri dari dua buah angka 1), angka 1 yang saling berdekatan dalam arah horisontal. Angka 1 yang pertama adalah mewakili perkalian 퐴′퐵퐶′퐷 sementara angka 1 yang kedua mewakili 퐴′퐵퐶퐷. Bila kita bergerak dari angka 1 pertama ke angka 1 yang kedua, maka terdapat satu variabel yang mengalami perubahan, yaitu dari 0 ke 1 (퐶′ 푘푒 퐶). Sementara untuk variabel-variabel yang lainnya tetap tidak mengalami perubahan (퐴′, 퐵 dan 퐷 tetap seperti semula). Maka apabila hal ini terjadi, kita dapat menghapus atau menghilangkan variabel yang mengalami perubahan tersebut. Dan berikut ini adalah pembuktiannya secara aljabar Boolean : 퐹 = 퐴′퐵퐶′퐷 + 퐴′퐵퐶퐷 Dengan melakukan penyederhanaan secara aljabar atau faktorisasi, maka akan kita dapatkan persamaan Boolean berikut: 퐹 = 퐴′퐵퐷 (퐶′ + 퐶) = 퐴′퐵퐷 ∙ (1) 퐹 = 퐴′퐵퐷 (5.29)

148 Dasar Teknik Komputer

Pasangan angka 1 yang berdekatan seperti yang ditunjukkan pada gambar (5.13a) tersebut selalu berarti bahwa persamaan jumlah dari hasil kali (sum of product) yang bersangkutan akan mempunyai sebuah variabel dan komplemennya yang mana keduanya akan saling meniadakan. Jangan lupa, biasakan untuk selalu memberi tanda lingkaran pada pasangan angka 1 yang berdekatan tersebut. Hal ini adalah untuk memudahkan identifikasi. Dan dengan cara ini kita akan dapat mengenali dan melihat adanya variabel dan komplemennya yang tidak muncul lagi dalam persamaan Boolean tersebut. Dengan kata lain, pasangan angka 1 yang dilingkari seperti dalam gambar (5.13a) tersebut, tidak lagi menyatakan operasi OR antara hasil kali 퐴′퐵퐶′퐷 dan 퐴′퐵퐶퐷, melainkan sebagai hasil kali perkalian tereduksi 퐴′퐵퐷 yang tidak lagi mengandung variabel 퐶 dan 퐶′. Jadi kesimpulannya, untuk pasangan angka 1 yang berdekatan didalam sebuah peta Karnaugh, maka hapuslah variabel yang mengalami perubahan. Dan jika dalam sebuah peta Karnaugh terdapat lebih dari satu pasangan, kita dapat melakukan operasi OR pada hasil kali yang telah disederhanakan itu untuk memperoleh persamaan Boolean yang bersangkutan.

Dasar Teknik Komputer 149

Gaambar 5.15. Beberapa contoh penggunaan peta Karnaugh

Pasangan berikutnya adalah Kuad, yaitu kelompok yang terdiri dari empat buah angka 1 yang tersusun berdampingan dari ujung ke ujung (gambar 5.15d), atau kelompok yang membentuk susunan segi-empat (gambar 5.15e). Bila kita mendapati suatu susunan kuad pada perta Karnaugh, maka lingkarilah kelompok (kuad) tersebut. Keberadaan sebuah kuad pada peta Karnaugh adalah berarti akan terhapusnya dua variabel beserta komplemennya dari persamaan Boolean tersebut. Hal tersebut dapat dijelaskan sebagai berikut. Sekarang coba anda bayangkan empat buah angka 1 tersebut sebagai dua buah pasangan.

150 Dasar Teknik Komputer

Pasangan pertama menyatakan 푨′푩′푪′, sementara pasangan kedua mewakili 푨′푩′푪. Hasil akhir persamaan Boolean bagi kedua pasangan ini setelah dilakukan penyederhanaan secara aljabar (faktorisasi) adalah : 퐹 = 퐴′퐵′퐶′ + 퐴′퐵′퐶 = 퐴′퐵′(퐶′ + 퐶) = 퐴′퐵′ ∙ (1) = 퐴′퐵′.

Jelas bahwa kuad pada gambar (5.15d) mengungkapkan sebuah hasil kali yang telah disederhanakan dengan terhapusnya dua variabel beserta komplemennya. Selanjutnya dengan cara yang sama berlaku juga untuk gambar (5.12e). dan bentuk persamaan Boolean yang telah disederhanakan tersebut akan menjadi : 퐹 = 퐵퐶′ (5.30)

Selanjutnya adalah oktet, yaitu kelompok yang terdiri dari delapan angka 1 yang saling berdekatan seperti yang ditunjukkan pada gambar (5.15g). Sebuah oktet selalu berarti penghapusan tiga buah variabel beserta komplemen- komplemennya dari persamaan Boolean yang bersangkutan. Pandanglah oktet pada gambar tersebut sebagai dua buah kuad. Maka persamaan untuk kedua kuad tersebut adalah : 퐹 = 퐴′퐶′ + 퐴′퐶

Kemudian Jika kika lakukan proses penyederhanaan secara aljabar atau faktorisasi, maka bentuk persamaan tersebut akan menjadi : 퐹 = 퐴′(퐶′ + 퐶) 퐹 = 퐴′ (5.31)

Dasar Teknik Komputer 151 Jadi adanya oktet pada gambar (5.15g) berarti bahwa terdapat tiga buah variabel dan komplemen-kompelemennya yang akan terhapus dari hasil kali yang bersangkutan. Definisi lain yang perlu kita pahami adalah mengenai rolling atau penggulungan. Pandanglah gambar (5.15f) dan bayangkanlah sekarang anda mengambil peta Karnaugh tersebut lalu menggulungnya sedemikian rupa sehingga tepi kiri bersentuhan dengan tepi kanan, maka akan terlihat bahwa kedua buah pasangan tersebut kini membentuk sebuah kuad. Untuk memastikan kuad yang terjadi ini, gambarlah bentuk setengah lingkaran yang mengelilingi setiap pasangan sebagaimana ditunjukkan pada gambar (5.15f) tersebut. Maka kuad pada gambar tersebut akan memiliki bentuk persamaan sebagai berikut : 퐹 = 퐵퐷′ (5.32)

Penjelasan yang sama juga berlaku untuk penggulungan (rolling) yang lainnya seperti yang ditunjukkan pada gambar (5.15b), (5.15c) dan (5.15h) diatas. Persamaan (5.13b) dan (5.13c) adalah rolling untuk pasangan dua angka 1 sementara persamaan (5.13h) adalah rolling untuk kelompok oasangan oktet. Terakhir adalah mengenai penghapusan kelompok angka-angka 1 yang bertumpang tindih seluruhnya dengan kelompok-kelompok yang lain. Kelompok angka-angka yang bertumpang tindih selurunya dengan kelompok-kelompok lain tersebut dinamakant kelompok kelebihan atau redundant group. Dan sebagai contoh perhatikan pada gambar (5.16b) dibawah. Persamaan Boolean untuk ketiga lingkaran tersebut adalah : 퐵퐶′퐷 + 퐴퐵퐷 + 퐴퐶퐷

152 Dasar Teknik Komputer

Gambar 5.16. Kelompok overlapping dan redundant

Pada kasus seperti ini, maka kita harus memeriksa ada atau tidaknya kelompok kelebihan (redundant) tersebut. Perhatikan bahwa angka-angka 1 dalam pasangan di tengah, seluruhnya bertumpang tindih dengan pasangan-pasangan yang berada di pinggir. Oleh karenanya, pasangan yang berada di tengah adalah merupakan pasangan kelebihan atau redundant dan dapt dihapus untuk menghasilkan peta Karnaugh yang lebih sederhana. Maka sekarang persamaan bagi peta Karnaugh tersebut menjadi : 퐹 = 퐵퐶′퐷 + 퐴퐶퐷 (5.33)

Dasar Teknik Komputer 153 Contoh 5.19 Sederhanakan ekspresi Boolean berikut : 퐹 = 퐴′퐵′퐶′퐷 + 퐴′퐵퐶퐷′ + 퐴퐵′퐶′퐷 + 퐴퐵퐶′퐷′. Penyelesaian : Gunakan peta Karnaugh untuk menyelesaikan soal pertanyaan diatas. Peta Karnaugh untuk ekspresi Boolean tersebut adalah :

Gambar 5.17. Contoh 5.19

Dan hasil penyederhanaan ekspresi Boolean tersebut dengan menggunakan peta Karnaugh adalah : 퐹 = 퐴′퐵퐶퐷′ + 퐴퐵퐶′퐷′ + 퐵′퐶′퐷

154 Dasar Teknik Komputer

Contoh 5.20 Tunjukkan ekspresi Boolean yang dihasilkan dari tabel kebenaran berikut :

Tabel 5.10. Contoh 5.20 A B C F 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1

Penyelesaian: Hasil kali fundamental dari data tabel kebenaran tersebut adalah 퐴′퐵′퐶, 퐴′퐵퐶, 퐴퐵′퐶′ dan 퐴퐵퐶. Maka ekspresi Boolean keseluruhan yang dihisilkan dari tabel kebenaran tersebut adalah: 퐹 = 퐴′퐵′퐶 + 퐴′퐵퐶 + 퐴퐵′퐶′ + 퐴퐵퐶

Dasar Teknik Komputer 155 Contoh 5.21 Tunjukan ekspresi Boolean dari peta Karnaugh berikut :

Gambar 5.18. Contoh 5.21 Penyelesaian : Peta Karnaugh tersebut terdiri dari dua pasangan angka 1. Pasangan angka 1 yang pertama menghasilkan 푋푌′ sementara pasangan angka satu yang kedua menghasilkan ekspresi 푋′푌. Maka ekspresi Boolean yang disederhanakan dengan menggunakan peta Karnaugh tersebut adalah : 퐹 = 푋푌′ + 푋′푌

Contoh 5.22 Tunjukkan ekspresi Boolean dari hasil penyederhanaan dengan peta Karnaugh berikut :

Gambar 5.19. Contoh 5.22

156 Dasar Teknik Komputer

Penyelesaian : Hasil kali fundamental dari peta Karnaugh tersebut adalah : 푅′푆, 푅푆, 푅푆′ dan 푃푄′. Maka ekspresi Boolean yang telah disederhanakan dengan peta Karnaugh tersebut adalah: 푅′푆 + 푅푆 + 푅푆′ + 푃푄′ 푅′푆 + {푅(푆 + 푆′)} + 푃′푄 푅′푆 + 푅(1) + 푃′푄 푃′푄 + 푅 + 푅′푆

5.5. Aplikasi Aljabar Boolean Aljabar Boolean memiliki aplikasi yang sangat luas dalam bidang teknik dan rekayasa diantaranya adalah digunakan pada jringan-jaringan switching dan rangkaian-rangkaian digital. Aplikasi berikutnya adalah dalam rangkaian elektronika, komputer dan peralatan elektronik lain dibuat dari sejumlah rangkaian atau sirkuit.

5.5.1. Rangkaian Switch Saklar adalah objek yang mempunyai dua keadaan, yaitu terbuka dan tertutup. Kita dapat menghubungkan setiap variabel didalam fungsi Boolean sebagai saklar dalam sebuah saluran yang dialiri arus listrik, air, gas, informasi atau benda lain yang mengalir. Secara fisik, saklar ini dapat berupa keran di dalam pipa hidrolik, transistor atau diode dalam rangkaian listrik, dispatcher pada alat rumah tangga atau sembarang alat lain yang dapat melewatkan atau menghambat aliran.

Dasar Teknik Komputer 157

Gambar 5.20. Keluaran 2 ada jika dan hanya jika 퐴 dan 퐵 kedua- duanya tertutup (퐴 ∙ 퐵). Pada sebuah rangkaian switch yang umum, nilai ‘0’ adalah ditandakan untuk koneksi diantara dua terminal didalam rangkaian jika tidak ada koneksi atau sambungan diantara terminal-terminal. Dan ditandai “1” jika ada sambungan diantara terminal-terminal. Jika rangkaian switch hanya terdiri dari dua kontak 푋 dan 푌, kontak-kontak switch tersebut bisa dihubungkan dalam bentuk serial atau parallel. Jika dihubungkan secara serial, terdapat sebuah rangkaian terbuka (open circuit) diantara terminal-terminal jika 푋 atau 푌 atau keduanya adalah terbuka “0” dan merupakan sebuah rangkaian tertutup (closed circuit) diantara terminal-terminalnya jika dan hanya jika keduanya 퐴 dan 퐵 adalah tertutp “1”. Operasi yang dijelaskan melalui hubungan switch yang disambungkan secara seri diatas disebut dengan operasi AND yang secara aljabar dapat dituliskan sebagai 퐹 = 푋 ∙ 푌. Adapun simbol " ∙ " dalam ekspresi Boolean seringkali dihilangkan sehingga 퐹 = 푋 ∙ 푌 dapat juga ditulis sebagai 퐹 = 푋푌. Operasi AND juga dirujuk sebagai operasi perkalian Boolean atau operasi perkalian logika. Untuk tabel kebenaran gerbang AND dengan dua input dapat dilihat pada tabel (5.2).

Gambar 5.21. Keluaran 2 ada jika dan hanya jika 퐴 atau 퐵 ditutup (퐴 + 퐵).

158 Dasar Teknik Komputer

Sementara untuk kasus switch 푋 dan 푌 yang dihubungkan secara parallel, ada sebuah rangkaian tertutup diantara terminal-terminal jika baik 푋 atau 푌 adalah tertutup, dan sebuah rangkaian yang terbuka diantara terminal-terminal jika dan hanya jika keduanya 푋 dan 푌 adalah terbuka (lihat gambar XX diatas). Rangkaian switch yang disusun parallel tersebut adalah menggambarkan operasi OR dan dapat ditulis secara aljabar sebagai 퐹 = 푋 + 푌. Operasi OR sering juga dirujuk sebagai operasi penjumlahan Boolean atau operasi penjumlahan logika. Dan tabel kebenaran dari operasi OR dengan dua input dapat dilihat pada tabel (5.3).

5.5.2. Rangkaian Aritmatika Rangkaian aritmatika adalah merupakan rangkaian kombinasi logika yang digunakan untuk melakukan operasi- operasi aritmatika atau perhitungan dan operasi-operasi lainnya yang berkaitan. Diantaranya yang termasuk rangkaian-rangkaian aritmatika adalah : adder (penjumlah), subtractor (pengurang), magnitude comparator (pembanding magnitude), controlled inverter (inverter yang dikendalikan), BCD adder (prnjumlah BCD) dan lain sebagainya. Pada pembahasan kali ini, penulis hanya akan membahas tiga daintaranya saja, yaitu rangkaian adder (penjumlah), subtractor (pengurang) dan controlled inverter.

5.5.2.1. Half Adder Sebuah half adder adalah suatu blok rangkaian aritmatika yang dapat digunakan untuk menjumlahkan dua buah bit. Pada rangkaian semacam ini hanya mempunyai dua buah input atau masukan yang merepresentasikan kedua bit tersebut dan dua buah output atau keluaran. Kedua output tersebut adalah

Dasar Teknik Komputer 159 berupa SUM dan CARRY. Output-output SUM dan CARRY tersebut adalah direpresentasikan dengan fungsi-fungsi Boolean berikut ini : SUM, 푺 = 퐴퐵′ + 퐴′퐵 (5.34) CARRY, 푪 = 퐴퐵 (5.35)

Berikut ini adalah tabel kebenaran (truth table) dari sebuah rangkaian half adder yang menunjukkan semua kombinasi-kombinasi masukan yang mungkin dan keluaran- keluarannya yang terkait.

Tabel 5.11. Tabel kebenaran rangkaian half adder A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1

Gambar 5.22. Blok diagram half adder

Sementara itu rangkaian logika half adder tersebut dapat diimplementasikan dengan menggunakan hardware sebuah gerbang (gate) XOR dengan dua masukan untuk menghasilkan keluaran SUM dan sebuah gerbang AND dua masukan untuk

160 Dasar Teknik Komputer

menghasilkan keluaran CARRY seperti ditunjukkan pada gambar dibawah ini.

Gambar 5.23. Rangkaian logika half adder

5.5.2.2. Full Adder Sebuah rangkaian full adder adalah sebuah blok rangkaian aritmatika yang dapat digunakan untuk menjumlahkan tiga buah bit sehingga menghasilkan keluaran sebuah SUM dan sebuah CARRY. Blok bangunan semacam itu adalah menjadi sebuah kebutuhan ketika kita akan menjumlahkan bilangan- bilangan biner dengan jumlah bit yang banyak. Rangkaian full adder tersebut dapat mengatasi keterbatasan dari rangkaian half adder, yang hanya dapat menjumlahkan dua bit saja. Berikut ini adalah tabel kebenaran (truth table) dari sebuah rangkaian full adder yang menunjukkan semua kombinasi-kombinasi masukan yang mungkin dan keluaran-keluarannya yang terkait. Tabel 5.12. Tabel kebenaran rangkaian full adder A B Cin SUM Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

Dasar Teknik Komputer 161

Gambar 5.24. Blok diagram full adder

Gambar di bawah ini menunjukkan implementasi rangkaian sebuah susunan cascade dari full adder yang digambarkan diatas yang dapat digunakan untuk mengkonstruksikan adders yang sanggup melakukan penjumlahan bilangan-bilangan biner dengan jumlah bit yang besar. Sebagai contoh, sebuah adder biner 4-bit akan membutuhkan empat buah full adder yang dihubungkan secara cascade berikut ini.

Gambar 5.25. Iimplementasi logika dari sebuah full adder dengan half adder

Gambar 5.26. Rangkaian adder (penjumlah) biner 4-bit

162 Dasar Teknik Komputer

5.5.2.3. Half Subtractor Sebuah half subtractor adalah sebuah rangkaian kombinasi yang dapat digunakan untuk mengurangi satu digit biner dari digit-digit lainnya untuk menghasilkan sebuah keluaran DIFFERENCE (perbedaa) dan sebuah keluaran BORROW (pinjaman). Keluaran BORROW disni menspesifikasikan apakah sebuah (bilangan) 1 dipinjam untuk melakukan perhitungan. Dengan kata lain bahwa half subtractor adalah sebuah rangkaian yang digunakan untuk melakukan operasi pengurangan. Ekspresi Boolean untuk menyatakan kedua keluaran darai rangkaian half subtractor tersebut dapat dituliskan berikut ini : DIFFERENCE, 푫 = 퐴′퐵 + 퐴퐵′ (5.36)

BORROW, 푩풐 = 퐴"퐵 (5.37)

Sementara itu tabel kebenaran (truth table) dari sebuah rangkaian half subtractor yang menunjukkan semua kombinasi- kombinasi masukan yang mungkin dan keluaran-keluarannya yang terkait adalah diberikan dibawah ini.

Tabel 5.13. Tabel kebenaran rangkaian half subtractor A B D Bo 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0

Dasar Teknik Komputer 163

Gambar 5.27. Blok diagram half subtractor

Untuk mengekspresikan keluaran DIFFERENCE, gerbang logika yang digunakan adalah berupa sebuah XOR. Sementara untuk menyatakan keluaran berupa BORROW, maka digunakan sebuah gerbang AND dengan salah satu masukan (A) dikomplemenkan terlebih dahulu sebelum diumpankan ke input gerbang AND. Berikut ini adalah rangkaian logika untuk sebuah half subtractor.

Gambar 5.28. Rangkaian logika half subtractor

5.5.2.4. Full Subtractor Sebuah full subtractor melakukan operasi pada dua bit, yaitu sebuah minuend dan subtrahend dan juga pertimbangkan fakta praktis bilamana sebuah ′ퟏ′ telah dipinjam oleh bit minuend sebelah sebelumnya yang lebih kecil atau tidak. Sebagai akibatnya, terdapat tiga bit yang harus ditangani pada masukan dari sebuah full subtractor, yaitu dua bit yang akan dikurangi dan sebuah bit pinjaman (borrow bit Bin). Terdapat dua keluaran, yaitu keluaran DIFFERENCE dan BORROW.

164 Dasar Teknik Komputer

Berikut ini adalah tabel kebenaran dari sebuah rangkaian full subtractor.

Tabel 5.13. Tabel kebenaran rangkaian full subtractor Minuend Subtrahen Borrow in Difference Borrow out (A) d (B) (Bin) (D) (Bout) 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1

Gambar 5.28. Blok diagram full subtractor

Gambar 5.29. Implementasi logika dari sebuah full subtractor dengan half subtractor

Dasar Teknik Komputer 165

Gaambar 5.30. Rangkaian subtractor (pengurang) 4-bit

5.5.2.5. Controlled Inverter Controlled inverter adalah sebuah rangkaian yang dibutuhkan ketika penjumlah (adder) akan digunakan sebagai pengurang (subtractor). Dengan controlled inverter ini sebuah adder dapat digunakan untuk melakukan operasi pengurangan. Seperti telah dijelaskan bahwa pengurangan adalah tidak lebih merupakan penjumlahan dari komplemen -2 dari subtrahend terhadap minuend. Oleh karenanya langkah pertama terhadap implementasi praktis dari subtractor adalah menentukan komplemen -2 dari subtrahend. Dan untuk hal ini, pertama-tama kita perlu mencari komplemen -1 terlebih dahulu. Sebuah controlled inverter adalah digunakan untuk mencari komplemen - 1. Sebuah controlled inverter 1-bit adalah tidak lebih merupakan sebuah gerbang XOR dua masukan dengan salah satu masukannya diperlakukan sebagai sebuah control input (lihat gambar dibawah). Ketika control input adalah RENDAH, maka bit masukan akan dilewatkan pada keluaran (ingat kembali tabel kebenaran dari gerbang XOR). Ketika control input adalah TINGGI, bit masukan akan dikomplemenkan pada keluaran.

166 Dasar Teknik Komputer

Gambar 5.31. Controlled inverter 1-bit.

Gambar dibawai ini adalah merupakan sebuah rangkaian controlled inverter 8-bit. Ketika control input adalah

RENDAH, maka keluarannya 푌7푌6푌5푌4푌3푌2푌1푌0 adalah sama dengan masukan 퐴7퐴6퐴5퐴4퐴3퐴2퐴1퐴0. Ketika control input adalah TINGGI, maka keluaran adalah merupakan komplemen -1 dari masukan. Sebagai contoh, jika pada masukan diberikan data 11100011, maka akan pada keluaran akan dihasilkan data 00011100 ketika control input adalah dalam kondisi logika ′1′.

Gambar 5.32. Controlled inverter 8-bit

Dasar Teknik Komputer 167 Soal-Soal 1. Sederhanakan ekspresi-ekspresi Boolean berikut secara aljabar: a. 퐴퐵퐶′ + 퐴퐵퐶 + 퐴퐵′퐶′ + 퐴퐵′퐶

b. [퐴 + 퐵′퐶 + 퐷 + 퐸퐹] ∙ [퐴 + 퐵′퐶 + (퐷 + 퐸퐹)′]

c. 퐴′퐵퐶 + 퐴′퐵′퐶 + 퐶퐷′

d. 퐴′퐵′퐶′ + 퐴퐵′퐶′ + 퐴퐵′퐶

e. [1 + 퐴퐵 + 퐴퐵′ + 퐴′퐵][(퐴 + 퐵′)(퐴′퐵) + 퐴′퐵′(퐴 + 퐵)]

f. (퐴퐵 + 퐶퐷) ∙ [(퐴′ + 퐵′) ∙ (퐶′ + 퐷′)]

g. 퐴 + 퐴퐵′ + 퐴퐵′퐶 + 퐴퐵′퐶퐷′

h. 퐴′퐵′퐶′ + 퐴′퐵′퐶 + 퐴′퐵퐶′ + 퐴′퐵퐶 + 퐴퐵′퐶′ + 퐴퐵′퐶 + 퐴퐵퐶′ + 퐴퐵퐶

i. 1 + 퐴′ ∙ 퐵 + 퐵′ ∙ 퐶 + 퐴 ∙ 퐵 ∙ 퐶′ + 퐴′ ∙ 퐵′ ∙ 퐶′ + 퐴′ ∙ 퐵 ∙ 퐶

j. 퐴퐵퐶 + 퐴′퐵퐶′ + 퐴퐵퐶′ + 퐴퐵′퐶

2. Tunjukkan ekspresi Boolean dari peta Karnaugh berikut :

168 Dasar Teknik Komputer

2. Carilah bentuk komplemen dari ekspresi Boolean berikut :

a. (퐴′ + 퐵)퐶′

b. [(퐴퐵′ + 퐶′)퐷 + 퐸′]퐹

3. Tunjukkan ekspresi Boolean dari tabel kebenaran berikut :

4. Tunjukkan ekspresi Boolean dari rangkaian logika berikut :

5. Gambarkan bentuk gelombang keluaran yang dihasilkan jika sebuah gerbang OR diberikan sinyal masukan pulas dengan bentuk gelombang seperti ditunjukkan pada gambar :

Dasar Teknik Komputer 169 BAB 6. CENTRAL PROCESSING UNIT (CPU)

6.1. Pendahuluan Secara umum struktur internal dari sebuah sistem komputer adalah terdiri dari tiga bagian atau unit fungsional, yaitu :  CPU (Central Processing Unit) atau unit pengolahan pusat yang berfungsi untuk mengendalikan operasi komputer dan juga melakukan fungsi-fungsi pengolahan datanya. Seringkali disebut sebagai prosesor saja.  I/O (Input-Output) yaitu sebuah unit yang berfungsi untuk melakukan operasi-operasi pemindahan data antara komputer dengan lingkungan luarnya.  Memory yaitu sebuah unit yang berfungsi sebagai tempat penyimpanan data dan juga program-program.

Gambar 6.1. Organisasi dari sebuah komputer sederhana dengan 1 CPU dan 2 perangkat I/O (sumber : Andrew S. Tanenbaum)

170 Dasar Teknik Komputer

Dari ketiga komponen-komponen komputer tersebut, yang paling menarik dari sistem komputer tentu saja adalah unit pengolahan pusat atau CPU. CPU atau prosesor adalah merupakan bagian inti dari sebuah komputer. Unit fungsional ini benar-benar menyelesaikan pekerjaan terbanyak. CPU membaca instruksi program yang disimpan di dalam memori dan melaksanakannya secara patuh dan cepat. Istilah CPU berasal dari tahun 1950-an, yang menggambarkan sebuah kotak besar dengan rangkaian yang kompleks. Dalam PC (personal computer) sekarang ini, CPU adalah merupakan sebuah rangkaian terpadu yang disebut sebagai mikroprosessor.

6.2. Unit-Unit Fungsional Dari CPU Sementara itu, CPU sendiri juga terdiri dari tiga komponen- komponen yang utama, yaitu :  CU (Control Unit) yang berfungsi untuk mengendalikan atau mengontrol operasi CPU dan juga tentu saja mengendalikan unit komputer secara keseluruhan.  ALU (Arithmetic and Logical Unit) yang berfungsi untuk melakukan fungsi-fungsi operasi pengolahan data, yaitu berupa operasi aritmatika (penghitungan) dan juga operasi logika terhadap data di dalam sebuah sistem komputer.  Register yang berfungsi sebagai tempat penyimpanan internal bagi CPU.

Pada unit CPU, komponen yang paling menarik adalah unit pengendali atau control unit CU. Dan apabila kita perhatikan dari susunan-susunan diatas, terlihat adanya kemiripan antara struktur internal komputer secara keseluruhan dengan struktur internal CPU. Pada keduanya, terdapat sekumpulan kecil elemen-elemen utama. Sistem komputer terdiri dari unit-unit : CPU, I/O dan

Dasar Teknik Komputer 171 memori, sementara CPU sendiri terdiri dari unit-unit : CU, ALU dan register, yang dihubungkan oleh lintasan-lintasan data yang disebut dengan bus.

Gambar 6.2.Struktur Komputer IAS (sumber : William Stalling)

172 Dasar Teknik Komputer

6.2.1. Control Unit (CU) Memori, ALU dan unit-unit I/O menaruh dan memproses informasi dan melakukan operasi-operasi input- output. Operasi dari unit-unit ini harus dikoordinasikan dengan beberapa cara. Ini adalah tugas atau tanggung jawab dari control unit. Control unit adalah secara efektif merupakan pusat syaraf (nerve centre) yang mengirimkan sinyal-sinyal kendali (control) kepada unit-unit lain dan mengamati keadannya. Control unit menyediakan sinyal-sinyal kendali (control) untuk operasi dan koordinasi dari semua komponen-komponen prosesor. Secara tradisional, sebuah implementasi microprogramming telah digunakan dimana komponen- komponen utama adalah control memory, microinstruction sequencing logic dan register-register. Lebih update lagi, microprogramming menjadi kurang menonjol tetapi tetap sebuah teknik implementasi yang penting. Transfer-transfer I/O, yang berisi operasi-operasi input dan output, adalah dikontrol oleh instruksi-instruksi program yang mengidentifikasikan perangkat-perangkat yang terlibat dan informasi yang ditransfer. Control unit adalah bertanggung jawab untuk pembangkitan sinyal-sinyal pewaktu (timing signals) yang mengatur transfer-transfer dan menentukan kapan suatu aksi yang diberikan harus dilakukan. Transfer-transfer data diantara prosesor dan memori juga diatur oleh control unit melalui timing signals tersebut. Adalah masuk akal untuk berfikir sebuah control unit sebagai sebuah unit yang secara fisik terpisah, dirancang dengan baik yang berinetaraksi dengan bagian-bagian lain dari komputer. Praktisnya, bagaimanapun, ini kasus yang jarang. Sebagian besaar dari rangkaian-rangkaian control secara fisik didistribusikan keseluruh komputer. Sebagian besar dari saluran-saluran control membawa sinyal-sinyal yang digunakan

Dasar Teknik Komputer 173 untuk pewaktuan (timing) dan sinkronisasi dari kejadian-kejadian didalam semua unit-unit. Unit input menerima informasi dalam bentuk kode dari operator manusia dengan menggunakan perangkat-perangkat seperti misalnya keyboard atau dari komputer lain melalui saluran-saluran komunikasi digital. Informasi yang diterima tersebut kemudian ditaruh di dalam memori komputer, baik untuk penggunaan berikutnya atau untuk diproses dengan segera melalui unit ALU. Tahap-tahap pemrosesan adalah dispesifikasikan oleh sebuah program yang juga ditaruh di dalam memori. Akhirya, hasilnya adalah dikirimkan kembali ke luar melalui unit output. Semua aksi-aksi ini dikoordinasikan oleh unit pengendali (control unit CU). Sebuah jaringan interkoneksi menyediakan cara untuk unit-unit fungsional tersebut untuk bertukar informasi dan mengkoordinasikan aksi-aksi mereka. Kita merujuk pada rangkaian-rangkaian aritmetika dan logika dalam kaitannya dengan rangkaian-rangkaian pengendali (control) utama sebagai prosesor. Perangkat input dan output seringkali dirujuk secara kolektif sebagai unit I/O. Sekarang kita perhatikan secara seksama pada informasi yang ditangani oleh sebuah komputer. Adalah menyenangkan untuk mengkategorikan informasi ini sebagai keduanya, yaitu instruki-instruksi atau data. Instruksi-instruksi atau instruksi- instruksi mesin adalah perintah-perintah eksplisit yang :  Mengatur transfer informasi di dalam sebuah komputer juga diantara komputer dengan perangkat-perangkat I/O.  Menspesifikasikan operasi-operasi aritmetika dan logika yang akan dikerjakan.

174 Dasar Teknik Komputer

6.2.2. Arithmetic And Logical Unit (ALU) ALU merupakan bagian dari komputer yang berfungsi untuk melakukan operasi-operasi aritmatika (perhitungan) dan logika terhadap data. Semua elemen lain sistem komputer (control unit, register, memory, I/O) berfungsi terutama untuk membawa data ke ALU untuk selanjutnya diproses dan kemudian membawa kembali hasilnya. ALU dan seluruh komponen elektronik di dalam komputer didasarkan pada penggunaan perangkat logika digital sederhana yang dapat menyimpan digit-digit biner dan membentuk operasi logika Boolean sederhana. Gambar dibawah menjelaskan gambaran secara umum tentang interkoneksi ALU dengan elemen-elemen CPU lainnya. Data diberikan ke ALU di dalam register dan hasil operasinya disimpan di dalam register. Register-register ini adalah merupakan lokasi penyimpanan sementara didalam CPU yang dihubungkan ke ALU dengan menggunakan lintasan sinyal ALU juga akan menyetel flag sebagai hasil dari suatu operasi. Misalnya, overflow flag disetel 1 bit bila hasil komputasi melampaui panjang register tempat flag disimpan. Control unit menghasilkan sinyal yang akan mengontrol operasi ALU dan pemindahan data ke ALU atau dari ALU.

6.2.3. Register Seperti telah dibahas, sistem komputer menggunakan hirarki memori. Pada tingkatan yang paling atas, memori lebih cepat, lebih kecil dan lebih mahal per bit. Didalam CPU, terdapat sekumpulan register yang tingkatan memorinya berada diatas hirarki memori utama dan cache.

Dasar Teknik Komputer 175 Regsiter pada CPU memiliki dua fungsi, yaitu :  User-visible register, register ini memungkinkan programmer bahasa mesin dan bahasa assembler meminimalkan referensi memori utama dengan cara mengoptimasi penggunaan register.  Control dan , register-register ini digunakan oleh unit control untuk mengontrol operaasi CPU dan oleh program sistem operasi untuk mengontrol eksekusi program.

Tidak terdapat pemisahan yang jelas antara kedua jenis register diatas. Misalnya, pada sebagian mesin program counter adalah user-visible (misalnya, VAX), namun pada mesin lainnya bukan merupakan register user-visible. Namun untuk keperluan pembahasan selanjutnya, kita akan menggunakan kategori tersebut diatas. Register dari sebuah komputer secara kolektif disebut sebagai set register. Beberapa register mungkin mempunyai jenis yang sama, sedangkan yang lainnya mungkin berbeda. Sebagai contoh, suatu komputer mungkin mempunyai beberapa register umum dengan parallel-load dan juga register geser untuk transfer serial secara terpisah. Kemungkinan kombinasi, demikian pula jumlah register, akan bervariasi antara satu komputer dengan yang lainnya. Namun, beberapa register berlaku umum pada hampir semua komputer umum. Sebuah register adalah sebuah lokasi penyimpanan- penyimpanan tunggal di dalam CPU yang digunakan untuk satu tujuan yang tertentu dan terdefinisi. Sebuah register digunakan untuk menaruh suatu nilai biner secara temporal (sementara) untuk penyimpanan, untuk manipulasi dan atau untuk perhitungan-perhitungan yang sederhana. Catatan bahwa

176 Dasar Teknik Komputer

setiap register adalah dihubungkan secara kawat di dalam CPU untuk melakukan tugas khususnya. Yaitu, tidak seperti memori, dimana setiap alamat adalah seperti halnya setiap alamat lain, masing-masing register melakukan tugas dengan sebuah tujuan yang khusus. Ukuran register, bagaimana pengawatannya dan bahkan operasi-operasi yang berlangsung di dalam register merefleksikan fungsi khusus yang dikerjakan oleh register di dalam komputer tersebut. Register juga berbeda dengan memori dalam hal bahwa mereka tidak dialamati sebagaimana halnya sebuah lokasi memori, tetapi malah dimanipulasi secara langsung oleh control unit selama eksekusi dari instruksi-instruksi. Register-register boleh jadi sama kecilnya dengan sebuah bit tunggal atau sama bearnya dengan beberapa bytes, biasanya berkisar dari 1 sampai 128 bits. Register-register adalah digunakan dalam banyak cara di dalam sebuah komputer. Bergantung kepada penggunaan yang khusus dari sebuah register, sebuah register boleh jadi memegang data yang sedang diproses, sebuah instruksi yang sedang dieksekusi, sebuah memori atau alamat I/O yang akan diakses atau bahkan kode-kode biner khusus yang digunakan untuk beberapa tujuan yang lain, sementara yang lainnya adalah didisain untuk melakukan suatu tugas khusus atau tunggal. Bahkan ada register-register yang didisain secara khusus untuk memegang (hold) sebuah bilangan dalam format floating point, atau suatu set dari nilai-nilai terkait yang merepresentasikan sebuah daftar atau vector, seperti misalnya pixel-pixel jamak di dalam sebuah image (gambar). Register-register adalah komponen kerja dasar dari CPU. Komputer tidak dapat membedakan diantara sebuah nilai yang digunakan sebagai sebuah bilangan dalam sebuah program dan sebuah nilai yang

Dasar Teknik Komputer 177 adalah sebenarnya sebuah instruksi atau alamat, kecual dalam kontek penggunaan saat ini. General purpose register atau akumulator (ACC) adalah biasanya dipertimbangkan menjadi sebuah bagian dari ALU, meskipun beberapa computer manufacturers lebih suka mempertimbangkan mereka sebagai sebuah unit register yang terpisah. Control unit atau unit pengendali (CU) berisi beberapa register-register yang penting :  Program Counter (PC) atau pencacah program, memegang alamat dari instruksi yang saat ini sedang dieksekusi.  Instruction Regsiter (IR) atau register instruksi, memegang instruksi aktual yang sedang dieksekusi saat ini oleh komputer.  Memory Address Register (MAR) atau register alamat memori, memegang alamat dari sebuah lokasi memori.  Memory Buffer Register (MBR)) atau Memory Data Register (MDR), akan memegang sebuah nilai data yang sedang ditaruh kea tau diambil (retrieved) dari lokasi memori yang saat ini sedang dialamati oleh MAR

Kontrol unit tersebut juga berisi beberapa register- register 1 bit, yang kadang-kadang dikenal sebagai flags, yang digunakan untuk mengijinkan komputer menjaga (keep track) kondisi-kondisi khusus seperti misalnya arithmetic carry dan overflow, power failure dan internal computer error. Biasanya, beberapa flags dikelompokkan menjadi satu atau lebih status register.

178 Dasar Teknik Komputer

6.2.3.1. Program Counter (PC) Program counter (PC) atau instruction address counter berisi alamat lokasi memori dimana intruksi berikutnya harus diambil. Segera setelah pengambilan instruksi telah lengkap, isi program counter dinaikkan untuk ke alamat instruksi berikutnya. Program counter (PC) atau pencacah program adalah merupakan salah satu register umum. Regsiter ini menyimpan alamat memori dari instruksi selanjutnya yang akan dijalankan. Karena pelaksanaan sebuah program biasanya dilakukan berurutan, maka alamat instruksi berikutnya bernilai satu lebih tinggi daripada alamat instruksi saat ini MAR ←------PC PC ←------PC + 1

Program disimpan di dalam memori RAM dengan instruksi pertama diletakkan pada alamat biner 0000, instruksi kedua pada alamat 0001, instruksi ketiga pada alamat 0002 dan seterusnya. Data biasanya disimpan pada bagian akhir memori. Program counter atau pencacah program yang merupakan bagian dari control unit bertugas mencacah dari 0000 sampai 1111. Keluaran dari pencacah akan menunjukkan alamati nstruksi berikutnya yang akan dieksekusi. Ketika komputer mulai bekerja, pencacah program direset sehingga nilainya menjadi 0000. Nilai ini dikirimkan ke register alamat memori (memory address register) MAR pada saat fetch (pengambilan), sebagai alamat memori yang akan diambil instruksinya. Kemudian pencacah program menaikkan angka cacahnya menjadi 0001. Setelah instruksi pertama diambil dan dilaksanakan, pencacah mengirimkan alamat 0001 ke register MAR. Pencacah kembali meningkatkan angka

Dasar Teknik Komputer 179 cacahnya. Proses ini terus dilakukan sampai seluruh instruksi dalam memori selesai dijalankan atau menerima instruksi untuk berhenti seperti instruksi HLT (HALT). Jika suatu jump atau cabang instruksi dijalankan, instruksi yang akan dilaksanakan berikutnya disimpan pada alamat yang ditentukan dalam cabang instruksi. Dalam hal ini, kita ingin me-load (memuatkan) langsung alamat baru ke program counter : PC ←------bagian alamat dari instruksi cabang

Berdasarkan kedua persamaan diatas, kita melihat bahwa register program counter PC merupakan penghitung (counter) biner dengan parallel-load. Program counter berisi alamat dari pasangan instruksi berikutnya untuk di ambil dari memory.

6.2.3.2. Instruction Register (IR) Untuk menjalankan suatu instruksi di dalam memori yang ditunjuk oleh program counter PC, CPU memulai serangkaian satu transfer komputer atau lebih. Rangkaian yang sebenarnya tergantung dari rancangan CPU dan instruksi tertentu yang sedang dijalankan. Mungkin saja operasi yang akan dijalankan memerlukan satu transfer memori atau lebih. Dalam hal ini, kita perlu memegang saluran instruksi tersebut dalam sebuah register khusus yang disebut sebagai register instruksi atau Instruction Register IR. Sebelum pelaksanaan, pertama kali sebuah instruksi diambil dari memori dan disimpan dalam register instruksi IR dan kemudian PC (program counter) ditingkatkan sehingga ia menunjuk ke instruksi berikutnya. Urutan transfer register untuk proses ini adalah sebagai berikut :

180 Dasar Teknik Komputer

IR ←----- M[PC] PC ←--- (PC) + 1

Dimana M[PC] menunjukkan isi lokasi memori yang ditunjuk oleh PC. Sekali instruksi disimpan di dalam register IR, maka instruksi tersebut dapat didekode (decoded) oleh control logic unit (CLU) dan operasi mikro dapat diaktifkan untuk pelaksanaannya. Register instruksi IR merupakan bagian dari unit kendali atau control unit CU. Instruksi yang akan dieksekusi, dibaca dari memori utama dan masuk kedalam bus W. Pada waktu yang bersamaan, register instruksi diaktifkan sehingga instruksi yang dibaca dari memori akan masuk kedalam register instruksi. Register instruksi dibagi menjadi dua bagian. Bagian atas sebanyak 4 bit dikirim ke blok pengendali pengurut (controller sequence). Bagian bawah sebanyak 4 bit menuju bus W dikendalikan oleh TSB. Regsiter instruksi IR menyimpan instruksi yang baru saja diambil dari memori untuk dilakukan pendekodean atau penerjemahan instruksi. Untuk menjalankan suatu instruksi di dalam memori yang ditunjuk oleh program counter PC, CPU memulai serangkaian satu transfer komputer atau lebih. Rangkaian yang sebenarnya tergantung dari rancangan CPU dan instruksi tertentu yang sedang dijalankan. Mungkin saja operasi yang akan dijalankan memerlukan satu transfer memori atau lebih. Dalam hal ini, kita perlu memegang saluran instruksi tersebut dalam sebuah register khusus yang disebut sebagai Instruction Register IR.. Sebelum pelaksanaan, pertama kali sebuah instruksi diambil dari memori dan disimpan dalam IR dan kemudian program counter ditingkatkan sehingga ia menunjuk ke instruksi berikut :….

Dasar Teknik Komputer 181 Instruction register (IR) berisi instruksi opcode 8 bit yang sednag dieksekusi.

6.2.3.3. Memory Addres Register (MAR) MAR berisi alamat lokasi memori selama memori dalam operasi baca-tulis. Dibawah pencacah program atau program counter PC adalah register masukan dan MAR. Disini sudah termasuk register saklar untuk alamat dan data. Regsiter- register saluran ini, yang merupakan bagian dari unit masukan memungkinkan pengiriman 4 bit alamat dan 8 bit data kepada memori RAM. Selama komputer bekerja alamat dalam pencacah program ditahan (latched) pada MAR. Sejenak kemudian MAR mengirimkan alamat 4 bit kedalam memori RAM, untuk membaca instruksi dalam memori. MAR menspesifikasikan alamat didalam memori dari word untuk ditulis dari atau atau dibaca kedalam MBR.

6.2.3.4. Memory Buffer Register (MBR) Memory buffer register (MBR) berisi sebuah word, yang ditaruh pada memory atau dikirimkan pada unit I/O, atau digunakan untuk menerima sebuah word dari memori atau dari unit I/O.

6.2.3.5. Instruction Buffer Register (IBR) IBR digunakan untuk menahan secara sementara instruksi " right-hand " dari sebuah word di dalam memori.

6.2.3.6. Accumulator (ACC) Akumulator adalah sebuah register buffer yang menyimpan hasil sementara selama komputer melakukan operasi aritmatika (perhitungan).. Akumulator mempunyai dua macam

182 Dasar Teknik Komputer

keluaran. Keluaran dua keadaan secara langsung diteruskan ke bagian penjumlah pengurang. Keluaran tiga keadaan dikirmkan ke bus W. Karena itu data sebanyak 8 bit dan akumulator secara terus menerus mengaktifkan rangkaian penjumlah-pengurang.

6.2.3.7. Multiplier Quotient (MQ) Akumulator dan multiplier quotient (MQ) digunakan untuk menahan sementara operand-operand dan hasil-hasil dari operasi perhitungan yang dilakukan oleh ALU.Sebagai contoh, hasil dari perkalian dua bilangan 40 bit adalah sebuah bilangan 80 bit. Bilangan yang paling signifikan 40 bit adalah ditaruh di akumulator. Sementara bilangan dua yang kurang signifikan ditaruh di multiplier quotient (MQ).

Dasar Teknik Komputer 183 BAB 7. UNIT MEMORI

7.1. Pendahuluan Sebelumnya, untuk memahami organisasi CPU, kita perlu memperhatikan persyaratan-persyaratan yang terdapat pada CPU. Hal-hal yang perlu dilakukan oleh CPU tersebut adalah :  Fetch Instruction atau mengambil instruksi. CPU harus membaca instruksi dari memori.  Interpret instruction atau menterjemahkan instruksi, instruksi harus di-decode (diuraikan/diterjemahkan) untuk dapat menentukan aksi atau langkah apa yang diperlukan berikutnya.  Fetch Data atau mengambil data, eksekusi suatu instruksi mungkin memerlukan pembacaan data dari memori atau modul I/O.  Data atau mengolah data, eksekusi suatu instruksi mungkin memerlukan operasi aritmetika (perhitungan) atau operasi logika terhadap data.  Write Data atau penulisan data, hasil eksekusi mungkin memerlukan penulisan data ke memori atau modul I/O.

Agar dapat melakukan hal-hal diatas, jelas bahwa CPU perlu menyimpan data untuk sementara waktu. CPU harus dapat mengingat lokasi instruksi terakhir sehingga CPU akan dapat mengambil instruksi berikutnya. CPU perlu menyimpan instruksi dan data untuk sementara waktu pada saat instruksi sedang dieksekusi. Dengan kata lain, CPU memerlukan memori utama yang berukuran kecil.

184 Dasar Teknik Komputer

7.2. Memori Internal dan Eksternal Memori dari sebuah komputer merupakan tempat untuk menyimpan program dan data sebelum operasi perhitungan dimulai. Selama sebuah komputer bekerja, bagian kendali dapat menyimpan sebagian dari jawaban-jawaban di dalam memori, sebagaimna kita menggunakan kertas untuk mencatat pekerjaan kita. Karena itu, memori merupakan salah satu dari bagian yang paling aktif dari sebuah komputer, peranannya tidak hanya terbatas pada penyimpanan program dan data saja melainkan juga data yang sedang diproses. Sebuah memori pada dasarnya ekivalen dengan ribuan register-register, dimana setiap register tersebut dapat menyimpan sebuah word biner. Komputer-komputer generasi terakhir mengandalkan memori semikonduktor karena memori dari jenis ini lebih murah dan lebih mudah operasinya dibandingkan dengan memori core magnet. Sebuah mikrokomputer standard memiliki memori semikonduktor yang mengandung sampai 65.536 lokasi memori, dengan kemampuan menyimpan 1 byte informasi pada setiap lokasi memori. Walaupun konsepnya terasa sederhana, memori komputer memiliki aneka ragam jenis, teknologi, organisasi, unjuk kerja, dan biaya bagi sistem komputer. Fungsi dari unit memori adalah untuk menaruh program dan data. Ada dua kelas penyimpanan atau memori, yaitu memori utama (primary memory) dan memori sekunder (secondary memory). Memori utama disebut juga sebagai memori internal. Sementara memori sekunder disebut juga sebagai memori eksternal. Tidak ada satupun teknologi yang optimal dalam memuaskan kebutuhan memori suatu sistem komputer. Dan sebagai akibatnya, sistem komputer yang umum dilengkapi dengan hirarki subsistem-subsistem

Dasar Teknik Komputer 185 memori., yang sebagiannya bersifat internal17 terhadap sistem dan sebagian lagi bersifat external18 terhadap sistem. Memori utama adalah suatu memori yang cepat yang beroperasi pada kecepatan-kecepatan elektronik. Program- program harus ditaruh di memori utama ini sementara mereka sedang dieksekusi. Memori tersebut terdiri dari sejumlah besar sel-sel penyimpanan semikonduktor, yang masing-masingnya mampu menaruh 1 bit informasi. Sel-sel ini jarang dibaca atau ditulis secara individual, tetapi mereka ditangani dalam kelompok-kelompok yang berukuran tetap yang disebut dengan word. Memori utama diorganisasikan sehingga satu word dapat ditaruh atau diambil kembali dalam satu operasi dasar. Jumlah dari bit-bit dalam masing-masing word dirujuk sebagai word length (panjang word) dari komputer tersebut, dan tipikalnya adalah 16, 32 atau 64 bit. Untuk menyediakan akses yang mudah terhadap suatu word didalam memori, suatu alamat yang jelas diperlukan berkaitan dengan masing-masing lokasi word. Address atau alamat adalah bilangan-bilangan yang menyatakan lokasi dari suatu memori, dimulai dari 0 yang mengidentifikasikan lokasi-lokasi yang berurutan. Sebuah word khusus adalah diakses dengan menspesifikasikan alamatnya dan menerbitkan sebuah perintah kontrol pada memori tersebut yang memulai proses penyimpanan atau pengambilan. Instruksi-instrusi dan data dapat ditulisi kedalam atau dibaca dari memori utama dibawah kendali prosesor. Adalah penting untuk dapat mengakses suatu lokasi word di dalam

17 Internal terhadap sistem artinya bahwa memori tersebut dapat diakses secara langsung oleh prosesor,misalnya adalah RAM dan ROM. 18 Eksternal terhadap sistem artinya memori tersebut tidak dapat diakses secara langsung oleh prosesor tetapi melalui suatu modul I/O, misalnya seperti disket, flah disk dsb.

186 Dasar Teknik Komputer

memori secepat mungkin. Suatu memori dimana suatu lokasi dapat diakses dalam waktu yang tetap dan singkat setelah menspesifikasikan alamatnya disebut sebagai random access memory (RAM). Sementara waktu yang dibutuhkan untuk mengakses satu word adalah disebut waktu akses memory (memory access time). Waktu ini adalah independen terhadap lokasi dari word yang sedang diakses. Itu tipikalnya berkisar dari beberapa nanosecond (ns) hingga sekitar 100 ns untuk unit-unit RAM saat ini. Meskipun memori utama adalah penting, akan tetapi jenis memori tersebut adalah cenderung mahal dan tidak menahan informasi ketika power dimatikan. Karenanya, memori sekunder (secondary memory) atau memori eksternal yang permanen, lebih murah adalah digunakan ketika sejumlah besar data dan banyaknya program-program harus ditaruh, terutama untuk informasi yang jarang diakses. Waktu akses untuk penyimpanan sekunder adalah lebih panjang dan lama daripada untuk memori utama. Contoh-contoh memori sekunder atau eksternal diantaranya adalah magnetic disk (disket dan hard disk), optical disk (DVD dan CD) dan perangkat-perangkat flash memory.

7.3. Hirarki Memori Kendala rancangan pada memori komputer dapat diringkas menjadi tiga buah pertanyaan. Berapa banyak ? Berapa cepat ? Berapa mahal ?. Pertanyaan berapa banyak adalah sesuatu yang tidak bekesudahan. Bila terdapat kapasitas, maka aplikasi akan cenderung menggunakannya. Pertanyaan berapa cepat merupakan pertanyaan yang lebih mudah untuk dijawab. Untuk mendapatkan unjuk kerja terbaik, memori harus mampu

Dasar Teknik Komputer 187 mengikuti CPU. Artinya, apabila CPU sedang mengeksekusi instruksi, kita tidak perlu menghentikan CPU untuk menunggu datangnya instruksi atau operand. Pertanyaan terakhir harus diperhitungkan juga. bagi sistem dalam praktek, harga memori harus memadai dalam hubungannya dengan komponen- komponen lainnya. Seperti yang telah diperkirakan, terdapat trade-off diantara ketiga karakteristik kunci memori tersebut, yaitu harga, kapasitas dan waktu akses. Pada suatu saat tertentu, berbagai teknologi digunakan untuk mengimplementasikan sistem-sistem memori. Melalui spektrum teknologi ini, hubungan-hubungan dibawah ini perlu dijaga :  Semakin kecil waktu akses, semakin besar harga per bit.  Semakin besar kapasitas, semakin kecil harga per bit.  Semakin besar kapasitas, semakin besar waktu akses.

Dilema yang dihadapi perancang cukup jelas. Perancang mempunyai keinginan untuk memakai teknologi memori yang ada untuk memori berkapasitas besar, hal ini disebabkan dengan alasan karena kapasitas diperlukan dan karena harga per bit cukup rendah. Namun untuk memenuhi persyaratan unjuk kerja, perancang perlu menggunakan memori yang mahal, berkapasitas relatif rendah dengan waktu akses yang cepat. Jalan keluar dari dilema ini adalah dengan tidak menggantungkan diri pada sebuah komponen memori atau teknologi, melainkan dengan menggunakan hirarki memori. Hirarki yang umum dijelaskan pada gambar dibawah. Semakin menurunnya hirarki, maka hal-hal dibawah ini akan terjadi :  Penurunan harga/bit.  Peningkatan kapasitas.  Peningkatan waktu akses.  Penurunan frekwensi akses memori oleh CPU.

188 Dasar Teknik Komputer

Gambar 7.1. Hirarki memori

Jadi memori yang lebih kecil, lebih mahal, dan lebih cepat ditambah oleh memori-memori yang lebih murah dan lebih lambat. Kunci keberhasilan organisasi ini adalah butir terakhir, penurunan frekwensi akses. Sebuah memori yang ideal seharusnya cepat, besar dan murah. Dari penjelasan sebelumnya jelas bahwa sebuah memori yang sangat cepat dapat diimplementasikan dengan menggunakan chip-chip RAM statik (static RAM). Akan tetapi chip-chip ini tidak cocok untuk implementasi memori-memori yang besar, karena sel-sel dasar mereka adalah lebiih besar dan mengkonsumsi lebih banyak daya disbanding sel-sel RAM dinamik (dynamic RAM). Meskipun unit-unit memori dinamik dengan kapasitas- kapasitas Gigabyte dapat diimplementasikan pada suatu harga yang masuk akal (reasonable), ukuran yang didapat masih kecil dibanding dengan permintaan-permintaan akan program-program dan data yang besar. Sebuah solusi disediakan dengan

Dasar Teknik Komputer 189 menggunakan penyimpanan sekunder, terutamanya disk magnetik (magnetic disk) untuk menyediakan ruang memori yang diinginan. Disk-disk adalah tersedia pada suatu harga yang reasonable, dan mereka digunakan secara ekslusif didalam sistem-sistem komputer. Bagaimanapun, mereka jauh lebih lambat daripada unit-unit memori semikonduktor. Ringkasnya sebuah penyimpanan yang sangat cost-effective dapat disediakan oleh disk magnetik dan sebuah penyimpanan yang besar dan lebih cepat diperoleh, memori utama dapat dibangun dengan teknologi RAM dinamik. Hal ini meninggalkan teknologi RAM statik yang jauh lebih cepat dan lebih mahal untuk digunakan didalam unit-unit yang lebih kecil dimana kecepatan adalah hal yang terpenting, seperti halnya didalam cache memory. Semua dari tipe-tipe unit memori yang berbeda ini adalah digunakan secara efektif dalam sebuah sistem komputer. Keseluruhan memori komputer tersebut dapat dipandang sebagai hirarki seperti yang diperlihatkan pada gambar. Akses yang paling cepat adalah terhadap data yang dipegang reregister-register prosesor (CPU). Oleh karenanya, jika kita mempertimbangkan register-register tersebut pada bagian dari hirarki memori, maka register-register prosesor adalah yang paling atas dalam hal kecepatan akses. Tentu saja, register- register tersebut hanya menyediakan porsi yang kecil dari memori yang diperlukan. Pada level berikutnya dari hirarki memori adalah sebuah memori yang relatif kecil yang dapat diimplementasikan secara langsung pada chip prosesor. Memori ini, disebut sebagai processor cache. Memori cache memegang salinan-salinan dari instruksi data yang ditaruh di memori yang jauh lebih besar yang disediakan secara eksternal. Konsep cache memori tersebut seringkali ada dua atau lebih level-level cache. Sebuah primary

190 Dasar Teknik Komputer

cache adalah selalu ditempatkan pada chip prosesor. Cache ini adalah kecil dan access time atau waktu aksesnya adalah dapat dibandingkan dengan register-register prosesor. Primary cache tersebut dirujuk sebagai level 1 (L1) cache. Sebuah secondary cache atau cache sekunder yang lebih besar dan agak lambat adalah ditempatkan diantara primary cache dan sisanya. Dia dirujuk sebagai level 2 (L2) cache. Seringkali, L2 cache tersebut juga adalah terdapat dalam chip prosesor. Beberapa komputer mempunyai level 3 (L3) cache bahkan dengan ukuran yang lebih besar, selain L1 dan L2 cache. Sebuah L3 cache juga diimplementasikan dalam teknologi SRAM, bisa jadi atau juga engga pada chip yang sama dengan prosesor L1 da L2 cache. Level berikutnya dalam hirarki adalah memori utama (main memory). Ini adalah sebuah memori yang besar yang diimplementasikan dengan menggunakan komponen-komponen memori dinamik, tipikalnya di bangun dalam modul-modul memori seperti misalnya DIMMs. Memori utama tersebut adalah jauh lebih besar tetapi lebih lambat dari cache memory. Pada sebuah komputer dengan sebuah processor clock 2GHz atau lebih, waktu akses untuk memori utama tersebut dapat sebanyak 100 kali lebih panjang daripada waktu akses untuk L1 cache. Perangkat-perangkat disk menyediakan sebuah memori yang sangat murah, dan mereka banyak digunkan sebagai penyimpanan sekunder dalam sistem-sistem komputer. Mereka adalah sangat lambat dibandingkan dengan memori utama. Perangkat-perangkat disk (hard disk, CD atau DVD) merepresentasikan level yang paling bawah dalam hirarki memori.

Dasar Teknik Komputer 191 Berikut adalah gambaran level-level memori dalam suatu hirarki. Ketika jarak dari prosesor (CPU) meningkat, maka ukuran dari memori pun meningkat. Sementara waktu aksesnya menjadi menurun.

Gambar 7.2. Hubungan antara kapasitas dan waktu akses dalam hirarki memori

Sebuah hirarki memori yang tipikal dimuali dengan sebuah unit yang kecil, mahal dan relatif cepat, yang disebut cache. Diikuti dengan sebuah unit memori utama yang lebih besar dan lebih murah. Cache dan memori utama adalah dibangun dengan menggunakan material semikonduktor solid state (tipikalnya transistor-transistor CMOS). Tujuan dibalik perancangan sebuah hirarki memori adalah untuk mendapatkan sebuah sistem memori yang perform seolah-olah dia terdiri dari sepenuhnya unit yang paling cepat dan yang harganya adalah didominasi oleh harga dari unit yang paling lambat. Hirarki memori dapat dikarakterisasikan dengan sejumlah parameter-parameter. Diantara parameter-parameter tersebut adalah waktu akses

192 Dasar Teknik Komputer

(access time), kapasitas (capacity), waktu siklus (cycle time), bandwidth, latency dan biaya (cost). Istilah access merujuk kepada aksi (action) yang secara fisik berlangsung dalam sebuah operasi baca atau tulis. Kapasitas (capacity) dari sebuah level memori biasanya diukur dalam byte. Waktu siklus (cycle time) adalah didefinisikan sebagai waktu yang terlewati (time elapsed) dari awal suatu operasi baca hingga awal dari suatu baca berikutnya.. Latency adalah didefinisikan sebagai waktu interval diantara permintaan untuk informasi dan akses terhadap bit pertama dari informasi itu.

7.4. Karakteristik Sistem Memori Masalah kompleks sistem memori adalah membuatnya agar lebih mudah diatur bila kita mengklasifikasikan sistem-sistem memori sehubungan dengan karakteristik-karakteristik kuncinya. Berdasarkan lokasinya, sistem memori dibedakan menjadi : CPU, internal dan eksternal. Kemudian berdasarkan kapasitas : ukuran word dan banyaknya word. Menurut satuan transfer : word dan block. Untuk metode akses yang digunakan dibedakan menjadi : sequential access, direct access, random access dan associative access. Menurut kinerja : access time, cycle time dan transfer rate. Menurut tipe fisik : semikonduktor dan permukaan magnet. Sementara menurut karakteristik fisik : volatine dan non-volatile serta erasable dan nonerasable Kita mulai dengan aspek memori yang paling dapat dilihat, yaitu lokasinya. Terdapat memori internal dan memori eksternal bagi komputer. Memori internal seringkali kali disamakan dengan memori utama. Namun sebenarnya terdapat bentuk internal memori lainnya. CPU memerlukan memori lokaslnya sendiri, yang berbentuk register-register.

Dasar Teknik Komputer 193 Selanjutnya, seperti kita ketahui, bagian unit control CU juga memerlukan memori internalnya sendiri. Kita akan menangguhkan pembahasan kedua jenis memori internal ini sampai akhir bab ini. Memori eksternal terdiri dari perangkat penyimpanan peripheral, seperti disk dan pita, yang dapat diakses oleh prosesor (CPU) melalui pengendali I/O (I/O controller). Karakteristik memori yang jelas adalah kapasitasnya. Bagi memori internal, biasanya kapasitas ini dinyatakan dalam bentuk byte (dimana 1byte = 8 bit) atau word. Panjang word yang umum adalah 8, 16 dan 32 bit. Kapasita eksternal memori biasanya dinyatakan dalam byte. Konsep yang berkaitan dengan ini adalah satuan transfer. Bagi memori internal, satuan transfer sama dengan jumlah saluran data yang masuk ke dan keluar dari modul memori. Jumlah saluran ini seringkali sama dengan panjang word, tapi mungkin juga tidak sama. Untuk menjelaskan masalah ini, perhatikan tiga konsep yang saling berhubungan bagi memori internal.. Word, yaitu satuan alami organisasi memori. Ukuran word biasanya sama dengan jumlah bit yang digunakan untuk representas bilangan dan panjang instruksi. Sayangnya, terdapat banyak perkecualian. Misalnya, CRAY-I memiliki panjang word 64v bit namun memakai representasi integer 24-bit, VAX memiliki beraneka ragam panjang instruksi. Addressable unit. Pada sejumlah sistem, addressable unit adalah word. Namun terdapat sistem yang mengijinkan pengalamatan pada tingkatan byte. Pada semua kasus, hubungan antara panjang A suatu alamat dan jumlah N addressable unit adalah 2퐴 = N.

194 Dasar Teknik Komputer

Unit transfer. Bagi memori utama, satuan ini merupakan jumlah bit yang dibaca atau dituliskan kedalam memori pada suatu saat. Satuan transfer tidak perlu sama dengan word atau addressable unit. Bagi memori eksternal, seringkali data ditransferkan dalam jumlah yang jauh lebih besar dari word, dan hal ini dikenal sebagai blok. Terdapat empat jenis metode pengaksesan sebuah data pada memori, yaitu : Sequential access. Memori diorganisasikan menjadi unit- unit data, yang disebut record. Access harus dibuatlah dalam bentuk urutan linear yang spesifik. Informasi pengalamatan yang disimpan dipakai untuk memisahkan record-record dan untuk membantu proses pencarian. Digunakan pula mekanisme baca/tulis yang digunakan bersama (shared read/write mechanism), dan mekanisme ini harus dipindahkan dari lokasi saat tertentu ke lokasi yang diinginkan, yaitu dengan cara melewatkan dan mengeluarkan record-record. Jadi waktu untuk mengakses record sangat bervariasi. Pita, merupakan sequential access. Direct access. Seperti halnya sequential access, direct acces meliputi shared read/write mechanism. Akan tetapi, setiap blok dan record memiliki alamat-alamat yang unik berdasarkan lokasi fisik. Akses diperoleh dengan cara akses langsung untuk mencapai kisaran umum (general vicinity) ditambah pencarian sequential., penghitungan, penantian untuk mencapai lokasi akhir. Disini waktu aksesnya variable. Disk merupakan direct access. Random access. Setiap addressable location didalam memori memiliki mekanisme yang unik dan pengalamatan yang secara fisik wired-in. Waktu untuk mengakses lokasi tertentu tidak tergantung pada urutan akses sebelumnya dan bersifat

Dasar Teknik Komputer 195 konstan. Jadi setiap lokasi dapat dipilih secara random dan diakses serta dialamati secara langsung. Sistem memori utama merupakan random access. Associative. Ini merupakan jenis random access memori yang memungkinkan seseorang untuk membandingkan lokasi bit yang diinginkan didalam sebuah word untuk pencocokan tertentu, dan untuk melakukan pembandingan ini bagi seluruh word secara simultan. Jadi, sebuah word dicari berdasarkan pada isinya dan bukan berdasarkan pada alamatnya. Seperti pada random access memory, setiap lokasi memiliki masing-masing mekanisme pengalamatannya sendiri, dan waktu pencariannya tidak bergantung secara konstan terhadap lokasi atau pola access sebelumnya. Cache memory, dapat menggunakan associative access. Waktu akses dari suatu memori adalah waktu yang diperlukan untuk membaca word yang tersimpan setelah bit-bit alamat dimasukkan. Karena transistor-transitor bipolar lebih cepat dari MOSFET, maka memori bipolar memiliki waktu akses yang lebih singkat daripada memori MOS. Misalnya, 3636 adalah PROM bipolar dengan waktu akses 80 ns, 2716 adalah EPROM MOS dengan waktu akses 450 ns. Anda harus membayar lebih mahal untuk kecepatan yang lebih tinggi. Karena itu, memori bipolar lebih mahal daripada memori MOS. Dengan demikian, seorang perancang harus memutuskan pilihan tipe yang tepat, sesuai dengan kondisi penerapan yang khusus. Dari sudut pandang pengguna, dua karakteristik penting memori adalah kapasitas dan unjuk kerja. Terdapat tiga buah parameter unjuk kerja, yaitu : Access time. Bagi random access memory, access time merupakan waktu yang dibutuhkan unttuk melakukan operasi baca dan tulis. Dengan kata lain, waktu dari suatu alamat

196 Dasar Teknik Komputer

diberikan ke memori sampai pada saat data disimpan atau dapat digunakan. Bagi non-random access memory, access time adalah waktu yang dibutuhkan untuk melakukan mekanisme baca tulis pada lokasi tertentu. Memory cycle time. Konsep ini terutama digunakan bagi random access memory dan terdiri dari access time ditambah dengan waktu tambahan yang diperlukan transient agar hulang pada saluran atau untuk menghasilkan kembali data bila data ini dibaca secara destruktif. Transfer rate. Transfer rate adalah kecepatan data agar dapat ditransfer ke unit memori atau ditransfer dari unit memori. Pada random access memory, transfer rate atau laju transfer sama dengan 1/ (waktu siklus). Bagi non-random access memory, hubungan dibawah ini harus dipenuhi : N T = T + N A R

Dimana :

TN = Waktu rata-rata untuk membaca atau menulis N bit. TA = Waktu akses rata-rata N = Jumlah bit R = Kecepatan transfer, dalam bit per detik

Berbagai jenis fisik memori telah digunakan. Dua jenis yang umum digunakan saat ini adalah memori semikonduktor, yang memakai teknologi SLI atau VLSI, dan memori permukaan magnetik, yang digunakan untuk disk atau pita. Beberapa karakteristik fisik penyimpanan data cukup penting. Pada volatile memori, informasi akan rusak secara alami atau hilang bila daya listriknya dimatikan. Pada non-volatile memori, sekali informasi direkam akan tetap berada disana tanpa

Dasar Teknik Komputer 197 mengalami kerusakan sebelum dirubah; daya listrik tidak diperlukan untuk mempertahankan informasi tersebut. Memori permukaan magnetik adalah non-volatile. Sementara memori semikonduktor adalah volatile dan non-volatile.

7.5. Tipe-Tipe Memori Utama Semikonduktor Pada komputer-komputer model lama, bentuk yang umum dari random access storage bagi memori utama adalah komputer yang menggunakan sejumlah piringan ferromagnetic berlubang yang dikenal sebagi core, sebuah istilah yang masih tetap digunakan hingga saat ini. Sekarang, penggunaan bahan semikonduktor sebagai pengganti memori core untuk memori utama sudah bersifat universal. Memori-memori adalah diklasifikasikan berdasarkan bagaimana mereka menaruh bit- bitnya di dalam sel bit (bit cell). Klasifikasi yang paling umum adalah RAM dan ROM. RAM adalah bersifat volatile, yang artinya bahwa memori tersebut akan kehilangan isi datanya ketika power atau catu daya dimatikan. Sementara ROM adalah bersifat non-volatile, yang berarti bahwa memori tersebut akan tetap mempertahankan datanya ketika catu daya dimatikan, bahkan tanpa sebuah sumber daya. RAM disebut random access memory karena suatu data word adalah diakses dengan delay yang sama seperti ketika mengakses data word yang lainnya. Berlawanan dengan sequential access memory, sepeti misalnya sebuah tape recorder, dimana akses terhadap data yang terdekat akan lebih cepat daripada data pada ujung lainnya. Sementara ROM disebut read only memory karena, secara historis, memori tersebut hanya dapat dibaca tetapi tidak dapat ditulis. Sebetulnya nama-nama ini adalah membingungkan, karena ROM juga adalah diakses secara random. Perbedaan yang penting untuk diingat adalah bahwa

198 Dasar Teknik Komputer

RAM bersifat volatile sementara ROM adalah non-volatile. Dua tipe yang utama dari memori RAM adalah RAM dinamik (dynamic RAM DRAM) dan RAM statik (static RAM SRAM). DRAM menaruh data sebagai sebuah muatan pada sebuah kapasitor. Sementara SRAM menaruh data dengan menggunakan sepasang inverter yang dikopel secara menyilang (cross- coupled inverters).

7.5.1. Random Access Memory (RAM) Tabel dibawah ini adalah daftar jenis memori semkonduktor utama. Jenis yang paling umum digunakan dikenal sebagai random access memory atau RAM. Seperti telah dijelaskan sebelumnya, hal itu merupakan penggunaan istilah yang salah, karena semua jenis yang terdaftar pada tabel tersebut merupakan random access. Yang membedakan karakteristik RAM adalah bahwa dengan jenis memori tersebut dimungkinkan untuk membaca data dari memori atau menulis data yang baru ke dalam memori secara mudah dan cepat. Pembacaan dan penulisan tersebut diperoleh dengan menggunakan sinyal-sinyal listrik.

Tabel 7.1. Memori semikonduktor Mekanisme Tipe Memori Kategori Penghapusan Penulisan Volatilitas RAM Read-write Elektrik Elektrik Volatile ROM Read only Tidak mungkin Mask Non-volatile PROM Read only Tidak mungkin Non-volatile EPROM Read mostly Cahaya ultraviolet Non-volatile Flash Memory Read mostly Elektrik Non-volatile EEPROM Read mostly Elektrik Non-volatile

Dasar Teknik Komputer 199 Hal lain yang membedakan karakteristik RAM adalah bahwa memori jenis RAM adalah bersifat bersifat volatile, artinya bahwa data yang terdapat didalamnya akan hilang begitu catu daya yang yang diberikan padanya diputus. Suatu RAM harus diberi supply daya yang konstan. Bila daya tersebut berhenti, maka data akan hilang. Sehingga RAM hanya dapat digunakan untuk penyimpanan sementara saja. Istilah random access merujuk kepada fakta bahwa suatu akses terhadap suatu lokasi memori memerlukan waktu yang tetap dan tak peduli lokasi memori aktual dan/atau urutan akses yang berlangsung. Sebagai contoh, jika suatu operasi tulis pada lokasi memori 100 memerlukan waktu 15 ns (nanosecond), dan jika operasi tersebut diikuti dengan suatu operasi baca pada lokasi memori 3000, maka operasi berikutnya juga akan memerlukan waktu yang sama yaitu 15 ns. Teknologi RAM dapat dibagi menjadi dua, yaitu RAM statik SRAM (static RAM) dan RAM dinamik DRAM (dynamic RAM). RAM dinamik disusun oleh sel-sel yang menyimpan data sebagai muatan listrik pada kapasitor. Keberadaan dan ketidakadaan muatan listrik pada kapasitor diinterpretasikan sebagai bilangan biner 1 atau 0. Karena kapasitor memiliki kecenderungan alami untuk mengosongkan muatannya, maka RAM dinamik memerlukan pengisian muatan listrik seracara periodik untuk memelihara penyimpanan data. Pada RAM statik, nilai-nilai biner disimpan dengan menggunakan konfigurasi gerbang logika flip-flop tradisional. RAM statik akan menampung data sepanjang daya listrik disediakan untuknya. Baik RAM statik maupun RAM dinamik adalah bersifat volatile. Sel memori dinamik lebih sederhana dan karena itu lebih kecil dibandingkan dengan sel memori statik. Dengan demikian RAM dinamik lebih rapat (sel lebih kecil = lebih banyak sel persatuan

200 Dasar Teknik Komputer

luas) dan lebih murah dibandingkan dengan RAM statik. Sebaliknya RAM dinamik memerlukan rangkaian pengosong muatan. Bagi memori yang lebih besar biaya tetap untuk rangkaian pengosong lebih besar dari biaya yang digunakan oleh biaya variable yang lebih kecil daripada sel-sel RAM dinamik. Jadi RAM dinamik cenderung lebih baik digunakan untuk kebutuhan memori yang lebih besar. Hal terakhir yang penting adalah bahwa RAM statik umumnya lebih cepat dibandingkan RAM dinamik.

7.5.1.1. Dynamic RAM (DRAM) RAM dinamik (DRAM) menaruh sebuah bit (1 atau 0) sebagai kehadiran (presence) atau ketidakhadiran (absent) dari muatan pada sebuah kapasitor. Kemudian transistor nMOS berperiaku sebagai sebuah switch yang menghubungkan atau memutuskan kapasitor dari bitline. Ketika wordline adalah dinyatakan, maka transistor nMOS tersebut diset ON, dan nilai bit yang ditaruh ditransfer ke atau dari bitline tersebut. Ketika kapasitor dimuati VDD, bit yang ditaruh adalah 1. Ketika kapasitor dikosongkan muatannya ke GND, maka bit yang ditaruh adalah 0. Setelah pembacaan, nilai-nilai data adalah ditransfer dari bitline tersebut ke kapasitor. Proses pembacaan akan merusak nilai bit yang ditaruh pada kapasitor, oleh karenanya word data tersebut harus direstore atau ditulis kembali setelah setiap kali pembacaan. Bahkan ketika DRAM adalah tidak dibaca, konten-konten tersebut harus direfresh (dibaca dan ditulis kembali) setiap beberapa millisecond, karena muatan pada kapasitor lambat laun akan mengalami kebocoran.

Dasar Teknik Komputer 201

Gambar 7.3. Sebuah sel bit DRAM

Jadi untuk merefresh sel DRAM tersebut, kita cukup membaca konten-kontennya dan menulisnya kembali. Muatan tersebut dapat disimpan selama beberapa millisecond. Jika setiap bit harus dibaca keluar dari DRAM tersebut dan kemudian ditulis kembali secara individual, kita akan merefresh secara konstan DRAM tersebut. Pada sebuah DRAM, nilai yang dijaga didalam sebuah sel adalah disimpan sebagai muatan di dalam sebuah kapasitor. Sebuah transistor tunggal kemudian digunakan untuk mengakses muatan yang ditaruh tersebut, membaca nilai atau menulis muatan yang ditaruh disana.. Karena hanya menggunakan sebuah transistor tunggal per bit dari penyimpanan (storage), maka DRAM adalah jauh lebih padat dan lebih murah per bit dibanding SRAM. Karena DRAM menaruh muatan pada sebuah kapasitor, maka dia tidak dapat disimpan disana tanpa batas dan harus direfresh secara periodik. Itulah kenapa struktur memori ini disebut dinamik, berlawanan dengan penyimpanan statik pada sel SRAM.

202 Dasar Teknik Komputer

7.5.1.2. Static RAM (SRAM) RAM statik (SRAM) adalah dikatakan statik karena bit-bit yang ditaruh didalamnya tidak perlu direfresh seperti yang dilakukan pada DRAM. Bit data adalah ditaruh pada inverter yang tidak dikopel (non-coupled inverter). Setiap sel mempunyai dua output, bitline dan bitline’ Kedua wordline adalah dinyatakan, kedua transistor-transistor nMOS diset ON, dan nilai-nilai data adalah ditransfer ke atau dari bitline. Tidak seperti DRAM, jika noise menurunkan (degrades) nilai dari bit yang ditaruh, maka inverter-inverter yang dikopel menyilang (cross- couple inverters) tersebut merestorasi nilai tersebut. Flip flop, SRAM dan DRAM adalah semuanya volatile, tetapi masing-masing mempunyai karakteristik-karakteristik delay dan area yang berbeda. Bit data yang ditaruh pada flip flop adalah available dengan segera pada outputnya. Tetapi flip flop mengambil setidaknya 20 transistor-transistor untuk membangun.

Gambar 7.4. Sebuah sel bit SRAM

Dasar Teknik Komputer 203 Pada umumnya, lebih banyak suatu perangkat mempunyai transistor, maka lebih banyak area, power dan biaya (cost) adalah diperlukan. Latency DRAM lebih lama daripada SRAM karena bitlinenya adalah tidak dikendalikan secara aktif oleh sebuah transistor. DRAM harus menunggu untuk muatan untuk berpindah secara relatif lambat dari kapasitor ke bitline. DRAM juga pada dasarnya mempunyai throughput yang lebih rendah daripada SRAM, karena dia harus merefresh data secara periodik dan setelah pembacaan. Teknologi-teknologi DRAM seperti misalnya synchronous DRAM SDRAM dan double data rate SDRAM DDR SDRAM telah dikembangkan untuk mengatasi masalah ini. SRAM mempunyai waktu akses yang tetap terhadap suatu data meskipun waktu akses (access time) baca dan tulis mungkin berbeda. SRAM tidak perlu merefresh dan oleh karenanya waktu akses (access time) adalah sangat dekat dengan waktu siklus (cycle time). SRAM tipikalnya menggunakan 6 sampai 8 transistor-transistor per bit untuk mencegah informasi dari gangguan ketika pembacaan. SRAM hanya membutuhkan power yang minimal untuk mempertahankan muatan dalam mode stanby. Pada masa yang lalu, sebagian besar PC dan sistem-sistem server menggunakan chip-chip SRAM yang terpisah untuk keduanya (primary dan secondary), atau bahkan tertiary caches. Saat ini, berkat Moore’s Law (hukum Moore), semua level-level dari cache memory adalah terintegrasi kedalam chip prosesor, sehingga pasar untuk chip-chip SRAM yang terpisah telah hampir punah.

204 Dasar Teknik Komputer

7.5.2. Read Only Memory (ROM) Yang sangat berbeda dengan RAM adalah read only memory ROM. Seperti namanya, ROM berisi pola data permanen yang tidak dapat diubah. Sementara dimungkinkan untuk membaca sebuah ROM, tetapi tidaklah memungkinkan untuk menulisi data kedalamnya. Untuk keperluan yang berukuran sedang, keuntungan ROM adalah bahwa data atau program secara permanen berada didalam memori utama dan tidak perlu dimuatkan dari perangkat penyimpanan sekunder. ROM dibuat seperti halnya keeping rangkaian terpadu IC lainnya, dengan data yang wired-in dengan chip merupakan proses fabrikasi. Hal ini menimbulkan dua masalah :  Lnngkah penyisipan data memerlukan biaya tetap yang tinggi, apakah satu atau seribu buah salinan (copy) ROM tertentu difabrikasi.  Tidak boleh terjadi kesalahan atau error. Bila terjadi satu bit salah, maka batch ROM keseluruhan harus dibuang.

Sebuah memory disebut read only memory atau ROM, apabila informasi dapat dituliskan padanya hanya sekali pada saat manufaktur. Gambar dibawah memperlihatkan sebuah konfigurasi yang mungkin untuk sebuah sel ROM. Sebuah nila logika 0 disimpan di dalam sel tersebut jika transistor terhubung dengan ground pada titk P, jika tidak, sebuah nilai logika 1 disimpan. Saluran bit dihubungkan melalui sebuah resistor pada power supply. Untuk membaca keadaan dari sel, saluran wordline diaktifkan untuk menutup switch transistor. Sebagai akibatnya, tegangan pada saluran bit jatuh atau drop mendekati nol jika ada sambungan antara transistor dan ground. Jika tidak ada sambungan dengan ground, saluran bit tetap pada level

Dasar Teknik Komputer 205 tegangan yang tinggi, yang mengindikasikan sebuah “1”. Sebuah rangkaian pengindera (sense circuit) pada ujung dari saluran bit membangkitkan nilai output yang tepat. Keadaan dari koneksi ke ground pada masing-masing sel adalah ditentukan ketika chip difabrikasi, dengan menggunakan sebuah mask dengan sebuah pola yang merepresentasikan informasi untuk disimpan.

Gambar 7.5. Sebuah sel ROM

7.5.2.1. Programmable ROM (PROM) Bila hanya diperlukan sedikit ROM dengan isi memori tertentu, alternatif yang murah adalah programmable ROM (PROM). Seperti halnya ROM, PROM bersifat non-olatile dan hanya bisa ditulisi sekali saja. Pada PROM, proses penulisan dibentuk secara elektrik dan dapat dibuat oleh penjual atau pembeli setelah proses pabrikasi. Diperlukan peralatan khusus untuk proses penulisan atau pemrograman. PROM memberikan fleksibilitas dan kemudahan. PROM sangat menarik untuk diproduksi dalam skala besar. Beberapa rancangan ROM mengijinkan data dimuat oleh user, sehingga menyediakan programmable ROM. Kemampuan dapat diprogram adalah dicapai dengan menyisipkan sebuah fuse pada titik P. Sebelum

206 Dasar Teknik Komputer

diprogram, memori tersebut berisi semuanya 0s. User dapat menyisipkan 1s pada lokasi yang diinginkan dengan membakar fuse tersebut pada lokasi-lokasi ini dengan menggunakan pulsa- pulsa berarus tingggi. Tentu saja, proses ini adalah irreversible. PROM menyediakan fleksibilitas dan convenience yang tidak tersedia pada ROM. Biaya untuk menyiapkan masks yang dibutuhkan untuk penyimpanan suatu pola informasi tertentu hanya membuat ROM cost effective apabila dalam jumlah atau volume yang besar. Variasi ROM lainnya adalah read mostly memory, yang sangat berguna untuk aplikasi operasi pembacaan jauh lebih sering dibanding dengan operasi penulisan namun dibutuhkan sorage non-volatile. Terdapat tiga macam read mostly memory, yaitu : EPROM, EEPROM dan Flash memory. Teknologi alternatif dari PROM menyediakan sebuah pendekatan yang lebih murah dan lebih menyenangkan, karena chip-chip memori dapat diprogram secara langsung oleh user.

7.5.2.2. Erasable PROM (EPROM) EPROM dibaca dan ditulisi secara elektris, seperti halnya PROM. Namun sebelum operasi tulis (write), seluruh sel penyimpanan harus dihapus untuk mendapatkan keadaan awal yang sama dengan dengan menggunakan radiasi sinar ultraviolet terhadap keping paket. Proses penghapusan ini dapat dilakukan berulang-ulang, setiap penghapusan memerlukan waktu kurang lebih selama 20 menit. Dengan demikian EPROM dapat diubah beberapa kali, dan seperti halnya ROM dan PROM, kemampuan menampung datanya boleh dianggap tak terhingga. Untuk daya tampung yang sepadan , EPROM lebih mahal dari PROM namun memiliki kelebihan akan kemampuannya untuk melakukan beberapa kali update. Tipe lain dari chip ROM menyediakan bahkan sebuah level yang lebih menarik. Dia mengijinkan data

Dasar Teknik Komputer 207 yang tersimpan untuk dihapus dan data yang baru dituliskan padanya. ROM yang dapat dihapus dan diprogram kembali tersebut biasanya dinamakan EPROM. Memori jenis ini menyediakan flexibilitas selama phase pengembangan dari sistem digital. Karena EPROM adalah dapat mempertahankan informasi yang tersimpan didalamnya untuk jangka lama, maka memori ini dapat digunakan untuk menggantikan ROM atau PROM sementara software sedang dikembangkan. Dengan cara ini, perubahan-perubahan memori dan update dapat dibuat dengan mudah. Sebuah sel EPROM mempunyai sebuah struktur yang serupa dengan sel ROM. Bagaimanapun, koneksi ke ground pada titik P dibuat melalui sebuah transistor khusus. Transistor tersebut adalah normalnya diset OFF, menciptakan sebuah switch yang terbuka. Oleh karenanya, sebuah sel EPROM dapat digunakan untuk mengkonstruksi sebuah memori dengan cara yang sama seperti sel ROM yang didiskusikan sebelumnya. Ini dapat dilakukan dengan mengekspose chip tersebut pada sinar ultraviolet, yang menghapus seluruh isi dari chips tersebut. Untuk membuat hal ini mungkin, chip-chip EPROM adalah dimounted dalam paket-paket yang mempunyai jendela-jendela yang transparan.

7.5.2.3. Flash Memory Bentuk memori semikonduktor yang paling baru adalah flash memori (dinamakan demikian karena kecepatannya yang dapat diprogram ulang). Diperkenalkan pertama kali pada tahun 1980-an, harga dan fungsionalitasnya flash memory berada berada diantara EPROM dan EEPROM. Seperti halnya EEPROM, flash memory menggunakan teknologi penghapusan elektris. Flash memory keseluruhan dapat dihapus dalam satu

208 Dasar Teknik Komputer

atau beberapa detik saja, yang jauh lebih cepat dibandingkan dengan EPROM. Selain itu, dimungkinkan juga penghapusan blok memori. Akan tetapi, flash memori tidak menyediakan penghapusan tingkat byte. Seperti EPROM, flash memory hanya memakai sebuah transistor per byte, karena itu akan diperoleh kepadatan tinggi dibandingkan EEPROM dan EPROM. Flash memory adalah suatu tipe EEPROM. Tidak seperti disk dan DRAM, tetapi seperti teknologi-teknlogi EEPROM lainnya, menulis dapat “wear out” bit-bit flash memory. Untuk mengatasi keterbatasan ini, sebagian besar produk-produk flash meliputi sebuah controller untuk menyebarkan penulisan dengan remaping block yang telah ditulis berkali-kali. ‘ to less trodden blocks”. Teknik ini disebut wear levelling.

7.5.2.4. Electrically Erasable PROM (EEPROM) Bentuk yang lebih menarik dari read mostly memory adalah EEPROM. Tipe lain dari EPROM yang dapat diprogram, dihapus dan diprogram kembali secara elektrik. EEPROM merupakan memori yang dapat ditulisi kapan saja tanpa perlu menghapus isi sebelumnya, hanya byte atau byte- byte yang beralamat yang akan diupdate. Operasi tulis (write) akan memerlukan waktu yang lebih lama dibanding operasi baca (read), sekitar beberapa ratus milidetik per byte. EEPROM menggabungkan kelebihan non-volatilitas dengan fleksibilitas kemampuan dapat diupdate; dengan menggunakan bus kontrol, alamat dan saluran data yang biasa. EEPROM lebih mahal dibanding EPROM dan juga lebih jarang, yaitu mendukung bit yang lebih sedikit pada kepingnya. Sebuah EPROM harus dipindahkan secara fisik dari rangkaian pemrograman kembali. Juga, informasi yang tersimpan tidak dapat dihapus secara

Dasar Teknik Komputer 209 selektif. Keseluruhan ini dari chip tersebut adalah dihapus ketika diekspose terhadap sinar ultraviolet. Chip yang demikian disebut EEPROM. Dia tidak harus dikeluarkan untuk penghapusan. Lebih jauh lagi, adalah mungkin untuk menghapus isi sel secara selektif. Satu kekurangan dari EEPROM adalah bahwa tegangan- tegangan yang berbeda adalah dipadukan untuk penghapusan, penulisan dan pembacaan data yang tersimpan, yang meningkatkan kompleksitas rangkaian. Bagaimanapun, kekurangan ini adalah ditutupi oleh banyaknya keuntungan- keuntungan dari EEPROM. Mereka telah banyak menggantikan EPROM dalam praktek.

7.6. Cache Memory Cache memory ditujukan untuk memberikan kecepatan memori yang mendekati kecepatan memori tercepat yang bisa diperoleh, sekaligus memberikan ukuran memori yang besar dengan harga yang lebih murah dari jenis-jenis memori semikonduktor. Konsepnya dijelaskan sebagai berikut. Terdapat memori utama yang relatif lebih besar dan lebih lambat dan cache memori yang berukuran lebih kecil dan lebih cepat. Cache berisi salinan sebagian memori utama. Pada saat CPU membaca sebuah word memori, maka dilakukan pemeriksaan untuk mengetahui apakah word tersebut terdapat pada cache. Bila sudah ada, maka word akan dikirimkan ke CPU. Sedangkan bila tidak ada, blok memori utama yang terdiri dari sejumlah word yang tetap akan dibaca kedalam cache dan kemudian akan dikirimkan ke CPU. Karena fenomena lokalitas referensi , ketika blok akan dijemput kedalam cache untuk memenuhi referensi memori tunggal, terdapat kemungkinan bahwa referensi selanjutnya akan menjadi word-word lainnya pada blok. Gambar dibawah menjelaskan

210 Dasar Teknik Komputer

struktur sistem cache/main memory terdiri sampai dengan 12푛 word beralamat, yang setiap word memiliki n bit buah alamat yang unik. Untuk keperluan pemetaan, memori ini dianggap terdiri dari sejumlah blok yang memiliki panjang tetap yang masing-masing bloknya memiliki K buah word. Dengan 2n demikian terdapat M = . Cache terdiri C buah slot yang K masing-masing slotnya mengandung K word, dan jumlah slot, atau garis, jauh lebih sedikit dibandingkan dengan jumlah blok memori utama (C << M), disetiap saat, sejumlah subset blok memori berada pada slot didalam cache. Bila sebuah word didalam blok memori dibaca, maka blok itu akan dipindahkan ke salah satu slot cache. Karena terdapat lebih banyak blok bila disbanding dengan slot, maka setiap slot tidak dapat menjadi unik dan permanen untuk didedikasikan ke blok tertentu. Akibatnya, setiap slot memiliki sebuah tag yang mengidentifikasikan blok tertentu mana yang sedang disimpan. Biasanya tag merupakan bagian alamat memori utama. Cache memory “owes” perkenalannya pada Wilkes “back” pada tahun 1965. Pada waktu itu, Wilkes membedakan antara dua tipe memory utama, yaitu memori konvensional dan memori slave. Dalam terminologi Wilkes, sebuah memory slave adalah sebuah level kedua dari memori konvensional dengan kecepatan tinggi, yang saat itu berkaitan dengan apa yang disebut cache memory (istilah cache berarti sebuah tempat yang aman untuk menyembunyikan atau menaruh sesuatu). Ide dibalik penggunaan sebuah cache sebagai level pertama dari hirarki memori adalah untuk menjaga informasi yang diharapkan digunakan lebih sering oleh CPU di dalam cache tersebut (sebuah memori keceil berkecepatan tinggi yang dekat dengan CPU). Hasil akhir adalah bahwa pada suatu waktu yang

Dasar Teknik Komputer 211 diberikan beberapa bagian yang aktif dari memori diduplikasi didalam cache. Oleh karenanya, ketika prosesor membuat permintaan untuk sebuah “memory reference”, permintaan tersebut adalah yang pertama dicari didalam cache. Jika permintaan tersebut berkorespondensi dengan sebuah elemen yang saat itu sedang berada (residing) didalam cache tersebut, kita menyebut itu adalah sebuah “cache hit”. Sebuah strategi yang berbeda adalah untuk menempatkan (position) sejumlah kecil memori dengan kecepatan yang tinggi , sebagai contoh. SRAM, diantara CPU dan main memory. Memori kecepatan tinggi ini adalah “invisible” terhadap programmer dan tidak dapat dialamati secara langsung dengan cara yang biasanya oleh CPU. Karena dia mematuhi sebua area penyimpanan yang rahasia, maka dia disebut cache memory. Cache memory adalah diorganisasikan secara berbeda daripada memori regular. Cache memory adalah diorganisasikan menjadi blok-blok. Setiap blok menyediakan sejumlah kecil penyimpanan, mungkin antara 8 dan 64 bytes, juga dikenal sebagai sebuah “cache line”. Blok tersebut akan digunakan untuk menyimpan (hold) sebuah “excat reproduction” dari sebuah corresponding amount of stotrage dari suatu tempat didalam memori utama. Setiap blok juga memegang (hold) sebuah “tag”. Tag tersebut mengidentifikasi lokasi di dalam memori utama yang berkoresonden dengan data yang sedang dipegang (held) pada blok tersebut. Dengan kata lain, diambil secara bersama, tag-tag tersebut bertindak sebagai sebuah directory yang dapat digunakan untuk mennentukan dengan tepat lokasi-lokasi storage yang umum dari memori utama adalah juga tersedia didalam cache memory tersebut. Sebuah cache memory tipikal 64 KB boleh jadi terdiri dari 8000 (actually 8192) blok-blok 8-byte.

212 Dasar Teknik Komputer

Sebagai sebuah pembantu (adjunct) terhadap memori utama, sebuah unit rAM yang lebih kecil dan lebih cepat , disebut sebuah cache, adalah digunakan untuk memegang (hold) sebagian (section) dari sebuah program yang saat ini sedang dieksekusi. Bersamaan dengan (along with) data yang berkaitan. Cache adalah “tightly coupled” dengan prosesor dan adalah biasanya terdapatn pada chip IC yang sama. Tujuan dari cache adalah untuk memfasilitasi rate-rate eksekusi instruksi yang tinggi. Pada awal dari eksekusi program, cache tersebut adalah kosong. Semua instruksi-instruksi program dan suatu data yang dibutuhkan adalah ditaruh pada memori utama. Ketika eksekusi sedang diproses, instruksi-instruksi adalah diambil dari (fetched into) chip prosesor, dan sebuah salinan dari masing-masingnya ditempatkan dalam cache. Ketika eksekusi dari sebuah instruksi memerlukan data yang berlokasi di dalam memori utama, data tersebut diambil dan salinan-salinannya juga ditempatkan di dalam cache. Sekarang, pertimbangkanlah sejumlah instruksi-instruksi dieksekusi secara berulang-ulang seperti yang terjadi didalam suatu loop program. Jika instruksi-instruksi ini tersedia didalam cache, mreka dapat diambil secara cepat selama periode pengulangan tersebut. Dengan cara yang sama, jika lokasi-lokasi data yang sama diakses secara berulang sementara salinan- salinan dari conten mereka tersedia didalam cache tersebut, maka mereka dapat diambil dengan cepat.

Dasar Teknik Komputer 213

Gambar 7.6. Cache memory

7.7. Virtual Memory Konsep virtual memory pada prinsipnya serupa dengan dengan konsep cache memory. Sebab sistem virtual memory mencoba mengoptimasi penggunaan dari memori utama (porsi kecepatan yang lebih tinggi) dengan hard disk (porsi kecepatan yang lebih rendah). Efeknya (in effect), virtual memory adalah sebuah teknik untuk penggunaan penyimpanan sekunder unuk meningkatkan ukuran dari memori fisik yang terbatas dan tampak melebihi (beyond) ukuran fisik aktualnya. Itu biasanya kasus bahwa space memori fisik yang tersedia tidak akan cukup untuk “host” semua bagian-bagian dari suatu program aktif yang diberikan. Bagian-bagian dari program yang saat ini aktif adalah dibawa ke memori utama sementara bagian-bagian yang tidak aktif akan ditaruh pada magnetic disk. Jika segmen dari program yang berisi data yang diminta oleh prosesor adalah tidak di memori utama pada saat permintaan, maka segmen semacam itu harus dibawa dari (brought from) disk ke memori utama. Prinsip-prinsip yang digunakan didalam virtual memory design adalah sama seperti yang digunakan dalam cache memory. Prinsip yang paling relevan adalah bahwa menjaga (keeping) segmen-segmen yang aktif pada memori utama yang berkecepatan tinggi dan memindahkan segmen-segmen yang tidak aktif kembali ke hard disk.

214 Dasar Teknik Komputer

Pemindahan data diantara disk dan memori utama mengambil bentuk halaman-halaman. Sebuah halaman adalah sekumpulan word-word memori, yang dapat dipindahkan dari disk ke main memory ketika prosesor meminta pengaksesan pada page tersebut. Sebuah ukuran page yang tipikal dalam komputer- komputer modern berkisar dari 2K hingga 16b Kbytes. Suatu kesalahan page terjadi ketika page yang berisi word yang diperlukan oleh prosesor tidak ada dalam memori utama MM dan harus dibawa dari disk. Perpindahan page-page dari program atau data diantara memori utama dan disk adalah “totally transparent” terhadap programmer aplikasi. Sistem operasi tersebut adalah bertanggung jawab untuk program dan pemindahan data semacam itu. Sebelumnya kita telah melihat bagimana cache menyediakan akses yang cepat terhadap bagian-bagian yang saat ini digunakan dari sebuah data dan program. Dengan cara yang sama, memori utama dapat bertindak sebagai sebuah “cache” untuk penyimpanan sekunder biasanya diimplementasikan dengan “magnetic disk”. Teknik ini disebut virtual memory. Secara historis, ada dua motivasi yang utama untuk virtual memory, yaitu : untuk memungkinkan (allow) sharing memori yang aman dan efisien diantara “multiple programs” , seperti misalnya untuk memori yang dibutuhkan oleh “multiple virtual machines” untuk cloud computing dan untuk memindahkan beban-beban (burdens) pemrograman dari jumlah sebuah memori utama yang kecil dan terbatas Kebanyakan sistem-sistem komputer modern menggunakan sebuah hard disk yang terbuat dari magnetic atau solid state storage sebagai level yang paling rendah di dalam hirarki memory. Dibandingkan dengn memory yang murah, cepat dan ideal besar, sebuah hard disk adalah besar dan murah tetapi sangat lambat (terribly slow). Dia menyediakan kapasitas yang

Dasar Teknik Komputer 215 jauh lebih besar daripada yang mungkin dengan sebuah memory utama yang cost effective (DRAM). Bagaimanapun, jika sebuah fraksi atau bagian yang penting dari akses memori meliputi (involve) hard drive tersebut, performansi adalah suram. Kamu boleh jadi telah menghadapi ini pada sebuah PC ketika menjalankan banyak program-program pada satu saat (at once). Tujuan penambahan sebuah hard disk pada hirarki memory adalah untuk memberikan ilusi secara tidak mahal dari sebuah memori yang sangat besar sementara masih menyediakan kecepatan dari memory yang lebih cepat untuk sebagian besar akses. Sebuah komputer yang hanya dengan DRAM sebesar 128 MB, sebagai contoh, dapat dengan efektif menyediakan memory 2 GB dengan menggunakan hard disk. Memory yang lebih besr 2 GB ini disebut sebagai virtual memory.

216 Dasar Teknik Komputer

BAB 8. SISTEM INPUT-OUTPUT (I/O)

8.1. Pendahuluan Input-output I/O memainkan sebuah peranan yang penting di dalam sebuah sistem komputer modern. Oleh karenanya, suatu pemahaman yang baik mengenai operasi-operasi I/O yang fundamental, perangkat-perankat dan interface-interfacenya adalah sangat penting. Perangkat-perangkat I/O bervariasi secara substansial dalam karakteristik-karakteristiknya. Satu faktor yang membedakan diantara perangkat-perangkat input dan juga perangkat-perangkat output adalah laju (rate) pemrosesan data mereka, yang didefinisikan sebagai jumlah rata-rata dari karakter-karakter yang dapat diproses oleh sebuah perangkat tiap detik. Sebagai contoh, laju pemrosesan data dari suatu peranmgkat input seperti misalnya keyboard adalah sekitar 10 karakter (bytes)/detik, sebuah scanner dapat mengirimkan data pada suatu rate sekitar 200.000 karakter/detik. Sementara itu, sebuah laser printer dapat mengeluarkan output data pada suatu rate sekitar sekitar 100.000 karakter/detik, dan sebuah display grafik dapat mengeluarkan data pada suatu rate sekitar 30.000.000/detik

Gambar 8.1.

Dasar Teknik Komputer 217 Ketika kita menekan sebuah karakter pada keyboard dari suatu komputer, maka akan menyebabkan sebuah karakter (dalam bentuk sebuah kode ASCII) dikrimkan pada komputer. Jarak waktu yang dilewatkan sebelum karakter berikutnya dikirimkan pada komputer akan sangat bergantung pada kemampuan dari user dan bahkan kadang-kadang bergantung pada kecepatan berfikirnya. Itu seringkali terjadi kasus bahwa user tahu apa yang ingin dia input, tetapi kadang-kadang mereka perlu berpikir sebelum menyentuh tombol berikutnya pada keyboard. Oleh karenanya, input dari sebuah keyboard adalah lambat dan “burst in nature” dan hal itu akan menghabiskan waktu bagi komputer untuk menghabiskan waktu yang bergunanya hanya untuk menunggu input dari perangkat– perangkat input yang lambat. Sebuah mekanisme oleh karenanya adalah diperlukan dimanapun sebuah perangkat harus menginetrupsi prosesor untuk meminta perhatian kapanpun dia siap. Mekanisme ini dinamakan komunikasi interrupt-driven diantara komputer dan perangkat-perangkat I/O. Pertimbangkanlah kasus dari sebuah piringan disk. Suatu priringan yang tipikal seharusnya mampu mentransfer data pada rate melebihi diatas beberapa juta bytes/detik. Itu akan membuang-buang waktu untuk mentransfer data byte by byte atau bahkan word by word. Oleh karenanya, itu menjadi suatu keharusan bahwa data adalah ditransfer dalam bentuk blok-blok, yaitu keseluruhan program. Adalah juga perlu untuk menyediakan suatu mekanisme yang memungkinkan seluruh piringan disk untuk mentransfer volume data yang besar ini tanpa intervensi dari CPU. Ini akan memungkinkan CPU tersebut untuk melakukan operasi-operasi yang berguna lainnya sementara sejumlah data yang besar sedang ditransfer diantara

218 Dasar Teknik Komputer

disk tersebut dan memori. Ini adalah esensi dari mekanisme direct memory access DMA.

8.2. Teknik-Teknik Dasar I/O Pada PC Seperti diketahui, disamaping CPU dan sejumlah modul memori, elemen penting ketiga sistem komputer adalah sejumlah modul I/O. Modul tersebut merupakan interface bagi sistem bus atau switch sentral dan mengontrol satu atau lebih perangkat peripheral. Modul I/O bukan hanya merupakan konektor mekanik sederhana yang menghubungkan suatu perangkat dengan sistem bus. Akan tetapi modul I/O berisi sesuatu yang cerdas, yaitu berisi logic untuk melakukan fungsi komunikasi antara peripheral dengan bus. Alasan tidak dihubungkannya peripheral dengan sistem bus secara langsung adalah :  Terdapat beraneka ragam peripheral yang memiliki bermacam-macam metode operasi, Maka akan tidak sangat praktis untuk menggabungkan logic tertentu kedalam CPU dengan maksud untuk mengontrol sejumlah perangkat.  Laju (rate) transfer data peripheral seringkali jauh lebih lambat dibandingkan dengan laju transfer data memori atau CPU. Jadi, tidaklah praktis menggunakan sistem bus berkecepatan tinggi untuk melakukan komunikasi langsung dengan peripheral.  Peripheral seringkali menggunakan format data dan panjang word yang berlainan dibandingkan dengan komputer yang disambungkan dengannya.

Dasar Teknik Komputer 219 Jadi diperlukan modul I/O. Modul ini memiliki dua buah fungsi yang utama, yaitu :  Sebagai interface ke CPU dan memori via sistem bus atau switch sentral  Sebagai interface ke sebuah perangkat peripheral atau lebih dengan menggunakan link data bersama

Istilah transfer data adalah perpindahan informasi antara CPU atau memori dan perangkat peripheral I/O. Transfer data tersebut pada umumnya dilakukan dengan satu word dalam setiap waktu. Dan pada dasarnya, ada dua jenis transfer data yang terjadi pada sistem komputer, yaitu : transfer dari perangkat input ke unit memori dan transfer dari memori ke perangkat output. Sementara teknik pelaksanaan transfer datanya sendiri ada dua macam, yaitu : transfer data melalui CPU yang merupakan metode perangkat lunak dan transfer data tanpa melalui CPU yang merupakan metode perangkat keras. Perbedaan utama antara metode perangkat lunak dan metode perangkat keras tersebut adalah perluasan pelibatkan unit CPU dalam operasi aktual transfer data. Pada metode perangkat lunak, tugas-tugas mengenai operasi-operasi I/O diimplementasikan dalam suatu program atau rutin yang dieksekusi oleh CPU. Sementara pada metode perangkat keras, program mendelegasikan tanggung jawab pelaksanaan operasi I/O ke unit perangkat keras lain yang disebut DMA controller. Ada dua langkah dalam metode perangkat lunak (software), misalnya untuk memindahkan sebuah byte data dari perangkat input, maka akan mengikuti proses-proses berikut, yaitu : langkah pertama membaca byte data dari perangkat input ke CPU kemudian langkah berikutnya memindahkan byte data dari CPU ke lokasi memori. Pada langkah tersebut diulangi untuk

220 Dasar Teknik Komputer

mentransfer setiap byte data. Semua proses tersebut dicapai dengan pemrograman CPU, yaitu dengan menggunakan instruksi-instruksi yang tepat. Oleh karena itu metode ini dinamakan juga sebagai metode parangkat lunak. Metode perangkat lunak ini diaplikasikan pada teknik Programmed I/O dan Interrupt-Driven I/O. Sementara pada metode perangkat keras (hardware), perangkat lunak CPU tidak terlibat secara aktual dalam proses transfer byte data. Perangkat lunak hanya melakukan inisiasi dengan menyediakan parameter-parameter awal tertentu ke perangkat keras dan selanjutnya perangkat keraslah yang melakukan transfer aktual byte data tanpa keterlibatan dan campur tangan lagi dari CPU. Metode perangkat keras ini diaplikasikan pada teknik direct memory access atau DMA. Kita mengenal tiga teknik dasar dalam memasukkan atau mengeluarkan data ke/dari suatu memori, programmed I/O (I/O terprogram), interrupt-driven I/O (I/O yang digerakkan interupsi) dan direct memory access DMA (akses memori secara langsung). Berikut ini adalah penjelasan masing-masing ketiga teknik I/O tersebut.

8.2.1. Programmed I/O Pada programmed I/O atau I/O terprogram, data saling dipertukarkan antara CPU dengan modul I/O. CPU mengeksekusi program yang memberikan operasi I/O kepada CPU secara langsung, termasuk status, perangkat pengindera, pengiriman protokol pembacaan atau penulisan data. Program atau rutin I/O masing-masing melakukan empat aktifitas untuk setiap byte data yang ditransfer, yaitu:

Dasar Teknik Komputer 221  Pembacaan status perangkat peripheral  Menganalisa apakah perangkat sudah siap untuk transfer data atau tidak.  Jika perangkat sudah siap, maka ke langkah selanjutnya untuk mentransfer data. Tetapi apabila perangkat tidak siap, maka kembali ke langkah pertama untuk looping sampai sampai kemudian perangkat siap untuk mentransfer data.  Melakukan transfer data dalam dua langkah. Untuk operasi input, prosesnya adalah dilakukan sebagai berikut, yaitu : pembacaan data dari perangkat input ke CPU dan kemudian penyimpanan data dalam suatu lokasi memori. Sementara untuk opersi output, prosesnya adalah sebagai berikut : pembacaan data dari memori ke CPU dan kemudian menyampaikan data tersebut ke perangkat output.

Gambar dibawah ini menunjukkan diagram alir transfer data pada programmed I/O. Pertama CPU memeriksa status perangkat (misalnya disk) dengan membaca suatu register khusus yang dapat diakses dalam memori, atau dengan menyampaikan instruksi I/O khusus.. Jika perangkat tidak siap dibaca atau ditulisi, maka proses loop akan kembali dan memeriksa status secara kontinu hingga perangkat tersebut siap. Keadaan menunggu ini disebut sebagai busy wait. Bila perangkat akhirnya sudah siap, maka transfer data dapat segera dilakukan antara perangkat dan CPU. Kemudian setelah proses transfer selesai, CPU memeriksa untuk melihat jika terdapat permintaan komunikasi lain untuk perangkat. Jika ada, maka proses diulang dan sebaliknya jika tidak ada CPU melanjutkan pekerjaaan lain.

222 Dasar Teknik Komputer

Gambar 8.2.. Diagram alir Programmed I/O (sumber : William Stallimg)

8.2.2. Interrupt-Driven I/O Pada programmed I/O, Ketika CPU mengeluarkan perintah ke modul atau perangkat I/O, maka CPU harus menunggu sampai operasi I/O yang masih berlangsung tersebut selesai. Apabila CPU lebih cepat dibandingkan modul I/O, maka hal ini tentu saja akan membuang-buang waktu CPU. Programmed I/O menggunakan instruksi-instruksi dalam memindahkan data dari atau ke CPU. Masalah yang dijumpai dalam programmed I/O adalah bahwa CPU harus menunggu modul I/O yang digunakan agar siap untuk menerima maupun

Dasar Teknik Komputer 223 untuk mengirimkan data dalam waktu yang relatif lama. Pada saat menunggu, CPU harus berulang-ulang menanyakan status modul I/O tersebut. Sehingga akibatnya, tingkat kinerja atau performa dari sistem secara keseluruhan mengalami penurunan yang tajam. Dengan menggunakan interrupt-driven I/O, CPU mengeluarkan perintah I/O, dilanjutkan dengan mengeksekusi instruksi-instruksi lainnya, dan interupsi oleh modul atau perangkat I/O dilakukan apabila instruksi-instruksi tersebut telah selesai dilaksanakan. Pada mode programmed I/O, status perangkat dipantau oleh perangkat lunak atau rutin I/O, sedangkan pada metode interrupt-driven I/O, perangkat lunak tidak menunggu sampai perangkat siap. Bahkan hardware pengendali perangkat (device controller) secara kontinu memantau status perangkat dan membangkitkan interupsi ke CPU segera ketika perangkat tersebut sudah siap untuk transfer data. Perangkat lunak segera menghentikan CPU. Setelah transfer byte data selesai, perangkat lunak atau rutin I/O tersebut melepaskan CPU untuk bebas melakukan program atau rutin lainnya. Bila interupsi berikutnya dibangkitkan lagi, maka rutin I/O mengambil alih kendali. Jadi pada interrupt mode, perangkat lunak CPU melakukan transfer data tetapi tidak terlibat dalam pengecekan apakah perangkat sudah siap untuk transfer data atau tidak. Dengan kata lain, langkah 1 sampai langkah 3 pada teknik programmed I/O didelegasikan ke perangkat keras pengendali perangkat (device controller). Jadi jelas, ini pemanfaatam CPU yang lebih baik. CPU dapat mengeksekusi program lain hingga interupsi diterima dari perangkat. Untuk operasi operasi transfer data pada interrupt mode, pengendali perangkat (device controller) harus mempunyai sejumlah intelegensi tambahan untuk pengecekan status

224 Dasar Teknik Komputer

perangkat dan pembangkitan sebuah interupsi kapanpun transfer data diperlukan. Hal ini menghasilkan rangkaian perangkat keras ekstra di dalam pengontrol. Mari kita perhatikan cara kerja dari interrupt mode diatas, pertama-tama dari sudut pandang modul I/O. Pada input, modul I/O menerima perintah READ dari CPU. Kemudian modul I/O memproses pembacaan data dari peripheral tertentu. Sekali data telah berada dalam register data modul, modul mengeluarkan sinyal interupsi ke CPU melalui saluran kendali (control). Kemudian modul akan menunggu hingga datanya diminta oleh CPU. Pada saat permintaan itu terjadi, modul menaruh datanya pada bus data dan modul akan siap melakukan pekerjaan lainnya. Sementara dari sudut pandang CPU, kegiatan input adalah sebagai berikut. CPU mengeluaran perintah READ. Keudian CPU berhenti mengeluarkan perintah dan melanjutkan pekerjaan lainnya (misalnya, CPU dapat mengerjakan beberapa program sekaligus). Pada akhir setiap siklus instruksi, CPU menerima interupsi. Ketika interupsi dari modul I/O terjadi, CPU menyimpan context program yang sedang dikerjakannya (atau program lainnya) dan melanjutkan eksekusi. Berikut ini adalah urutan atau langkah-langkah pelaksanaan pada teknik interrupt-driven I/O dan diagram alirnya:

Langkah 1. Pemberian command Langkah 2. Pelayanan interupsi Langkah 3. Pembacaan status. Langkah 4. Transfer data dari/ke memori Langkah 5. Pngiriman data ke/dari perangkat.

Dasar Teknik Komputer 225

Gambar 8.3.. Diagram alir Interrupt-Driven I/O (sumber : William Stalling)

8.2.3. Direct Memory Access (DMA) Meskipun I/O terprogram merupakan cara yang terlambat diantara ketiganya, akan tetapi cara ini dipakai dalam sistem mikroprossor yang lebih sederhana, karena pada sistem ini segi kecepatan tidak diutamakan. Sementara itu, walaupun lebih efisien dibandingkan dengan dengan programmed I/O yang sederhana, teknik Interrupt-Driven I/O masih memerlukan

226 Dasar Teknik Komputer

campur tangan CPU secara aktif untuk melakukan transfer data antara memori dengan modul I/O. CPU bertanggungjawab atas pengeluaran data dari memori utama untuk keperluan output dan penyimpanan data di dalam memori utama untuk keperluan input. Jika data hanya dapat diolah kedalam atau keluar memori melalui CPU, maka prosesor memakai waktu lebih banyak waktu lagi untuk melayani perangkat-perangkat eksternal, seperti disk drive diabanding dengan pelaksanaan program. Jadi, kedua teknik I/O tersebut mengalami dua hal yang menggangu, yaitu :  Laju transfer I/O dibatasi oleh kecepatan yang pada kecepatan tersebut CPU dapat menguji dan melayani perangkat.  CPU ditentukan oleh pengaturan transfer I/O; sejumlah instruksi harus dieksekusi bagi setiap transfer I/O nya.

Terdapat semacam trade-off antara kedua masalah ini. Misalkan suatu transfer blok data. Dengan menggunakan programmed I/O yang sederhana, CPU didedikasikan untuk tugas I/O dan dapat memindahkan data dengan laju yang lebih tinggi, tetapi dengan resiko tidak dapat mengerjakan tugas dan pekerjaan lainnya. Sementara interrupt-driven I/O membebaskan CPU dengan mengorbankan laju transfer I/O. Walaupun begitu, kedua metode tersebut memiliki dampak yang buruk terhadap aktifitas CPU dan laju transfer I/O. Ketika data yang bervolume besar akan dipindahkan, tentu saja diperlukan teknik yang lebih efisien untuk mengatasi kekuranan-kekuranhan tersebut diatas. PC dirancang agar dapat dikembangkan dan dihubungkan dengan peralatan yang mampu mengolah data dengan kcepatan lebih tinggi. Untuk menghindari keterbatasn kinerja semacam ini, maka PC menggunakan DMA.

Dasar Teknik Komputer 227 Apabila sistem bertambah komplek, pendekatan interrupt menjadi suatu keharusan. Dalam kebanyakan sistem yang lebih maju, DMA sangat diperlukan karena ia merupakan satu-satunya cara yang dapat mentransfer data yang berjumlah besar dalam waktu yang singkat. Direct Memory Access DMA adalah suatu metode yang dipakai sistem untuk mentransfer blok data ke atau dari memori secara langsung tanpa melibatkan CPU. Pada teknik atau metode tersebut perangkat modul I/O dan memori utama (main memory) saling bertukar data secara langsung, tanpa melibatkan atau campur tangan CPU. DMA meliputi modul-modul tanbahan pada bus sistem dimana modul tersebut mampu menirukan CPU, bahkan mengambil alih sistem kendali (control system) dari CPU. Pada DMA mode, perangkat lunak hanya melakukan inisiasi yang melibatkan pengiriman command ke DMA controller dan pengendali perangkat (device controller). Sementara operasi aktual yang berhubungan dengan transfer byte data dilakukan langsung oleh DMA Controller yang merupakan unit hardware tersendiri dan independen. DMA controller dapat mengakses memori untuk operasi pembacaan atau penulisan tanpa bantuan dari CPU. Device controller meminta DMA controller bahwa satu byte akan ditransfer (antara memori dan pengontrol divais) pengganti interupsi CPU. Pada saat CPU ingin membaca atau menulis data, CPU (perangkat lunak) mengeluarkan perintah ke modul DMA, dengan mengirimkan ke DMA controller informasi-informasi atau patameter-parameter berikut :  Read atau Write yang diminta  Alamat perangkat I/O yang dilibatkan  Lokasi awal dalam memori untuk membaca atau menulis  Jumlah byte atau word yang akan dibaca atau ditulis  Arah : input atau output

228 Dasar Teknik Komputer

Kemudian CPU melanjutkan pekerjaan lainnya. CPU telah mendelegasikan operasi I/O ini kepada modul DMA, dan modul tersebut yang akan menjalankan tugasnya. Modul DMA memindahkan seluruh blok data, word per word, secara langsung ke memori atau dari memori tanpa harus melalui CPU. Ketika pemindahan ini telah selesai, modul DMA akan mengirimkan sinyal interupsi ke CPU. Sehingga CPU hanya akan dilibatkan pada awal dan akhir pemindahan saja. Modul DMA perlu mengambil kendali bus agar dapat memindahkan data ke memori dan dari memori. Untuk itu modul DMA seharusnya menggunakan bus bila CPU tidak memerlukannya, atau DMA harus memaksa CPU agar menghentikan dulu operasinya secara sementara.

Gambar 8.4.. Diagram alir Direct Memory Access (sumber : William Stalling)

Alamat awal memori menetapkan lokasi memori darimana byte data disimpan atau dibaca. Jumlah byte menetapkan jumlah byte yang akan ditransfer. Sementara arah menetapkan apakah transfer data tersebut adalah input atau output. Operasi input melibatkan penerimaan data dari pengendali perangkat (device controller) dan penulisannya pada

Dasar Teknik Komputer 229 memori. Operasi output melibatkan pembacaan data dari memori dan pensuplaiannya ke pengendali perangkat. Terlepas dari penyampaian parameter-parameter DMA ke DMA controller tersebut, perangkat lunak juga memberikan suatu command dan parameter-parameter command yang relevan ke device controller. Misalnya untuk membaca data dari floppy diskette, command “READ” ditransmisikan ke floppy disks controller beserta parameter-parameter command yang relevan seperti nomor track, nomor side (head), nomor awal sektor dan nomor akhir sektor. DMA controller mempunyai register yang menyimpan parameter-parameter DMA yang ditawarkan oleh perangkat lunak. Ketika parameter DMA diterima, DMA controller siap untuk mentransfer data tetapi inisiatif berasal dari perangkat (devices). Sebagaimana telah diuraikan sebelumnya, CPU dapat menyerahkan kendali sistem busnya kepada DMA controller untuk suatu ooerasi transfer I/O yang berkecepatan tinggi. Dengan cara ini, data yang berjumlah besar dapat dipindahkan dalam waktu yang relatif singkat. DMA adalah merupakan metode yang tercepat dari operasi I/O. CPU menyerahkan kendali dari sistem busnya kepada DMA controller, yaitu suatu serpih yang dioptimasi untuk transfer data berkecepatan tinggi dari perangkat peripheral ke memori atau sebaliknya. Instruksi IN merupakan cara yang biasa dalam memasukkan data dari perangkat-perangkat peripheral. Akumulator ikut terlibat dalam operasi ini karena akumulator menerima data masukan tersebut. Demikian pula, instruksi OUT memindahkan data dari akumulator ke perangkat-perangkat keluaran. Dalam kedua hal diatas, akumulator selalu berfungsi sebagai go-between atau perantara/penghuubung. Suatu cara

230 Dasar Teknik Komputer

pemindahan data dari memori ke perangkat peripheral adalah dengan menggunakan instruksi MOV dan instruksi-instruksi I/O. Misalnya untuk memindahkan data 256 byte dari memori ke suatu perangkat keluaran, kita dapat menggunakan sebuah loop yang mengandung instruksi MOV A,M dan instruiksi OUT. Pendekatan ini memang dapat memnuhi sasaran, akan tetapi sangat lambat bilamana proses tersebut menyangku data yang berjumlah besar. Pendekatan yang dibahas diatas dinilai lambat karena dua alasan. Pertama, akumulator bertindak sebagai suatu stasion pertengahan jalan dalam setiap transfer data dari memori ke I/O, atau sebaliknya. Kedua, CPU dimikroprogram, yang berarti bahwa mikroinstruksi harus dibaca dari ROM kendali. Waktu akses dari ROM kendali ini akan lebih memperlambat proses transfer. Transfer data DMA dapat berlangsung lebih cepat karena fungsi akumulator sebagai stasiun pertengahan jalan telah dihapus dan data dari memori dipindahkan langsung ke perangkat peripheral atau sebaliknya. Juga DMA controller mempunyai sistem pengendalian perangkat keras sebagai pengganti mikroprosesor. Sinyal-sinyal kendali HOLD dan HLDA digunakan dalam operasi-operasi DMA. Apabila DMA controller telah siap mengambil alih kendali, pengendali ini akan mengirimkan sinyal HOLD tinggi ke CPU. Kemudian CPU mengambangkan bus alamat, bus data dan bus kendalinya. Mikroprosesor juga mengirimkan HLDA tinggi (Hold acknowledge) ke DMA controller yang menunjukkan bahwa CPU kini telah menyerahkan kendali. DMA controller melangsungkan pemindahan data dengan kecepatan yang tinggi dan kemudian kendali diserahkan kembali kepada CPU dengan pengiriman sinyal HOLD yang rendah.

Dasar Teknik Komputer 231 BAB 9. KONSEP DASAR BUS

9.1. Pendahuluan Bus adalah Jalur yang menghubungkan semua expansion card ke mikroprosesor. Bus inilah yang menghubungkan setiap komponen, sarana dan memori ke mikroprosesor. Tujuan dari bus adalah untuk mentransfer data dari atau ke mikroprosesor atau dari satu komponen ke komponen yang lain pada sebuah komputer. Transfer data tersebut dibantu oleh sebuah perangkat yang disebut sebagai DMA controller, yang merupakan chip khusus yang digunakan untuk mentransfer data langsung ke dan dari memori. Data masuk ke komputer melalui input (keyboard, mouse, disk drive, modem dll) dan mengalir masuk ke memori utama (RAM, ROM). Selanjutnya dari memori utama kembali ke bus menuju CPU, dan di CPU inilah data tadi akan diproses dan diolah sampai selesai. Kemudian CPU akan mengirimkan data yang telah diproses kembali ke memori utama. Langkah diatas baiasanya diulang-ulang beberapa kali. Dan setelah data tersebut menjadi sebuah informasi kemudian dikirimkan dari memori utama ke bagian keluaran (output) melalui bus.

9.2. Konfigursai Bus Mikroprosesor Untuk mencapai suatu kecepatan operasi yang reasonable, sebuah komputer harus diorganisasikan sehingga semua unitnya dapat menangani satu word data yang penuh pada suatu waktu yang diberikan. Ketika sebuah word data ditransfer diantara unit- unit, semua bit-bitnya ditransfer dengan cara paralel, yaitu, bit- bit tersebut adalah ditransfer secara simultan sepanjang banyaknya kawat atau saluran, dimana satu bit pada setiap

232 Dasar Teknik Komputer

saluran. Sekelompok saluran yang berlaku sebagai sebuah jalur penghubung untuk beberapa perangkat tadi disebut sebagai bus. Dan selain saluran-saluran yang membawa data, bus tersebut juga harus mempunyai saluran-saluran untuk membawa alamat (address) dan juga sinyal kendali (control). Bus data (data bus) adalah bus yang digunakan untuk mengirimkan data dari memori ke mikroprosesor atau sebaliknya. Kemudian bus alamat (address bus) adalah bus yang digunakan untuk mengidentifikasi lokasi memori yang dipakai. Sementara bus kendali (control bus) adalah digunakan untuk mengirimkan sinyal-sinyal control dari unit kendali atau control unit (CU). Bus data (data bus) dan bus alamat (address bus) adalah dirangkai paralel sehingga berjalan berdampingan. Sebelum data disalurkan, sinyal disalurkan terlebih dadulu ke alamat tujuan melalui bus data tersebut. Tempat penerima data diberitahu bahwa data siap untuk dikirmkan. Kemudian mikroprosesor mengecek apakah sinyal sudah siap, bila sudah siap maka mikroprosesor akan membaca data dari memori. Selanjutnya mikroprosesor mengirimkan sinyal ke lokasi memori di bus alamat. Berikutnya data yang telah dibaca tadi kemudian disalurkan sepanjang bus data. Pengiriman sinyal dan pembacaan tadi diatur oleh bus kendali (control bus).

Gambar 9.1. Konfigurasi bus mikroprosesor tipikal (sumber : Mark Balch)

Dasar Teknik Komputer 233 Seperti yang ditunjukkan pada gambar 9.1 di atas, sebuah mikroprosesor dihubungkan ke perangkat-perangkat memori (RAM, ROM) dan I/O melalui bus data (data bus) dan bus alamat (address bus). Secara kolektif, kedua bus-bus tersebut dapat dirujuk sebagai bus mikroprosesor. Sebuah mikroprosesor 8 bit, yang beroperasi pada satu byte setiap waktu, hampir selalu mempunyai sebuah bus data 8 bit. Sementara sebuah mikroprosesor 32 bit, yang sanggup mengoperasikan hingga empat byte setiap waktu, dapat mempunyai sebuah bus data 32, 16 atau 8 bit (lebarnya). Sebuah lebar bus yang lebih sempit berarti bahwa bus tersebut akan menggunakan lebih banyak waktu untuk mengkomunikasikan sebuah kuantitas data dibandingkan dengan bus yang lebih lebar. Notasi yang umum digunakan untuk bus data adalah 퐃[ퟕ: ퟎ] untuk sebuah bus 8 bit dan 퐃[ퟑퟏ: ퟎ] untuk sebuah bus 32 bit, dimana 0 adalah merupakan bit yang paling kurang signifikan (the least-significant bit). Dan jika sebuah mikroprosesor mempunyai sebuah bus alamat 16 bit, maka dia dapat mengalamati hingga 216 = ퟔퟓ. ퟓퟑퟔ bytes. Oleh karenanya, dia mempunyai sebuah ruang alamat (address space) 64 KB. Keseluruhan address space tersebut tidak selalu harus digunakan sementara notasi yang umum dipakai untuk sebuah bus alamat 16 bit adalah 퐀[ퟏퟓ: ퟎ], dimana 0 adalah merupakan the least significant bit. Cara yang paling sederhana untuk menginterkoneksikan unit-unit fungsional dari sistem komputer adalah dengan menggunakan sebuah bus tunggal. Dimana semua unit adalah dihubungkan dengan bus ini. Karena bus tersebut dapat digunakan hanya untuk satu transfer pada satu saat, maka hanya dua unit yang dapat menggunakan secara aktif bus tersebut pada suatu waktu yang diberikan. Saluran-saluran bus kendali atau

234 Dasar Teknik Komputer

control bus adalah digunakan untuk mengarbitrasi bermacam- macam request untuk penggunaan bus tersebut. Hal yang baik dan utama dari struktur bus tunggal ini adalah harganya yang rendah dan fleksibilitasnya untuk menaruh perangkat-perangkat peripheral. Sementara sistem-sistem yang berisi bus ganda (multiple bus) mencapai lebih “concurrency” di dalam operasi- operasi dengan mengijinkan dua atau lebih transfer untuk dilakukan pada waktu yang sama. Hal ini membawa performansi yang lebih baik tetapi tentu saja pada harga yang ditingkatkan. Perangkat-perangkat yang dihubungkan pada sebuah bus sangat bervariasi terutama dalam hal kecepatan operasi mereka. Beberapa perangkat elektromekanik, seperti misalnya keyboard dan printer adalah relatif lambat. Sementara yang lainnya seperti disk optic atau disc magnetic, adalah jauh lebih cepat. Unit-unit memori dan prosesor beroperasi pada kecepatan-kecepatan elektronik, menjadikan mereka bagian-bagain yang paling cepat dari sebuah komputer. Karena semua perangkat-perangkat tersebut harus saling berkomunikasi satu sama lain sepanjang sebuah saluran atau bus, maka sebuah mekanime transfer yang efisien yang tidak dibatasi oleh perangkat-perangkat yang lambat dan yang dapat digunakan untuk melancarkan perbedaan- perbedaan dalam pewaktuan diantara prosesor, memori dan perangkat eksternal adalah penting. Sebuah pendekatan yang umum digunakan adalah dengan melibatkan register buffer dengan perangkat-perangkat untuk menahan informasi selama proses transfer. Untuk mengilustrasikan teknik ini, pertimbangkanlah transfer dari suatu karakter yang disandikan dari sebuah prosesor pada sebuah printer karakter. Prosesor tersebut mengirimkan karakter tersebut sepanjang bus pada buffer printer. Karena buffer adalah suatu register elektronik, transfer tersebut memerlukan waktu yang

Dasar Teknik Komputer 235 relatif kecil. Sekali setelah buffer dimuati (loaded), maka printer tersebut dapat memulai proses pencetakan tanpa campur tangan yang lebih jauh lagi dari prosesor tersebut. Bus dan prosesor tersebut adalah sudah tidak diperlukan lagi dan oleh karenanya dapat dirilis atau dilepas untuk aktifitas dan pekerjaan yang lain. Printer tersebut kemudian melanjutkan proses pencetakan karakter di dalam buffernya. Gambar berikut ini adalah sebuah contoh konfigurasi bus yang digunakan pada komputer dengan mikroprosesor Pentium 4.

Gambar 9.2. Contoh konfigurasi bus pada komputer Pentium 4 (sumber : Andrew S. Tanenbaum)

236 Dasar Teknik Komputer

9.3. Beberapa Standar Bus Pada PC Beberapa bus yang popular diantaranya adalah bus ISA, PCI dan USB. Bus ISA adalah ekspansi yang paling sederhana dari bus PC IBM original. Untuk alasan ‘backward compatibility”, bus ini masih ada di semua PC berbasis intel hingga beberapa tahun yang lalu hingga akhirnya Intel dan Microsoft sepakat untuk menghilangkannya (eliminate). Ketika IBM memperkenalkan PC/AT berbasis 80286 dia merupakan sebuah bus 16 bit yang sama sekali baru, banyak customer- customer potensial yang akan ragu-ragu untuk membelinya karena tak ada dari “vast number” dan board-board PC plug-in tersedia dari vendor-vendor pihak ketiga yang akan bekerja sama dengan menggunakan mesin yang baru. Disisi lain, “sticking” dengan PC bus dan 20 saluran-saluran alamatnya dan 8 salurnan- saluran data tidak akan menguntungkan dari kemampuan 80286 untuk mengalamati 16 MB memori dan transfer word 16b-bit. Kemudian bus ISA ditingkatkan lagi menjadi 32-bit dengan beberapa fitur-fitur baru, misalnya untuk multiprosesing. Bus baru tersebut dinamakan EISA (Extended ISA). Berikutnya yaitu bus PCI. Bus PCI lebih lebar daripada bus ISA dan berjalan pada sebuah yang lebih tinggi. Konsekwensinya tentu saja bus ini dapat membawa lebih banyak data setiap detik daripada bus ISA. Sementara USB, pada awalnya adalah sebuah I/O yang sangat popular untuk peripheral-peeripheral dengan kecepatan rendah seperti misalnya mouse dan keyboard. Kemudian USB pada versi-versi nerikutnya adalah berjalan pada kecepatan yang telah ditingkatkan (lebih tinggi). Berikut ini adalah standard-standar I/O yang digunakan di dalam personal computer (PC). Sementara pada gambar 9.3 dibawah ditunjukkan sebuah motherboard pada PC dengan

Dasar Teknik Komputer 237 prosesor Core i5 atau i7. Motherboard tersebut terdiri dari slot- slot modul memory DRAM, bermacam-macam konektor- konektor perangkat I/O, konektor power supply, voltage regulator dan kapasitor. Sepasang modul DRAM dihubungkan melalui sebuah interface DDR3. Peripheral eksternal seperti misalnya keyboard atau webcam di-attach (dipasang) melalui USB. Expansion cards dengan performa tinggi seperti misalnya kartu grafis (graphic cards) dihubungkan melalui slot PCI Express x16, sementara kartu-kartu dengan performa yang rendah (lower performance cards) dapat menggunakan PCI Express x1 atau slot PCI yang lebih lama. PC dihubungkan dengan jaringan menggunakan jack Ethernet sementara hard disk dihubungkan dengan sebuah port SATA.

Gambar 9.3. (sumber : David M. Harris)

238 Dasar Teknik Komputer

9.3.1. Bus PCI dan PCI Express Bus PCI (peripheral Component Interconnect) adalah sebuah expansion bus standard yang dikembangkan oleh Intel sehingga menjadi tersebar luas sekitar tahun 1994. Bus tersebut digunakan untuk menambah expansion card seperti extra serial atau port USB, interface-interface jaringan, sound cards, modems, disk controller atau video cards. Bus parallel 32-bit beroperasi pada 33 MHz, memberikan sebuah bandwidth sebesar 133 MB/s. Kebutuhan untuk expansion cards PCI telah “ steadily declined “. Port-port yang lebih standard seperti misalnya Ethernet dan SATA adalah sekarang terintegrasi kedalam motherboard. Banyak perangkat-perangkat yang semuala memerlukan sebuah expansion card sekarang dapat dihubungkan melalui sebuah USB 2.0 yang cepat atau USB 3.0 link. Dan video card sekarang memerlukan bandwidth jauh lebih banyak yang mana PCI dapat dapat suplai atau berikan. Motherboard- motherboard kontemporer seringkali masih mempunyai sejumlah kecil slot PCI, tetapi untuk perangkat-perangkat yang cepat seperti misalnya video cards adalah sekarang dihubungkan melalui PCI Express (PCIe). Slot-slot PCI Express menyediakan satu atau lebih saluran dari link-link serial berkecepatan tinggi. Pada PCIe 3.0 setiap saluran (lane) beroperasi hingga 8 Gb/s. Kebanyakan motherboard menyediakan sebuah slot x16 dengan 16 lane yang memberikan total bandwidth 16 Gb/s untuk perangkat-perangkat yang haus data (data-hungry) seperti misalnya video cards.

9.3.2. USB Hingga pertengahan tahun 1990-an, penambahan sebuah peripheral ke sebuah PC menggunakan beberapa kecerdasan teknis. Untuk menambahkan expansion card dibutuhkan ruang

Dasar Teknik Komputer 239 casing yang lebih besar, mensetting jumper pada posisi yang tepat, dan menginstall sebuah sebuah device driver secara manual. Penambahan sebuah perangkat RS 232 perlu memilih kabel yang tepat dan mengkonfigurasi secara tepat baud rate, dan data, parity dan stop bits. USB, standar bus yang dikembangkan oleh Intel, IBM, Microsoft dan lainnya, menyederhanakan penabahan peripheral tersebut dengan menstandarisasikan kabel dan proses konfigurasi software. Bermilyar-milyar peripheral USB sekarang terjual setiap tahunnya. USB 1.0 direlease pada tahun 1996. Standar bus tersebut menggunakan sebuah kabel yang sederhana dengan empat kawat : 5V, GND dan sebuah pasangan kawat yang berbeda untuk membawa data. Kabel tersebut adalah tidak mungkin plug in backward atau upside down. Dia beroperasi hingga 12 MB/s. Sebuah perangkat dapat pull up hingga 500 mA dari port USB, karenanya keyboard, mouse dan peripheral-peripheral yang lainnya mendapatkan dayanya dari port bukannya dari batere atau sebuah kabel power yang terpisah. USB 2.0 direlease pada tahun 2000 dengan kecepatan yang diupgrade hingga 480 Mb/s dengan menjalankan kawat-kawat yang terpisah jauh lebih cepat. Dengan link yang lebih cepat, USB menjadi praktis untuk memasang (attach) webcam dan hardisk eksternal. Flash memory sticks dengan interface USB juga menggantikan floppy disks sebagai sebuah alat untuk transfer file diantara komputer- komputer USB 3.0 direlease pada tahun 2008 dengan kecepatan yang ditingkatkan hingga 5 Gb/s. Menggunakan bentuk konektor yang sama, tetapi mempunyai lebih banyak kawat yang beroperasi pada kecepatan yang sangat tinggi. Cocok digunakan untuk menghubungkan hard disk dengan performansi yang tinggi.

240 Dasar Teknik Komputer

Pada waktu yang sama, USB menambahkan spesifikasi charging batere sehingga meningkatkan power yang disuplai pada port untuk mempercepat pengisian muatan (charging) perangkat-perangkat mobil.

Dasar Teknik Komputer 241 DAFTAR PUSTAKA

Balch Mark. 2003. Complete Digital Design. USA : The McGraww-Hill Companies, Inc. Brey Barry B. 2009. The Intel Microprocessor: Architecture, Programming and Interfacing. USA. Pearson Education, Inc. Ceruzzi Paul E. 1998. A History of Modern Computing. USA. The MIT Press. Englander Irv. 2009. The Architecture Of Computer Hardware : System Software And Networking. USA : John Wiley & Sons, Inc. Harris David Money dan Harris Sarah L. 2013. Digital Design And . USA: Harris Elsevier, Inc. Maini Anil K. 2007. Digital Electronic : Principles, Devices and Applications. England: John Wiley & Sons, Ltd. Stallings William. 2016. Computer Organization And Architecture: Designing ForPerformance. USA: Pearson Education, Inc. Tanenbaum Andrew S. 2006. Structured Computer Organization. USA : Pearson Education, Inc.

242 Dasar Teknik Komputer

DAFTAR ISTILAH

Access Time (Dalam memori) berarti lama pengaksesan data setelah alamat memori dispesifikasi. (Dalam disk drive) berarti lama rata-rata head berpindah ke track atau silinder tertentu.

Address Biangan yang menyatakan sebuah lokasi memori.

Address Bus Bagian dari sebuah sistem bus yang digunakan untuk mentransfer sebuah alamat. Secara khas, alamat menetapkan sebuah lokasi memori utama atau sebuah perangkat I/O (input/ouput). Sekumpulan lintasan/jalur konduktor yang digunakan untuk menghantarkan sinyal-sinyal alamat.

Algoritma Sebuah prosedur atau formula yang digunakan untuk menyelesaikan suatu masalah.

Arsitektur Harvard Disain arsitektur komputer dengan penyimpanan instruksi dan data pada memori terpisah secara fisik.

Arsitektur Von Neumann Disain arsitektur komputer dimana program komputer tersimpan di memori, instruksi dan data tidak dapat diambil pada saat yang sama karena mereka berbagi bus umum.

Dasar Teknik Komputer 243 Assembler Suatu program yang mentranslasikan (nmenterjemahkan) program bahasa assembly (bahasa rakitan) menjadi bahasa mesin versi biner.

ALU (Arithmetic and Logical Unit) Circuit CPU dimana operasi aritmatika dan logika dikerjakan dan operasi-operasi yang berhubungan.

ASCII (American Standard Code for Information Interchange) Skema pengkodean 8-bit untuk karakter-karakter yang digunakan pada semua personal computer (PC).

Bahasa Assemby Representasi simbolik dari instruksi-instruksi mesin yang unik pada setiap prosesor.

Bahasa Mesin Representasi biner dari instruksi-instruksi mesin.

Bahasa Tingkat Tinggi Sebuah bahasa yang sifatnya portable seperti C, C++, Java atau Visual Basic yang berisi kata-kata dengan notasi aljabar yang dapat ditranslasikan atau diterjemahkan oleh sebuah compiler menjadi bahasa assembly.

Biner Bertanda Suatu sistem penulisan bilangan biner dengan bit yang terdepan mengungkapkan tanda bilangan dan bit-bit sisanya menyatakan besarnya (magnitudo) bilangan. Disebut juga bilangan tanda- magnitudo.

244 Dasar Teknik Komputer

BIOS (Basic Input Output Control System) Kumpulan I/O driver (program untuk plaksanaan operasi-operasi I/O) untuk berbagai perangkat peripheral dalam computer.

Bit Bit, yang merupakan singkatan dari binary digit, adalah unit atau satuan untuk sebuah sinyal biner, yang berkoresponden dengan sebuah unit data digital tunggal yang mempunyai nilai "1" atau "0". Satuan ini sangat umum digunakan sebagai unit terkecil di dalam teknologi informasi. Sinyal-sinyal logika "1" dan logika "0" adalah biasanya direpresentasikan dengan sinyal-sinyal tegangan dengan level yang berbeda. Level-level tegangan yang digunakan tersebut bergantung kepada tipe interface yang digunakan.

Bit Addressable Ruang memori (memory space) dalam RAM internal dan area SRF (special function register) yang mengijinkan pengalamatan bit secara individu.

Dasar Teknik Komputer 245 Buffer Memori penyangga pada printer untuk menampung data yang akan dicetak agar memori yang ada dipakai dulu oleh komputer.

Bus Sekumpulan kawat atau koneksi yang menghubungkan CPU, memori dan port-port I/O yang berfungsi untuk melakukan komunikasi atau transfer data.

Byte Istilah byte adalah diperkenalkan untuk sebuah unit atau satuan dengan 8 karakter biner, sebagai contoh, status-status sinyal 8 input logika atau output logika apabila dikombinasikan menjadi sebuah input atau output byte. Sebagai contoh 64 bit = 8 byte, 72 bit = 9 byte. 1 KB = 1024 byte dan 1 MB = 1024 KB.

Cache Memory Sebuah memory kecil, cepat yang bertindak seperti sebuah buffer atau penyangga untuk memori yang lebih lambat dan besar. Memori cepat yang dipakai untuk menmpung salinan data yang disimpan disarana yang lebih lamban. Disk cache dipakai untuk mempercepat pengaksesan disk. Prosesor yang cepat sering memakai memori cache, karena memori standard terlalu lama atau laambat untuk mempercepat semua operasi. Tempat data sementara yang sering digunakan atau diakses. Macam cache memori yaitu : internal, eksternal dan disk cache memory.

246 Dasar Teknik Komputer

Internal cache memory sudah terpasang dalam mikroprosesornya, yaitu pada mikroprosesor intel 486 sebesar 8KB, untuk 486DX2 dan 486DX4 sebesar 16 KB.External cache memory, memory yang ditambahkan biasanya untuk mikroprosesor 486DX2, 486DX4 sebesar 256 KB dan untuk Pentium sebesar 512 KB, tetapi orang menambahkan hingga 1 MB. Sementara disk cache adalah cache yang disimpan didalam hard disk.

CD (Compact Disk) Sebuah disk yang tidak dapat dihapus yang menyimpan audio yang digitalisasi.

CISC (Compleks Instruction Set Computer) Sistem komputer dimana instruksi tunggal dapat menjalankan beberapa opersi level rendah (seperti melakukan load dari memori, operasi aritmatika dan penyimpanan memori) dan /atau mampu melakukan operasi multi-langkah atau mode pengalamatan dalam instruksi tunggal.

Clock Register penghasil detak yang dihubungkan ke seluruh komponen . Sinyal listrik gelombang kotak yang kontinu dan periodik yang digunakan untuk sinkronisasi operasi sistem komputer.

Compiler Paket perangkat lunak yang mengubah program bahasa tingkat tinggi menjadi kode-kode bahasa mesin.

Dasar Teknik Komputer 247 CU (Control Unit) Bagian yang mengendalikan jalannya seluruh komputer/prosesor. Bagian dari CPU yang mengontrol operasi CPU, termasuk operasi ALU, memindahkan data dalam CPU, dan mempertahankan data dan sinyal-sinyal control melalui antarmuka eksternal.

Conventional Memory Memori yang dapat dialamati 1 MB pada PC 8088/8086.

Control Bus Sekumpulan jalur konduktor yang digunakan untuk menghantarkan sinyal-sinyal control, misalnya sinyal baca, sinyal tulis, enable/ready dll.

CPI (Clock ) Rata-rata dari jumlah siklus cklock per instruksi untuk sebuah program atau potongan program.

Data Bus Sekumpulan lintasan/ jalur konduktor yang digunakan untuk menghantarkan sinyal-sinyal data.

Datapath Komponen prosesor yang melakukan operasi aritmatika.

Device Driver Program yang menangani transfer data dari atau ke memori.

DRAM (Dynamic RAM) Chip RAM yang bekerja dinamis karena dapat memulihkan berkurangnya muatan listrik pada kapasitor di RAM. Kapasitor RAM digunakan untuk menyimpan listrik tetapi listrik yang

248 Dasar Teknik Komputer

disimpannya tak tahan lama mudah hilang karena itu perlu charge lagi. Chip RAM, menampung informasi hanya jika informasi ditulis ulang secara teratur (melalui proses yang disebut refresh). Memori yang dibangun seperti sebuah integrated circuit, memori menyediakan akses acak ke lokasi manapun. Waktu akses relatif sama untuk semua lokasi didalam memori.

EDO-RAM (Extended Data Output – RAM) Pada sistem lama teknologi memori yang digunakan adalah FPM dengan waktu tunggu untuk mengirim dan mengambil data cukup lama. Dengan EDO-RAM, waktu tunggu ini dikurangi.

EISA (Extended Industry Standard Architecture) Rancangan 32-bit yang merupakan peningkatan dari ISA.

EPROM (Erasable Programmable Read Only Memory) Memori yang selain dapat deprogram juga dapat dihapus berkali- kali. Penghapusan isi EPROM dilakukan dibawah sinar ultraviolet dengan lama dan intensitas tertentu.

EEPROM (Electrically Erasable Programmable Read Only Memory) Memori ini dikenal juga dengan nama EAROM (Electrically Alterable ROM) diprogram dan dihapus secara listrik (menggunakan listrik). Memori ini dapat dihapus dan deprogram ulang sekitar 10.000 kali. EAROM dapat deprogram dan dihapus pada suatu lokasi tertentu yang dipilih. Dapat dihapus dan deprogram ulang secara dinamis tanpa harus mengeluarkan IC EAROM dari sirkuit.

Dasar Teknik Komputer 249 General Purpose Register Sebuah register yang umumnya secara eksplisit dapat diamati, dalam sebuah kumpulen register yang dapat digunakan untuk keperluan berbeda, misalnya sebagai akumulator, sebagai register indeks atau sebagai penangan khusus data.

Intrgrated Circuit IC Sebuah device yang menggabungkan transistor-transistor, resistor dan kapasitor. Komponen-komponen tersebut difabrikasi dan dikoneksikan secara bersama untuk membentuk sebuah rangkaian pada suatu monolithic slab dari material-material semikinduktor. Gambar dibawah ini adalah merupakan IC komersial pertama, yang dikembangkan oleh Robert Noyce di Fairchild semiconductor dan Jack Kilby dari Texas Instrument.

Interrupt Interupsi, sebuah cara yang digunakan oleh sinyal digital eksternal untuk menghentikan program yang sedang dieksekusi untuk beralih atau bercabang ke layanan subrutin khusus.

250 Dasar Teknik Komputer

I/O Port Rangkaian yang berfungsi sebagai tempat atau titik-titik transfer antara CPU dan perangkat I/O.

ISA (Industry Standard Architecture) Standard 16-bit untuk transmisi data didalam workstation.

Komplemen -2 Bilangan baru yang diperoleh dengan cara menjumlahkan komplemen -1 dari bilangan semuala dengan bilangan 1.

Mantissa Bagian dari sebuah bilangan floating point yang merepresentasikan digit.

MAR Register yang berfungsi untuk menunjuk pada alamat memori yang dikehendaki. Sebuah register didalam unit pemrosesan yang berisi alamat dari lokasi penyimpanan yang diakses.

MDR (Memory Data Register) Sebuah register didalam unit pemrosean yang berisi data yang dibaca dari memor atau data yang akan ditulisi ke memori. Disebut juga sebagai memory buffer register (MBR).

MIPS (Million Instruction per Second) Sebuah pengukuran kecepatan eksekusi program yang berdasarkan pada jumlah jutaan instruksi. MIPS dihitung berdasarkan jumlah instruksi dibagi dengan hasil kali waktu eksekusi dan 106.

Dasar Teknik Komputer 251 Multiprogramming Sebuah mode operasi yang menyediakan interlaved execution dari dua atau lebih program komputer oleh sebuah prosesor tunggal.

Opcode (Operation Code) Kode numerik atau simbolik yang menyatakan jenis operasi untuk suatu instruksi dalam bahasa mesin atau assembly.

Operand Data yang dinyatakan dalam suatu instruksi yang mengikuti opcode dalam suatu format instruksi.

PC (Program Counter) Register CPU yang berisi alamat dari instruksi berikutnya.

Peripheral Perangkat-perangkat masukan atau keluaran.

PC (Program Counter) Register yang berfungsi menghitung sebagai penunjuk instruksi berikutnya yang akan dieksekusi. Register CPU yang berisi alamat dari instruksi berikutnya.

RAM (Random Accesss Memory) Memori yang dapat dibaca atau ditulis oleh mikroprosesor, untuk menyimpan program dan data sehingga dapat diakses langsung ke CPU. Setiap lokasi memori mempunyai alamat sendiri dan mikrorposesor dapat langsung mengakses lokasi memori tadi secara acak atau random. Bentuk RAM ada yang dual inline package (DIP) dan single In Line Memory Module (SIMM). Modul SIMM paling banyak digunakan. Memori yang berisi data

252 Dasar Teknik Komputer

dan instruksi yang akan dieksekusi. Circuit memori yang dapat dibaca maupu ditulisi.

Refresh Proses penulisan ulang isi memori dinamis untuk menghindari penghapusan data.

Register Komponen yang memiliki fungsi tertentu, seperti pencacah program (PC), ALU, controller dll. Sebuah sirkuit CPU untuk penyimpanan.

Representasi Fixed Point Sebuah representasi bilangan dimana radix point adalah dianggap berlokasi di sebuah posisi yang tetap, menghasilkan sebuah integer atau sebuah pecahan sebagai interpretasi dari representasi mesin internal.

Representasi Floating Point Di dalam notasi floating point, sebuah bilangan adalah direpresentasikan sebagai sebuah bagian pecahan (fractional) dikalikan dengan sebuah basis yng dipilih raised to a power. Ini adalah counterpart dari notasi saintifik yang digunakan di dalam sistem-sistem digital. Ekivalen desimal dari nilai floating point dapat ditulis : 푁 = ±푚 × 푏푒 dimana 풎 adalah fraksi atau mantissa, 풃 adalah basis bilangan dan 푒 adalah sebuah integer positif atau negatif yang disebut eksponen.

Dasar Teknik Komputer 253 RISC (Reduced Instruction Set Computer) Sebuah disain strategi CPU yang didasarkan pada wawasan instruksi yang disederhanakan (sebagai lawan kompleks) dapat memberikan kinerja yang lebih tinggi dengan satu siklus clock per siklus instruksi.

ROM (Read Only Memory) Bersifat permanen tak bias dihapus, berisi sejumlah program dan data yang dimasukkan oleh pabrik atau pembuat computer. (Program-program instruksi yang dimengerti oleh mikroprosesor diantaranya program sistem. Mikroprosesor hanya dapat membaca memori di ROM, tapi tak dapat menulis di ROM. Bentuk ROM adalah DIP. Memori yang hanya bisa dibaca, tidak bisa diubah isinya. Circuit memory yang hanya dapat dibaca.

Shift Register (register geser) Sebuah media penyimpanan yang mengandung dua atau lebih bit data, yang mampu digerakkan ke kanan atau ke kiri dan melakukan konversi antara serial dan parallel.

Signed Integer Bilangan bulat bertanda, bilangan bulat yang nilainya dapat bertanda positip atau negatip.

SRAM (Static RAM) Static RAM bentuknya lebih besar dari DRAM. Sedangkan kapasitas memorinya terbatas lebi kecil dari DRAM, tetapi keuntungan lainnya SRAM lebih cepat dari DRAM. Chip memori yang menampung data sepanjang ada arus, tanpa merefresh. Lebih cepat namun lebih mahal dan memerlukan lebih banyak arus daripada DRAM. SRAM pada dasarnya adalah sejumlah flip-flop yang akan tetap pada suatu keadaan yang

254 Dasar Teknik Komputer

diberikan (menyimpan bit) secara permanen, selama catu daya yang diberikan tidak terputus.

Stack Sebuah area yang berada dalam RAM dan digunakan oleh instruksi tertentu untuk penyimpanan sementara data dan alamat.

Stack Pointer Sebuah register yang berisi alamat untuk menunjuk data yang berada pada puncak stack.

Stored - Program Concept Sebuah gagasan atau ide yang menyatakan bahwa instruksi dan data dari berbagai jenis dapat disimpan dalam memori sebagai bilangan, untuk menyimpan program komputer.

Transistor Sebuah perangkat semikonduktor yang mempunyai secara umum, tiga terminal yang menempel pada daerah-daerah elektroda di dalam perangkat tersebut, arus yang mengalir diantara kedua elektroda ini dibuat bervariasi dalam merespon variasi-variasi tegangan dan arus yang diberikan pada elektroda ketiga. Perangkat tersebut dapat mengamplifikasi (memperkuat) tegangan atau arus bergantung kepada implementasi rangkaian tertentu yang diberikan. Perangkat ini juga dapat digunakan sebagai sebuah switch dengan mendriving nya diantara aliran arus maksimum dan minimum. Transistor ditemukan pada tahun 1948 oleh Schockley, Brattain dan Barden di laboratorium Telephone Bell. Gambar dibawah ini adalah merupakan transistor pertama, yang dikembangkan di Bell Laboratory pada tahun 1947.

Dasar Teknik Komputer 255

Unsigned Integer Bilangan bulat tak bertanda, bilangan bulat yang merepresentasikan suatu besaran, yang nilainya selalu positip.

VLSI (Very Large-Scale Integration) Teknologi fabrikasi rangkaian terintegrasi yang memungkinkan lebih dari 100.000 transistor diintegrasikan di dalam sebuah chip tunggal.

Word Unit penyimpanan yang terdiri dari dua byte yang berurutan, dapat mewakili nilai-nilai integer dari 0 sampai 65.535 atau 32.768 sampai 32.767. 16 bit / unit alami akses dalam sebuah computer.

256 Dasar Teknik Komputer