Demo Site

Rabu, 04 Januari 2012

Instruksi Komputer

       Komputer adalah alat yang dipakai untuk mengolah data menurut prosedur yang telah dirumuskan. Kata computer semula dipergunakan untuk menggambarkan orang yang perkerjaannya melakukan perhitungan aritmatika, dengan atau tanpa alat bantu, tetapi arti kata ini kemudian dipindahkan kepada mesin itu sendiri. Asal mulanya, pengolahan informasi hampir eksklusif berhubungan dengan masalah aritmatika, tetapi komputer modern dipakai untuk banyak tugas yang tidak berhubungan dengan matematika.

       Dalam arti seperti itu terdapat alat seperti slide rule, jenis kalkulator mekanik mulai dari abakus dan seterusnya, sampai semua komputer elektronik yang kontemporer. Istilah lebih baik yang cocok untuk arti luas seperti "komputer" adalah "yang mengolah informasi" atau "sistem pengolah informasi." Selama bertahun-tahun sudah ada beberapa arti yang berbeda dalam kata "komputer", dan beberapa kata yang berbeda tersebut sekarang disebut disebut sebagai komputer.

     Kata computer secara umum pernah dipergunakan untuk mendefiniskan orang yang melakukan perhitungan aritmatika, dengan atau tanpa mesin pembantu. Menurut Barnhart Concise Dictionary of Etymology, kata tersebut digunakan dalam bahasa Inggris pada tahun 1646 sebagai kata untuk "orang yang menghitung" kemudian menjelang 1897 juga digunakan sebagai "alat hitung mekanis". Selama Perang Dunia II kata tersebut menunjuk kepada para pekerja wanita Amerika Serikat dan Inggris yang pekerjaannya menghitung jalan artileri perang dengan mesin hitung.

      Charles Babbage mendesain salah satu mesin hitung pertama yang disebut mesin analitikal. Selain itu, berbagai alat mesin sederhana seperti slide rule juga sudah dapat dikatakan sebagai komputer.


       Perintah yang dibicarakan di atas bukan perintah seperti bahasa manusiawi. Komputer hanya mempunyai dalam jumlah terbatas perintah sederhana yang dirumuskan dengan baik. Perintah biasa yang dipahami kebanyakan komputer ialah "menyalin isi sel 123, dan tempat tiruan di sel 456", "menambahkan isi sel 666 ke sel 042, dan tempat akibat di sel 013", dan "jika isi sel 999 adalah 0, perintah berikutnya anda di sel 345".

       Instruksi diwakili dalam komputer sebagai nomor - kode untuk "menyalin" mungkin menjadi 001, misalnya. Suatu himpunan perintah khusus yang didukung oleh komputer tertentu diketahui sebagai bahasa mesin komputer. Dalam praktiknya, orang biasanya tidak menulis perintah untuk komputer secara langsung di bahasa mesin tetapi memakai bahasa pemrograman "tingkat tinggi" yang kemudian diterjemahkan ke dalam bahasa mesin secara otomatis oleh program komputer khusus (interpreter dan kompiler). Beberapa bahasa pemrograman berhubungan erat dengan bahasa mesin, seperti assembler (bahasa tingkat rendah); di sisi lain, bahasa seperti Prolog didasarkan pada prinsip abstrak yang jauh dari detail pelaksanaan sebenarnya oleh mesin (bahasa tingkat tinggi).

Siklus Fetch – Eksekusi
       Pada setiap siklus instruksi, CPU awalnya akan membaca instruksi dari memori. Terdapat
register dalam CPU yang berfungsi mengawasi dan menghitung instruksi selanjutnya, yang disebut Program Counter (PC). PC akan menambah satu hitungannya setiap kali CPU membaca instruksi.
Instruksi – instruksi yang dibaca akan dibuat dalam register instruksi (IR). Instruksi – instruksi ini dalam bentuk kode – kode binner yang dapat diinterpretasikan oleh CPU kemudian dilakukan aksi yang diperlukan. Aksi – aksi ini dikelompokkan menjadi empat katagori, yaitu :

  • CPU – Memori, perpindahan data dari CPU ke memori dan sebaliknya.
  • CPU –I/O, perpindahan data dari CPU ke modul I/O dan sebaliknya.
  • Pengolahan Data, CPU membentuk sejumlah operasi aritmatika dan logika terhadap data.
  • Kontrol, merupakan instruksi untuk pengontrolan fungsi atau kerja. Misalnya instruksi pengubahan urusan eksekusi.
      Perlu diketahui bahwa siklus eksekusi untuk suatu instruksi dapat melibatkan lebih dari sebuah
referensi ke memori. Disamping itu juga, suatu instruksi dapat menentukan suatu operasi I/O.
  • Instruction Addess Calculation (IAC), yaitu mengkalkulasi atau menentukan alamat instruksi berikutnya yang akan dieksekusi. Biasanya melibatkan penambahan bilangan tetap ke alamat instruksi sebelumnya. Misalnya, bila panjang setiap instruksi 16 bit padahal memori memiliki panjang 8 bit, maka tambahkan 2 ke alamat sebelumnya.
  • Instruction Fetch (IF), yaitu membaca atau pengambil instruksi dari lokasi memorinya ke CPU.
  • Instruction Operation Decoding (IOD), yaitu menganalisa instruksi untuk menentukan jenis operasi yang akan dibentuk dan operand yang akan digunakan.
  • Operand Address Calculation (OAC), yaitu menentukan alamat operand, hal ini dilakukan apabila melibatkan referensi operand pada memori.
  • Operand Fetch (OF), adalah mengambil operand dari memori atau dari modul I/O.
  • Data Operation (DO), yaitu membentuk operasi yang diperintahkan dalam instruksi.
  • Operand store (OS), yaitu menyimpan hasil eksekusi ke dalam memori.
Fungsi Interrupt
       Fungsi interupsi adalah mekanisme penghentian atau pengalihan pengolahan instruksi dalam CPU kepada routine interupsi. Hampir semua modul (memori dan I/O) memiliki mekanisme yang dapat menginterupsi kerja CPU.
Tujuan interupsi secara umum untuk menejemen pengeksekusian routine instruksi agar
efektif dan efisien antar CPU dan modul – modul I/O maupun memori. Setiap komponen komputer dapat menjalankan tugasnya secara bersamaan, tetapi kendali terletak pada CPU disamping itu kecepatan eksekusi masing – masing modul berbeda sehingga dengan adanya fungsi interupsi ini dapat sebagai sinkronisasi kerja antar modul. Macam – macam kelas sinyal
interupsi :
  • Program, yaitu interupsi yang dibangkitkan dengan beberapa kondisi yang terjadi pada hasil eksekusi program. Contohnya: arimatika overflow, pembagian nol, oparasi ilegal.
  • Timer, adalah interupsi yang dibangkitkan pewaktuan dalam prosesor. Sinyal ini memungkinkan sistem operasi menjalankan fungsi tertentu secara reguler.
  • I/O, sinyal interupsi yang dibangkitkan oleh modul I/O sehubungan pemberitahuan kondisi error dan penyelesaian suatu operasi.
  • Hardware failure, adalah interupsi yang dibangkitkan oleh kegagalan daya atau kesalahan paritas memori.
      Dengan adanya mekanisme interupsi, prosesor dapat digunakan untuk mengeksekusi
instruksi – instruksi lain. Saat suatu modul telah selesai menjalankan tugasnya dan siap menerima tugas berikutnya maka modul ini akan mengirimkan permintaan interupsi ke prosesor. Kemudian prosesor akan menghentikan eksekusi yang dijalankannya untuk menghandel routine interupsi. Setelah program interupsi selesai maka prosesor akan melanjutkan eksekusi programnya kembali. Saat sinyal interupsi diterima prosesor ada dua kemungkinan tindakan, yaitu interupsi diterima/ditangguhkan dan interupsi ditolak. Apabila interupsi ditangguhkan, prosesor akan melakukan hal – hal dibawah ini :

  1. Prosesor menangguhkan eksekusi program yang dijalankan dan menyimpan konteksnya. Tindakan ini adalah menyimpan alamat instruksi berikutnya yang akan dieksekusi dan data lain yang relevan.
  2. Prosesor menyetel program counter (PC) ke alamat awal routine interrupt handler. Gambar 3 berikut menjelaskan siklus eksekusi oleh prosesor dengan adanya fungsi interupsi.

OS Support

Rumus-rumus matematika biasanya diekspresikan dalam notasi infix.
Dalam notasi ini, operasi biner berada di antara 2 buah operand
(mis: a + b ).
Teknik lain adalah yang dikenal sebagai notasi reverse polish atau
postfix. Pada notasi ini, operator berada setelah 2 buah operandnya.

Contoh : infix Postfix
a + b ab+
a + (b * c) abc*+
(a + b)*c ab+c*

Kelebihan postfix adalah bahwa ekspresi dalam bentuk notasi ini mudah
untuk dievaluasi dengan menggunakan stack.
Proses pengubahan ekspresi infix menjadi ekspresi postfix akan mudah
sekali dilakukan apabila menggunakan algoritma Dijkstra sebagai
berikut:

1. Periksa elemen berikutnya
Jika elemen itu berupa operand, outputkan operand tersebut
Jika elemen itu berupa tanda kurung buka, push elemen tersebut ke
stack
Jika elemen itu merupakan operator, maka :
Jika elemen paling atas stack berupa tanda kurung buka, maka
push operator tersebut
Jika operator itu memiliki prioritas yang lebih tinggi
dibandingkan dengan prioritas elemen paling atas stack, maka
push operator tersebut
Jika tidak kedua-duanya, maka outputkan operator tersebut
Jika elemen itu berupa tanda kurung tutup, pop operator-operator
ke output sampai ditemukan tanda kurung buka. Pop dan buang
tanda kurung buka tersebut.

2. Jika terdapat input lainnya, maka lakukan langkah 1. Jika tidak terdapat
input lainnya outputkan operand-operand lainnya yang masih ada di stack
Dengan menggunakan notasi postfix ab-cde*+/, instruksi-instruksi untuk
melakukan operasi aritmetik : f = (a-b)/(c+d*e) akan lebih ditentukan.

Instruksinya :
Push a
Push b
Sub
Push c
Push d
Push e
Mul
Add
Div
Pop f