Kamis, 20 November 2014

SET INSTRUKSI DAN PENGALAMATAN

Karakteristik Instruksi Mesin
-Karakteristik adalah ciri-ciri khusus atau mempunyai sifat khas sesuai dengan perwatakan tertentu
-Instruksi adalah perintah atau arahan (untuk melakukan suatu pekerjaan atau melaksanakan suatu tugas
-Mesin adalah perkakas untuk menggerakkan, atau membuat sesuatu yang dijalankan dengan roda-roda dan digerakkan oleh tenaga manusia atau motor penggerak yang menggunakan bahan bakar minyak atau tenaga alam
-karakteristik-karakteristik instruksi mesin adalah ciri-ciri khusus atau sifat khas yang dimiliki oleh instruksi-instruksi atau kode operasi dalam pemrograman komputer
-Instruksi mesin (machine instruction) yang dieksekusi membentuk suatu operasi dan berbagai macam fungsi CPU.
-Kumpulan fungsi yang dapat dieksekusi CPU disebut set instruksi (instruction set) CPU.
·Mempelajari karakteristik instruksi mesin, meliputi :
-Elemen-elemen instruksi mesin
-Representasi instruksinya
-Jenis-jenis instruksi
-Penggunaan alamat
-Rancangan set instruksi




Elemen Instruksi Mesin
Untuk dapat dieksekusi suatu instruksi harus berisi elemen informasi yang diperlukan CPU secara lengkap dan jelas, antara lain :
1.Operation code (Op code)
Menspesifikasi operasi yang akan dilakukan. Kode operasi berbentuk kode biner.
2.Source Operand reference
Operasi dapat berasal dari lebih satu sumber. Operand adalah input operasi.
3.Result Operand reference
Merupakan hasil atau keluaran operasi
4.Next Instruction reference
Elemen ini menginformasikan CPU posisi instruksi berikutnya yang harus diambil dan dieksekusi.


Operand dari Operasi
Operand adalah sebuah objek yang ada pada operasi matematika yang dapat digunakan untuk melakukan operasi. Operand atau operator dalam bahasa C berbentuk simbol bukan berbentuk keyword atau kata yang biasa ada di bahasa pemrograman lain. Simbol yang digunakan bukan karakter yang ada dalam abjad tapi ada pada keyboard kita seperti =,,* dan sebagainya.

Melihat dari sumbernya, operand suatu operasi dapat berada di salah satu dari ketiga daerah berikut ini :
Memori utama atau memori virtual
Register CPU
Perangkat I/O
·         Tipe-tipe operand diantaranya :
1. Addresses (akan dibahas pada addressing modes)
2. Numbers :
- Integer or fixed point
- Floating point
- Decimal (BCD)
3. Characters :
- ASCII
- EBCDIC
4. Logical Data : Bila data berbentuk binary: 0 dan 1

Jenis-jenis operator adalah sebagai berikut :
·         1. Operator Aritmetika
Operator untuk melakukan fungsi aritmetika seperti : +(penjumlahan), – (mengurangkan), * (mengalikan), / (membagi).
·         2. Operator relational    
Operator untuk menyatakan relasi atau perbandingan antara dua operand, seperti > (lebih besr), =(lebih besar atau sama), <= (lebih kecil atau sama), == (sama), != (tidak sama).
·         3. Operator Logik
Operator untuk merelasikan operand secara logis seperti && (and), || (or), !(not).

                                                                                                         
Tindakan CPU sama dengan arithmetic
Operasi set instruksi untuk operasi logical :
1.  AND, OR, NOT, EXOR
2.  COMPARE : melakukan perbandingan logika.
3.  TEST : menguji kondisi tertentu.
4.  SHIFT : operand menggeser ke kiri atau kanan menyebabkan konstanta pada ujung bit.
5. ROTATE : operand menggeser ke kiri atau ke kanan dengan ujung yang terjalin

Representasi Instruksi
-Instruksi komputer direpresentasikan oleh sekumpulan bit. Instruksi dibagi menjadi beberapa field.
-Field-field ini diisi oleh elemen-elemen instruksi yang membawa informasi bagi operasi CPU.
-Layout instruksi dikenal dengan format instruksi.


Format Instruksi




-Kode operasi (op code) direpresentasikan dengan singkatan-singkatan, yang disebut mnemonic.
-Mnemonic mengindikasikan suatu operasi bagi CPU.
-Contoh mnemonic adalah :
ADD = penambahan
SUB = substract (pengurangan)
LOAD = muatkan data ke memori

Contoh representasi operand secara simbolik :
-ADD X, Y artinya tambahkan nilai yang berada pada lokasi Y ke isi register X, dan simpan hasilnya di register X.
-Programmer dapat menuliskan program bahasa mesin dalam bentuk simbolik.
-Setiap op code simbolik memiliki representasi biner yang tetap dan programmer dapat menetapkan lokasi masing-masing operand.

Jenis - Jenis Instruksi:
Contoh suatu ekspresi bilangan :
X = X + Y;
X dan Y berkorespondensi dengan lokasi 513 dan 514.

Pernyataan dalam bahasa tingkat tinggi tersebut menginstruksikan komputer untuk melakukan langkah berikut ini :
-Muatkan sebuah register dengan isi lokasi memori 513.
-Tambahkan isi lokasi memori 514 ke register.
-Simpan isi register ke lokasi memori 513.

Korelasi:
-Terlihat hubungan antara ekspresi bahasa tingkat tinggi dengan bahasa mesin.
-Dalam bahasa tingkat tinggi, operasi dinyatakan dalam bentuk aljabar singkat menggunakan variabel.
-Dalam bahasa mesin hal tersebut diekspresikan dalam operasi perpindahan antar register.

Jenis-Jenis Instruksi
-Pengolahan data (data processing),
meliputi operasi-operasi aritmetika dan logika. Operasi aritmetika memiliki kemampuan komputasi untuk pengolahan data numerik. Sedangkan instruksi logika beroperasi terhadap bit-bit word sebagai bit, bukannya sebagai bilangan, sehingga instruksi ini memiliki kemampuan untuk pengolahan data lain.
-Perpindahan data(data movement),
berisi instruksi perpindahan data antar register maupun modul I/O. Untuk dapat diolah oleh CPU maka diperlukan instruksi-instruksi yang bertugas memindahkan data operand yang diperlukan.
-Penyimpanan data (data storage),
berisi instruksi-instruksi penyimpanan ke memori. Instruksi penyimpanan sangat penting dalam operasi komputasi, karena data tersebut akan digunakan untuk operasi berikutnya, minimal untuk ditampilkan pada layar harus diadakan penyimpanan walaupun sementara.
-Kontrol aliran program (program flow control),
berisi instruksi pengontrolan operasi dan pencabangan. Instruksi ini berguna untuk pengontrolan status dan mengoperasikan percabangan ke set instruksi lain.

Jumlah Alamat
-Jumlah register atau alamat yang digunakan dalam operasi CPU tergantung format operasi masing-masing CPU.
-Ada format operasi yang menggunakan 3, 2, 1 dan 0 register.
-Umumnya yang digunakan adalah 2 register dalam suatu operasi. Desain CPU saat ini telah menggunakan 3 alamat dalam suatu operasi, terutama dalam MIPS (Million Instruction per Second).
-Alamat per instruksi yang lebih sedikit akan membuat instruksi lebih sederhana dan pendek, tetapi lebih sulit mengimplementasikan fungsi-fungsi yang kita inginkan.
-Karena instruksi CPU sederhana maka rancangan CPU juga lebih sederhana.
-Jumlah bit dan referensi per instruksi lebih sedikit sehingga fetch dan eksekusi lebih cepat.
-Jumlah instruksi per program biasanya jauh lebih banyak.
-Pada jumlah alamat per instruksi banyak, jumlah bit dan referensi instruksi lebih banyak sehingga waktu eksekusi lebih lama.
-Diperlukan register CPU yang banyak, namun operasi antar register lebih cepat.
-Lebih mudah mengimplementasikan fungsi-fungsi yang kita inginkan.
-Jumlah instruksi per program jauh lebih sedikit.
-Untuk lebih jelas perhatikan contoh instruksi-instruksi dengan jumlah register berbeda untuk menyelesaikan persoalan yang sama.
-Contoh penggunaan set instruksi dengan alamat 1, 2, dan 3 untuk menyelesaikan operasi hitungan.

Y = (A - B) / (C + D * E)
Saya akan mencoba menjelaskan ketiga instruksi di atas.
Untuk instruksi 3 alamat :
-Pertama, A - B lalu disimpan di Y.
-Lalu kita mengalikan D dan E lalu disimpan di register baru yaitu T.
-T tersebut lalu ditambahkan dengan register C dan disimpan di register T.
-Lalu register Y, yaitu hasil dari A - B tadi dibagi dengan register T lalu disimpan di register Y.
-Bisa kita lihat,untuk instruksi 3 alamat, setiap instruksi terdiri dari 3 register.

Instruksi 2 alamat :
-Pertama register A dipindahkan ke Y.
-Register Y dikurangi dengan register B dan disimpan di register Y. A - B sudah didapatkan, simpan di register Y.
-Selanjutnya register D dipindahkan ke register T, lalu register T dikalikan dengan register E dan disimpan di register T. Singkatnya, D*E itu sama dengan T*E dan disimpan di register T, cara ini digunakan karena kita memakain instruksi 2 alamat.
-Lalu register T ditambahkan dengan register C dan disimpan di register T.
(C + D * E) sudah didapatkan dan disimpan di register T.
-Lalu terakhir register Y yang sudah kita dapatkan tadi dibagi dengan register T dan disimpan di register Y.
-Bisa kita lihat, instruksi 2 alamat memakai 2 instruksi, seperti Y dan A, Y dan B, T dan D, dan seterusnya.

Instruksi 1 alamat :
-Pada istruksi tentu saja kita hanya menggunakan 1 instruksi.
-Pertama LOAD D ke AC (Accumulator).
-Lalu AC dikalikan dengan register E dan disimpan di AC.
-Register AC lalu ditambahkan dengan register C dan disimpan di register AC.
-Simpan register AC ke register Y.
-LOAD lagi register A ke AC.
-Register AC lalu dikurangkan dengan register B dan disimpan di register AC.
-Lalu register AC dibagi dengan regiser Y dan disimpan di register AC.
-Simpan register AC ke register Y.

Spesifikasi instruksi 3 alamat :
-Simbolik : a = b + c.
-Format alamat : hasil, operand 1, operand 2.
-Digunakan dalam arsitektur MIPS.
-Memerlukan word panjang dalam suatu instruksi.

Spesifikasi instruksi 2 alamat :
-Simbolik : a = a + b.
-Satu alamat diisi operand terlebih dahulu kemudian digunakan untuk menyimpan hasilnya.
-Tidak memerlukan instruksi yang panjang.
-Jumlah instruksi per program akan lebih banyak daripada 3 alamat.
-Diperlukan penyimpanan sementara untuk menyimpan hasil.

Spesifikasi instruksi 1 alamat :
-Memerlukan alamat implisit untuk operasi.
-Menggunakan register akumulator (AC) dan digunakan pada mesin lama.

Spesifikasi instruksi 0 alamat :
-Seluruh alamat yang digunakan implisit.
-Digunakan pada organisasi memori, terutama operasi stack.

Rancangan Set Instruksi
Aspek paling menarik dalam arsitektur komputer adalah perancangan set instruksi, karena rancangan ini berpengaruh banyak pada aspek lainnya.
-Set instruksi menentukan banyak fungsi yang harus dilakukan CPU.
-Set instruksi merupakan alat bagi para pemrogram untuk mengontrol kerja CPU.
Pertimbangan : Kebutuhan pemrogram menjadi bahan pertimbangan dalam merancang set instruksi.

Masalah rancangan yang fundamental meliputi :
-Operation repertoire :
Berapa banyak dan operasi-operasi apa yang harus tersedia.
Sekompleks apakah operasi itu seharusnya.
-Data types :
Jenis data.
Format data.
-Instruction format :
Panjang instruksi.
Jumlah alamat.
Ukuran field.
-Registers :
Jumlah register CPU yang dapat direferensikan oleh instruksi, dan fungsinya.
-Addressing :
Mode untuk menspesifikasi alamat suatu operand.









Tipe Operasi
Dalam perancangan arsitektur komputer, jumlah kode operasi akan sangat berbeda untuk masing-masing komputer, tetapi terdapat kemiripan dalam jenis operasinya.

Jenis Operasi Komputer
-Transfer data. - Konversi
-Aritmetika. - Input/Output
-Logika. - Kontrol sistem dan transfer kontrol

Representasi Instruksi
Instruksi komputer direpresentasikan oleh sekumpulan bit. Instruksi dibagi menjadi beberapa field.
Field-field ini diisi oleh elemen-elemen instruksi yang membawa informasi bagi operasi CPU.
Layout instruksi dikenal dengan format instruksi.












Pengalamatan
Metode pengalamatan adalah bagaimana cara menunjuk dan  mengalamati suatu lokasi memori pada  sebuah alamat di mana operand akan diambil. Mode pengalamatan diterapkan pada set instruksi, pengalamatan memberikan fleksibilitas khusus yang sangat penting. Mode pengalamatan ini meliputi direct addressing, indirect addressing, dan immediate addressing.

1. Direct Addresing    
Dalam mode pengalamatan direct addressing, harga yang akan dipakai diambil langsung dalam alamat memori lain. Contohnya: MOV A,30h. Dalam instruksi ini akan dibaca data dari RAM internal dengan alamat 30h dan kemudian disimpan dalam akumulator. Mode pengalamatan ini cukup cepat, meskipun harga yang didapat tidak langsung seperti immediate, namun cukup cepat karena disimpan dalam RAM internal. Demikian pula akan lebih mudah menggunakan mode ini daripada mode immediate karena harga yang didapat bisa dari lokasi memori yang mungkin variabel.
Kelebihan dan kekurangan dari Direct Addresing antara lain :
-Kelebihan
Field alamat berisi efektif address sebuah operand
-Kelemahan
Keterbatasan field alamat karena panjang field alamat biasanya lebih kecil dibandingkan panjang word

2. Indirect Addresing
Mode pengalamatan indirect addressing sangat berguna karena dapat memberikan fleksibilitas tinggi dalam mengalamati suatu harga. Mode ini pula satu-satunya cara untuk mengakses 128 byte lebih dari RAM internal pada keluarga 8052. Contoh: MOV A,@R0. Dalam instruksi tersebut, 89C51 akan mengambil harga yang berada pada alamat memori yang ditunjukkan oleh isi dari R0 dan kemudian mengisikannya ke akumulator. Mode pengalamatan indirect addressing selalu merujuk pada RAM internal dan tidak pernah merujuk pada SFR. Karena itu, menggunakan mode ini untuk mengalamati alamat lebih dari 7Fh hanya digunakan untuk keluarga 8052 yang memiliki 256 byte spasi RAM internal.
Kelebihan dan kekurangan dari Indirect Addresing antara lain :
-Kelebihan
Ruang bagi alamat menjadi besar sehingga semakin banyak alamat yang dapat referensi
-Kekurangan
Diperlukan referensi memori ganda dalam satu fetch sehingga memperlambat preoses operasi

3. Immediate Addresing
Mode pengalamatan immediate addressing sangat umum dipakai karena harga yang akan disimpan dalam memori langsung mengikuti kode operasi dalam memori. Dengan kata lain, tidak diperlukan pengambilan harga dari alamat lain untuk disimpan. Contohnya: MOV A,#20h. Dalam instruksi tersebut, akumulator akan diisi dengan harga yang langsung mengikutinya, dalam hal ini 20h. Mode ini sangatlah cepat karena harga yang dipakai langsung tersedia.
Kelebihan dan kekurangan dari Immedieate Addresing antara lain :
-Keuntungan
Tidak adanya referensi memori selain dari instruksi yang diperlukan untuk memperoleh operand
Menghemat siklus instruksi sehingga proses keseluruhan akan cepat
-Kekurangan
Ukuran bilangan dibatasi oleh ukuran field alamat


Pengenalan pada Register Addressing
Register adalah merupakan sebagian memori dari mikro prosessor yang dapat diakses dengan kecepatan tinggi. Metode pengalamatan register ini  mirip dengan mode pengalamatan langsung. Perbedaannya terletak pada field alamat yang mengacu pada register, bukan pada memori utama. Field yang mereferensi register memiliki panjang 3 atau 4 bit, sehingga dapat mereferensi 8 atau 16 register general purpose.
Kelebihan dan kekurangan Register Addressing :
-Keuntungan pengalamatan register
Diperlukan field alamat berukuran kecil dalam instruksi dan tidak diperlukan referensi memori
Akses ke regster lebih cepat daripada akses ke memori, sehingga proses eksekusi akan lebih cepat
-Kerugian
Ruang alamat menjadi terbatas

Register Indirect Addressing
Metode pengalamatan register tidak langsung mirip dengan mode pengalamatan tidak langsung  Perbedaannya adalah field alamat mengacu pada alamat register. Letak operand berada pada memori yang dituju oleh isi register.
Kelebihanan dan kekurangan pengalamatan register tidak langsung adalah sama dengan pengalamatan tidak langsung
-Keterbatasan field alamat  diatasi dengan pengaksesan memori yang tidak langsung sehingga alamat yang dapat direferensi makin banyak
-Dalam satu siklus pengambilan dan penyimpanan, mode pengalamatan register tidak langsung hanya menggunakan satu referensi memori utama sehingga lebih cepat daripada mode pengalamatan tidak langsung.

C.       Pengenalan Displacement Addressing dan Stack Addresing
Displacement Addressing adalah menggabungkan kemampuan pengalamatan langsung dan pengalamatan register tidak langsung. Mode ini mensyaratkan instruksi memiliki dua buah field alamat, sedikitnya sebuah field yang eksplisit.
Field eksplisit bernilai A dan field implisit mengarah pada register.
Ada tiga model displacement : Relative addressing, Base register addressing, Indexing

-Relative addressing
Register yang direferensi secara implisit adalah progra counter (PC)
-Alamat efektif relative addresing didapatkan dari alamat instruksi saat itu ditambahkan ke field alamat
-Relativ addressing memanfaatkan konsep lokalitas memori untuk menyediakan operand-operand berikutnya
-Base register addresing, register yang direferensi berisi sebuah alamat memori, dan field alamat berisi perpindahan dari alamat itu
-Referensi register dapat eksplisit maupun implisit
-Memanfaatkan konsep lokalitas memori
-Indexing adalah field alamat mereferensi alamat memori utama, dan register yang direferensikan berisi pemindahan positif dari alamat tersebut
-Merupakan kebalikan dari mode base register
-Field alamat dianggap sebagai alamat memori dalam indexing
-Manfaat penting dari indexing adalah untuk eksekusi program-program iterative

Stack adalah array lokasi yang linier = pushdown list = last-in-first-out. Stack merupakan blok lokasi yang terbalik. Butir ditambakan ke puncak stack sehingga setiap saat blok akan terisi secara parsial. Yang berkaitan dengan stack adalah pointer yang nilainya merupakan alamat bagian paling atas stack. Dua elemen teratas stack dapat berada di dalam register CPU, yang dalam hal ini stack pointer mereferensi ke elemen ketiga stack. Stack pointer tetap berada dalam register
Dengan demikian, referensi-referensi  ke lokasi stack di dalam memori pada dasarnya merupakan pengalamatan register tidak langsung


Kesimpulan:
·         Dapat ditarik kesimpulan bahwa instruksi-instruksi mesin harus mampu  mengolah data sebagai implementasi keinginan-keinginan kita
·         Terdapat kumpulan unit set instruksi yang dapat digolongkan dalam jenis-jenisnya, yaitu :
1.      Pengolahan data (data processing)
Meliputi operasi-operasi aritmatika dan logika, operasi aritmatika memiliki kemapuna komputasi untuk pengolahan data numrik, sedangkan instruksi logika beroperasi terhadap bit-bit, bukannya sebagi bilangan, sehingga insrtuksi ini memiliki kemampuan untuk pengolahan data lain.
2.      Perpindahan data ( data movement)
Berisi instruksi perpindahan data antar register maupun modul I/O.untuk dapat diolah oleh CPU maka diperlukan operasi-operasi yang bertugas memindahkan data operand yang diperlukan.
3.      Penyimpanan data ( data storage)
Berisi instruksi-instruksi penyimpanan ke memori, instruksi penyimpanan sangat penting dalam operasi komputasi, karena data tersebut akan digunakan untuk operasi berikutnya, minimal untuk ditampilkan pada layar harus diadakanpenyimpanan walaupun sementara
4.      Control aliran program ( program flow control)
Berisi instruksi pengontrolan operasi dan pencabangan, instruksi ini berguna untuk pengontrolan status dan mengoperasikan pencabangan ke set instruksi lain.

References:

http://adi-lecture.blogspot.com/2013/02/set-instruksi-dan-pengalamatan.html
http://efendi2612.files.wordpress.com/2010/11/mode-pengalamatan.ppt
http://eprints.undip.ac.id/22782/1/Pert10.pdf

Rabu, 05 November 2014

Computer Arithmetic

1. Arithmatic Logical Unit (ALU)

Arithmatic Logical Unit (ALU), adalah salah satu bagian/komponen dalam sistem di dalam sistem komputer yang berfungsi melakukan operasi/perhitungan aritmatika dan logika (Contoh operasi aritmatika adalah operasi penjumlahan dan pengurangan, sedangkan contoh operasi logika adalah logika AND dan OR. ALU bekerja besama-sama memori, di mana hasil dari perhitungan di dalam ALU di simpan ke dalam memori.

Perhitungan dalam ALU menggunakan kode biner, yang merepresentasikan instruksi yang akan dieksekusi (opcode) dan data yang diolah (operand). ALU biasanya menggunakan sistem bilangan biner (two’s complement). ALU mendapat data dari register. Kemudian data tersebut diproses dan hasilnya akan disimpan dalam register tersendiri yaitu ALU.








2.  Integer Representation

Dalam sistem bilangan biner , semua bilangan dapat direpresentasikan dengan hanya menggunakan bilangan 0 dan 1, tanda minus, dan tanda titik.
Misalnya: -1101.01012 = -11.312510

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

00000001= 1

00101001 = 41

  10000000  = 128

   11111111= 225

Umumnya bila sebuah rangkaian n-bit bilangan biner an-1an-2…a1a0 akan diinterpretasikan sebagai unsigned integer A.








Representasi Nilai Tanda

Penggunaan unsigned integer tidak cukup untuk merepresentasikan bilangan integer negatif dan juga bilangan positif integer.
Karena itu terdapat beberapa konvesi lainnya yang dapat kita gunakan.
Konvesi-konvesi lainnya meliputi perlakuan terhadap bit yang paling berarti (paling kiri) di dalam word bit tanda.
Apabila bit paling kiri sama dengan 0 suatu bilangan adalah positif , sedangkan bila bit yang paling kiri sama dengan 1 bilangan bernilai negatif.
Bentuk yang paling sederhana representasi yang memakai bit tanda representasi nilai tanda. Pada sebuah word n bit, n – 1 bit yang paling kanan menampung  nilai integer. Misalnya:
+ 18 = 00010010

-  18 = 10010010 (sign-magnitude/nilai-tanda)

Terdapat beberapa kekurangan pada representasi nilai-tanda penambahan dan pengurangan memerlukan pertimbangan baik tanda bilangan ataupun nilai relatifnya agar dapat berjalan pada operasi yang diperlukan.
Kekurangannya lainnya terdapat dua representasi bilangan 0:
+ 010 = 00000000

-  010 = 10000000 (sign-magnitude)




3.  Integer Arithmetic

Bagian ini akan membahas fungsi-fungsi aritmatik bilangan dalam representasi komplemen dua:

Negasi       

Pada notasi komplemen dua, pengurangan sebuah bilangan integer dapat dibentuk dengan menggunakan aturan berikut : Anggaplah komplemen Boolean seluruh bit bilangan integer (termasuk bit tanda)
Perlakukan hasilnya sebagai sebuah unsigned binary integer, tambahkan 1.
Misal : 18 = 00010010 (komplemen dua)

Representasi Integer Positif, Negatif Dan Bilangan 0

Bila sebuah bilangan integer positif dan negatif yang sama direpresentasikan (sign-magnitude), maka harus ada representasi bilangan positif dan negatif yang tidak sama.
Bila hanya terdapat sebuah representasi bilangan 0 (komplemen dua), maka harus ada representasi bilangan positifdan negatif yang tidak sama.
Pada kasus komplemen dua, terdapat representasi bilangan n-bit untuk -2n, tapi tidak terdapat untuk 2n.
Aturan Untuk Mendeteksi Overflow

Aturan Overflow :
Bila dua buah bilangan ditambahkan, dan keduanya positif atau keduanya negatif, maka akan terjadi overflow bila dan hanya bila hasilnya memiliki tanda yang berlawanan, seperti pada contoh halaman 18 ((e),(f))
Aturan Pengurangan :
Untuk mengurangkan sebuah bilangan (subtrahend) dari bilangan lainnya (minuend), anggaplah komplemen dua subtrahend dan tambahkan hasilnya ke minuend.
Pembulatan

Teknik pembulatan yang sesuai dengan standard IEEE adalah sebagai berikut :

Pembulatan ke Bilangan Terdekat : Hasil dibulatkan ke bilangan terdekat yang dapat direpresentasi.
Pembulatan Ke Arah : Hasil dibulatkan ke atas ke arah tak terhingga positif.
Pembulatan Ke Arah : Hasil dibulatkan ke atas ke arah tak terhingga negatif.
Pembulatan Ke Arah 0 : Hasil dibulatkan ke arah 0



4.  Floating Point Representation

Dalam komputasi floating point menjelaskan metode mewakili perkiraan dari sejumlah nyata dalam cara yang dapat mendukung berbagai nilai . Jumlahnya , secara umum , mewakili sekitar untuk tetap jumlah digit yang signifikan ( mantissa ) dan ditingkatkan menggunakan eksponen .

Dengan asumsi bahwa resolusi terbaik adalah di tahun cahaya , hanya 9 desimal yang paling signifikan digit materi , sedangkan sisanya 30 digit membawa suara murni , dan dengan demikian dapat dengan aman dijatuhkan. Ini merupakan penghematan dari 100 bit penyimpanan data komputer . Alih-alih dari 100 bit , jauh lebih sedikit digunakan untuk mewakili skala ( eksponen ) , misalnya 8 bit atau 2 digit desimal .

Istilah floating point mengacu pada fakta bahwa nomor itu radix point ( titik desimal , atau , lebih umum pada komputer , titik biner ) dapat “mengambang” , yang , dapat ditempatkan di manapun relatif terhadap angka yang signifikan dari nomor tersebut. Posisi ini diindikasikan sebagai komponen eksponen dalam representasi internal , dan floating point sehingga dapat dianggap sebagai realisasi komputer notasi ilmiah .
Selama bertahun-tahun , berbagai representasi floating-point telah digunakan dalam komputer . Namun, sejak tahun 1990 , representasi paling sering ditemui adalah bahwa didefinisikan oleh IEEE 754 standar .    Dalam notasi ilmiah , jumlah yang diberikan ditingkatkan oleh kekuatan 10 sehingga terletak dalam kisaran tertentu – biasanya antara 1 dan 10 , dengan titik radix muncul segera setelah angka pertama . The faktor skala , sebagai kekuatan sepuluh , kemudian ditunjukkan secara terpisah pada akhir nomor . Misalnya, periode revolusi bulan Jupiter Io adalah 152853.5047 detik , nilai yang akan diwakili dalam notasi ilmiah standar – bentuk sebagai 1,528535047 × 105 detik .
Representasi floating-point mirip dalam konsep notasi ilmiah . Logikanya , angka floating -point terdiri dari:

• Sebuah ditandatangani ( yang berarti positif atau negatif ) string yang digit panjang diberikan dalam dasar yang diberikan ( atau radix ) . String ini digit disebut sebagai significand , koefisien atau , lebih jarang , mantissa ( lihat di bawah ) . Panjang significand menentukan presisi yang nomor dapat diwakili. Radix Posisi titik diasumsikan untuk selalu berada di suatu tempat dalam significand – sering hanya setelah atau sebelum yang paling signifikan digit , atau di sebelah kanan paling kanan (paling signifikan ) digit . Artikel ini umumnya akan mengikuti konvensi bahwa titik radix hanya setelah paling signifikan ( paling kiri ) digit .

• Sebuah integer ditandatangani eksponen , juga disebut sebagai karakteristik atau skala , yang memodifikasi besarnya nomor .
Untuk memperoleh nilai dari angka floating-point , seseorang harus kalikan significand dengan dasar pangkat dari eksponen , setara dengan menggeser radix poin dari posisi tersirat oleh sejumlah tempat sama dengan nilai eksponen – ke kanan jika eksponen positif atau ke kiri jika eksponen negatif.
Menggunakan basis- 10 ( notasi desimal akrab ) sebagai contoh , jumlah 152853,5047 , yang memiliki sepuluh angka desimal presisi , diwakili sebagai significand 1,528535047 bersama dengan eksponen 5 ( jika posisi tersirat dari radix point setelah pertama yang paling signifikan digit, di sini 1 ). Untuk menentukan nilai yang sebenarnya , titik desimal ditempatkan setelah digit pertama significand dan hasilnya dikalikan dengan 105 untuk memberikan 1,528535047 × 105 , atau 152853,5047. Dalam menyimpan nomor tersebut , dasar ( 10 ) tidak perlu disimpan , karena akan sama untuk seluruh kisaran angka didukung , dan dengan demikian dapat disimpulkan .
Secara simbolis , ini adalah nilai akhirdimana  adalah nilai significand            ( setelah memperhitungkan tersirat radix point) , B adalah dasar, dan E adalah eksponen.
ekuivalen : di mana s di sini berarti nilai integer dari seluruh significand , mengabaikan semua titik desimal tersirat , dan p adalah – presisi jumlah digit di significand tersebut .
Secara historis , beberapa pangkalan nomor telah digunakan untuk mewakili angka floating -point , dengan basis 2 ( biner ) yang paling umum, diikuti oleh basis 10 ( desimal ) , dan varietas yang kurang umum lainnya , seperti basis 16 ( notasi heksadesimal ) , sebagai serta beberapa yang eksotis seperti 3 .
Angka floating-point adalah bilangan rasional karena mereka dapat direpresentasikan sebagai salah satu bilangan bulat dibagi dengan yang lain . Misalnya 1,45 × 103 adalah (145 /100) * 1000 atau 145000/100 . Dasar namun menentukan pecahan yang dapat diwakili . Misalnya , 1/ 5 tidak dapat diwakili tepat sebagai angka floating-point menggunakan basis biner tetapi dapat diwakili tepat menggunakan basis desimal ( 0,2 , atau 2 × 10-1. Namun 1/3 tidak dapat diwakili tepat oleh salah biner ( 0,010101 … ) atau desimal ( 0,333 ./ ) , tetapi dalam basis 3 itu adalah sepele ( 0,1 atau 1 × 3-1 ) .

Kesempatan di mana ekspansi terbatas terjadi tergantung pada dasar dan faktor utama, seperti yang dijelaskan dalam artikel tentang Notasi Positional, Cara di mana significand tersebut , eksponen dan tanda bit secara internal disimpan di komputer sangat tergantung dari implementasi .

Secara Umum format IEEE dijelaskan secara rinci nanti dan di tempat lain , tetapi sebagai contoh , dalam representasi ( 32 -bit ) floating-point presisi tunggal biner p = 24 dan seterusnya significand adalah string dari 24 bit . Misalnya , jumlah π pertama 33 bit adalah 11001001 00001111 11011010 10100010 0 . Mengingat bahwa bit -24 adalah nol , pembulatan sampai 24 bit dalam mode biner berarti menghubungkan bit -24 dengan nilai 25 yang menghasilkan 11.001.001 00.001.111 11.011.011 . Ketika ini disimpan menggunakan pengkodean IEEE 754 , ini menjadi significand dengan e = 1 (di mana s diasumsikan memiliki titik biner di sebelah kanan bit pertama ) setelah kiri penyesuaian ( atau normalisasi ) selama memimpin atau tertinggal nol terpotong harus ada apapun .




5. Floating Point Arithmetic

Floating Point Arithmetic adalah sebuah bilangan yang digunakan untuk menggambarkan sebuah nilai yang sangat besar atau sangat kecil. Bilangan tersebut dapat diwujudkan dalam notasi ilmiah, yaitu berupa angka pecahan desimal  dikalikan dengan angka 10 pangkat bilagnan tertentu. Bilangan seperti ini dapat direpresentasikan menjadi dua bagian, yaitu bagianmantisa dan bagian eksponen (E). Bagian mantisa menentukan digit dalam angka tersebut, sedangkan eksponen menentukan nilai berapa besar pangkat pada bagian mantisa tersebut (jarak dari titik posisi desimal). Contoh :

Misalkan terdapat sebuah bilangan 8934000000 maka bilangan ini dapat dituliskan dalam bentuk bilangan floating point. 8934E6 yang secara matematis artinya : 8934 x 10⁶

Bagian mantisanya adalah 8934 dan bagian eksponennya adalah E6


Cara penulisan angka seperti ini merupakan cara singkat untuk menuliskan angka yang nilainya sangat besar maupun sangat kecil atau disebut floating point number. Bilangan seperti ini banyak digunakan dalam pemrosesan grafik dan kerja ilmiah. Proses aritmatika bilangan floating point memang lebih rumit dan prosesor membutuhkan waktu yang lebih lama untuk mengerjakannya, karena mungkin akan menggunakan beberapa siklus detak (clock cycle) prosesor.

Oleh karena itu beberapa jenis komputer menggunakan prosesor sendiri untuk menangani bilangan floating point. Prosesor yang khusus menangani bilangan floating point disebutFloating Pont Unit (FPU) atau disebut juga dengan nama math co-processor.



otasi floating-point dapat digunakan untuk merepresentasikan baik bilangan yang sangat besar (|N| » 0), bilangan yang sangat kecil atau dekat dengan nol (|N| « 1), maupun bilangan yang terdiri dari keduanya. Floating-point membuat proses operasi aritmatika menjadi relatif lebih mudah. Floating-point merepresentasi bilangan nyata dalam bentuk persamaan:

N = m × Re

Dimana:

m merupakan bagian bilangan pecahan yang biasa disebut significand atau mantissa
e adalah bagian bilangan bulat yang biasa disebut exponent
R merupakan basis dari suatu sistem bilangan
Bagian bilangan pecahan m merupakan p-digit bilangan dengan bentuk (±d.dddd … dd), dimana semua digit d adalah bilangan bulat antara 0 dan R-1. Jika digit terdepan (sebelak kiri) dari m bukan angka nol, maka bilangan ini dapat dikatakan sebagai normalized.

Sebagai contoh, bilangan desimal 0,0003754 dan 1234 dapat direpresentasi dalam notasi floating point sebagai 3,754 × 10−4 dan 1,234 × 103. Bilangan heksadesimal 257,ABF dapat direpresentasi sebagai 2,57ABF × 162. Dalam kasus bilangan biner normalized, angka terdepan (MSB) selalu ‘1’ dan dengan demikian tidak perlu disimpan secara eksplisit. Bilangan biner campuran 1100,10112 dapar direpresentasi dalam notasi floating point sebagai 0,1101011 × 23 = 0,1101011e+0011. Disini, 0,1101011 adalah mantissa dan e+0011 menunjukan bahwa eksponennya adalah +3. Contoh lainnya, 0,0001112 dapat ditulis sebagai 0,111e-0011, dengan 0,111 adalah mantissa dan e-0011 menunjukkan eksponen dari -3. Jika kita ingin merepresentasikan mantissa menggunakan delapan bit, maka angka 0,1101011 dan 0,111 dapat ditulis seperti 0,11010110 dan 0,11100000.









Computer Arithmetic dibagi menjadi 5 bagian yang pertama yaitu ALU yang melihatkan tentang bagian dalam sistem komputer yang berfungsi melakukan operasi perhitungan. Yang kedua ada integer representation yang menjelaskan tentang semua bilangan yang ada di komputer itu. Yang ketiga integer arithmetic. Yang keempat ada floating point representation menjelaskan metode mewakili perkiraan dari sejumlah nyata dalam cara yang dapat mendukung berbagai nilai. Dan yang kelima ada floating point arithmetic yang menggambarkan sebuah nilai yang sangat besar atau sangat kecil. Bilangan tersebut dapat diwujudkan dalam notasi ilmiah,




References

Rabu, 29 Oktober 2014

SISTEM INPUT/OUTPUT

Sistem Input Dan Output Komputer atau sering juga disingkat dengan I/O adalah suatu mekanisme pengiriman data secara bertahap dan terus menerus melalui suatu aliran data dari proses ke peranti (begitu pula sebaliknya). Fungsi I/O pada dasarnya adalah mengimplementasikan algoritma I/O pada level aplikasi. Hal ini dikarenakan kode apliksi sangat fleksibel, dan bugs aplikasi tidak mudah menyebabkan sebuah sistem crash.





Contoh I/O: dasar dari elemen perangkat keras yang terkandung pada I/O adalah bus, device controller, dan I/O itu sendiri. Kinerja kerja pada data yang bergerak antara device dan memori utama di jalankan oleh CPU, di program oleh I/O atau mungkin DMA controller. Modul kernel yang mengatur device adalah device driver. System-call interface yang disediakan aplikasi dirancang untuk menghandle beberapa dasar kategori dari perangkat keras, termasuk block devices, character devices, memory mapped files, network sockets dan programmed interval timers.

Subsistem I/O kernel menyediakan beberapa servis. Diantaranya adalah I/O schedulling, buffering, spooling, error handling dan device reservation. Salah satu servis dinamakan translation, untuk membuat koneksi antara perangkat keras dan nama file yang digunakan oleh aplikasi.

I/O system calls banyak dipakai oleh CPU, dikarenakan oleh banyaknya lapisan dari perangkat lunak antara physical device dan aplikasi. Lapisan ini mengimplikasikan overhead dari alih konteks untuk melewati kernel’s protection boundary, dari sinyal dan interrupt handling untuk melayani I/O devices.
Peralatan output dapat berupa :
• Hard-copy device, yaitu alat yang digunakan untuk mencetak tulisan dan image pada media keras seperti kertas atau film. Sifatnya permanen dan lebih portable (dapat dilepas dari alat outputnya dan dapat dibawa ke mana-mana). Alat yang umum digunakan untuk ini adalah printer, plotter, dan alat microfilm.
• Soft-copy device, yaitu alat yang digunakan untuk menampilkan tulisan dan image pada media lunak yang berupa sinyal elektronik. Misalnya video display, flat panel, dan speaker.
• Drive device atau driver, yaitu alat yang digunakan untuk merekam simbol dalam bentuk yang hanya dapat dibaca oleh mesin pada media seperti magnetic disk atau magnetic tape. Alat ini berfungsi ganda, sebagai alat output dan juga sebagai alat input menggunakan media magnetic disk misalnya adalah disk drive, dan yang menggunakan mediamagnetic tape adalah tape drive





                              



Perangkat Eksternal :  perangkat eksternal diklasifikasikan menjadi 3 kategori :
1. Human Readable
    yaitu perangkat yang berhubungan dengan manusia sebagai pengguna komputer.
    Cocok untuk berkomunikasi dengan pengguna komputer.   
    Contohnya: monitor, keyboard, mouse, printer, joystick, disk drive.
2. Machine readable
    yaitu perangkat yang berhubungan dengan peralatan. Biasanya berupa modul sensor
    dan tranduser untuk monitoring dan kontrol suatu peralatan atausistem.
    cocok untuk berkomunikasi dengan peralatan.
3. Communication
   yatu perangkat yang berhubungan dengan komunikasi jarak jauh.Misalnya: NIC dan    
   modem. cocok untuk berkomunikasi dengan perangkat jarak jauh.
   Interface ke modul I/O adalah dalam bentuk signal-signal control, status dan data.



Modul-Modul I/O : interface atau central switch untuk mengendalikan satu atau lebih peripheral atau perangkat input output.
Konektor mekanis berisi fungsi logik untuk komunikasi antara bus dan peripheral..
Tidak hanya sekedar modul penghubung, tetapi sebuah piranti yang berisi logika dalam melakukan fungsi komunikasi antara peripheral dan bus computer
Modul I/O adalah suatu komponen dalam sistem komputer yang Bertanggung jawab atas pengontrolan sebuah perangkat luar atau lebih dan juga,Bertanggung jawab pula dalam pertukaran data antara perangkat luar tersebut dengan memori utama ataupun dengan register – register CPU.termasuk Antarmuka internal dengan komputer (CPU dan memori utama) dan perangkat eksternalnya untuk menjalankan fungsi – fungsi pengontrolan



  





I/O terprogram : Pada I/O terprogram, data saling dipertukarkan antara CPU dan modul I/O. CPU mengeksekusi program yang memberikan operasi I/O kepada CPU secara langsung, seperti pemindahan data, pengiriman perintah baca maupun tulis, dan monitoring perangkat. Kelemahan teknik ini adalah CPU akan menunggu sampai operasi I/O selesai dilakukan modul I/O sehingga akan membuang waktu, apalagi CPU lebih cepat proses operasinya. Dalam teknik ini, modul I/O tidak dapat melakukan interupsi kepada CPU terhadap proses – proses yang diinteruksikan padanya. Seluruh proses merupakan tanggung jawab CPU sampai operasi lengkap dilaksanakan.
Untuk melaksanakan perintah – perintah I/O, CPU akan mengeluarkan sebuah alamat bagi modul I/O dan perangkat peripheralnya sehingga terspesifikasi secara khusus dan sebuah perintah I/O yang akan dilakukan. Terdapat empat klasifikasi perintah I/O, yaitu:
1. Perintah control.
Perintah ini digunkan untuk mengaktivasi perangkat peripheral dan memberitahukan tugas yang
diperintahkan padanya.
2. Perintah test.
Perintah ini digunakan CPU untuk menguji berbagai kondisi status modul I/O dan
peripheralnya. CPU perlu mengetahui perangkat peripheralnya dalam keadaan aktif dan siap
digunakan, juga untuk mengetahui operasi – operasi I/O yang dijalankan serta mendeteksi
kesalahannya.
3. Perintah read.
Perintah pada modul I/O untuk mengambil suatu paket data kemudian menaruh dalam buffer
internal. Proses selanjutnya paket data dikirim melalui bus data setelah terjadi sinkronisasi data
maupun kecepatan transfernya.
4. Perintah write.
Perintah ini kebalikan dari read. CPU memerintahkan modul I/O untuk mengambil data dari
bus data untuk diberikan pada perangkat peripheral tujuan data tersebut.
Dalam teknik I/O terprogram, terdapat dua macam inplementasi perintah I/O yang tertuang dalam instruksi I/O, yaitu: memory-mapped I/O dan isolated I/O. Dalam memory-mapped I/O, terdapat ruang tunggal untuk lokasi memori dan perangkat I/O. CPU memperlakukan register status dan register data modul I/O sebagai lokasi memori dan menggunakan instruksi mesin yang sama untuk mengakses baik memori maupun perangkat I/O. Konskuensinya adalah diperlukan saluran tunggal untuk pembacaan dan saluran tunggal untuk penulisan. Keuntungan memory-mapped I/O adalah efisien dalam pemrograman, namun memakan banyak ruang memori alamat.
Dalam teknik isolated I/O, dilakukan pemisahan ruang pengalamatan bagi memori dan ruang pengalamatan bagi I/O. Dengan teknik ini diperlukan bus yang dilengkapi dengan saluran pembacaan dan penulisan memori ditambah saluran perintah output. Keuntungan isolated I/O adalah sedikitnya instruksi I/O.
              Dapat disimpulkan bahwa sistem input/output(I/O) suatu mekanisme pengiriman data secara bertahap dan secara terus menerus dari proses ke peranti. Sistem I/O juga berfungsi untuk manusia dalam hal memudahkan sesuatu pekerjaan khususnya dalam pemrosesan data-data.

Reference: