Senin, 02 Desember 2013

TRANSLATOR - TEHNIK KOMPILASI


Translator
Melakukan pengubahan source code/program sumber ke dalam target code/object code. Source code ditulis dalam sumber sedangkan object code bisa dalam bahasa pemrograman lain atau bahasa mesin pada suatu komputer.
Macam – macam Translator
1.      Assembler
   Source code adalah bahasa assembly, object code adalah bahasa mesin contoh :     
   Turbo Assembler dan Macro Assembler
ASSEMBLER.jpg
2.      Kompilator ( Compiler)
   Source code adalah bahasa tingkat tinggi, object code adalah bahasa mesin atau  
   bahasa assembly. Source code dan data diproses pada waktu yang berbeda.
   Contoh ; Turbo Pascal. Compile time adalah saat pengubahan dari source code
    ke object code sedangkan Run Time adalah saat eksekusi object code.

2.png
            Model Kompilator
Kompilator umumnya mempunyai dua tugas pokok :
1.      Fungsi Analisis, biasa disebut Front-end à melakukan dekomposisi
         program sumber menjadi bagian-bagian dasarnya.
2.      Fungsi Sintesis, biasa disebut Back-end àmelakukan pembangkitan dan
         optimasi program objek.

 Scanner                      : Memecah program sumber menjadi besaran   
                                            Leksik/Token
 Parser                         : memeriksa kebenaran dan urutan kemunculan Token
 Analisis Semantik      : melakukan analisis semantik,biasanya dalam realisasi
                                            kan digabungkan dengan Intermediate code generator
                                           (bagian yang berfungsi membangkitkan kode antara
Code Generator          : membangkitkan kode objek
Code Optimizer          : memperkecil hasil dan mempercepat proses
Tabel Simbol               : menyimpan semua informasi yang berhubungan
                                            dengan proses kompilasi

Mutu Kompilator
Mutu dari suatu kompilator tergantung dari beberapa faktor :
1.      Kecepatan dan waktu proses
               Tergantung dari penulisan Algoritma Kompilator dan kompilator
               Pengkompilasi.
            2.      Mutu program objek
            mutu suatu program objek ditentukan oleh ukuran dan kecepatan   
            eksekusi dari program objek.
3.      Integrated Environment
                Merupakan fasilitas terintegrasi yang dimiliki oleh kompilator.
Pembuatan Kompilator
Dapat dilakukan dengan cara :
1.      Mempergunakan bahasa mesin
2.      Mempergunakan bahasa tingkat tinggi
3.      Mempergunakan bahasa tingkat tinggi lain pada mesin yang sama
4.      Mempergunakan bahasa tingkat tinggi yg sama pada mesin yang
          berbeda.
5.      Bootstrap ( gagasan dari Nirklaus Wirth : membangun suatu yang besar
         dengan terlebih dahulu membuat bagian intinya).
3.      Interpreter
Interpreter tidak membangkitkan object code, hasil translasi hanya dalam bentuk internal. Contoh: BASICA/GW-BASIC,LIPS,SMALLTALK.
Source code dan data diproses pada saat yang sama.
3.jpg
Input berupa source code yaitu bahasa scripting seperti PHP, Perl, Javascript, ASP, Java bytecode, Basic. Interpreter tidak menghasilkan object code. Hanya menghasilkan translasi internal. Input dapat berasal dari source code maupun dari inputan program dari user. Source code dan inputan data user diproses pada saat yang bersamaan. Pada interpreter: program tidak harus dianalisis seluruhnya dulu, tapi bersamaan dengan jalannya program. Keuntungan: mudah bagi user, debuging cepat dan kekurangannya adalah eksekusi program lambat, dan tidak langsung menjadi program executable.

Kesalahan-kesalahan pada translator
Sebuah kompilator akan sering menemui program yang mengandung kesalahan, maka kompilator harus memiliki strategi apa yang harus dilakukan untuk menangani kesalahan - kesalahan tersebut.
1     Jenis – jenis Kesalahan
a. Kesalahan Leksikal
           Misalnya kesalahan mengeja keyword,
            contoh: then ditulis ten
b. Kesalahan Sintaks
           Misalnya pada operasi aritmatika kekurangan jumlah paranthesis (kurung).
            contoh : A:=X+(B*(C+D)         
c. Kesalahan Semantik
           Tipe data yang salah, misal tipe data integer digunakan untuk variabel string.
           Contoh :           Var      Siswa : Integer
                                    Siswa := 'Aka'             {tipe string}
Variabel belum didefinisikan tetapi digunakan dalam operasi.
            Contoh :          B := B + 1       {B belum didefinisikan}
2     Penanganan Kesalahan
Prosedur penanganan kesalahan terdiri dari :
·           Mendeteksi kesalahan
·      Melaporkan kesalahan
·      Tindak lanjut perbaikan / pemulihan
Pelaporan kesalahan yang dilakukan oleh sebuah kompilator yang menemukan kesalahan meliputi :
·      Kode kesalahan
·      Pesan kesalahan dalam bahasa natural
·      Nama dan atribut identifier
·      Tipe – tipe yang terkait bila type checking
Contoh : Error Message : Error 162  jumlah: unknown identifier
Ø  Kode kesalahan = 162
Ø  Pesan kesalahan = unknown identifier
Ø  Nama identifier = jumlah
        Adanya pesan kesalahan tersebut akan memudahkan pemrogram dalam mencari dan mengoreksi sumber dari kesalahan.
Pada saat kompilator menemukan kesalahan terdapat beberapa tingkatan reaksi diantaranya adalah :
a.    Reaksi yang tidak dapat diterima (tidak melaporkan error)
·         Kompilator crash : berhenti atau hang
·         Looping : kompilator masih berjalan tapi tidak pernah berakhir karena looping tak berhingga (indefinite/onbounded loop)
·         Menghasilkan program objek yang salah : kompilator melanjutkan proses sampai selesai tapi program objek yang dihasilkan salah. Ini berbahaya bila tidak diketahui pemrogram, karena baru akan muncul saat program dieksekusi.
b.    Reaksi yang benar tapi kurang dapat diterima dan kurang bermanfaat. Kompilator menemukan kesalahan pertama, melaporkannya, lalu berhenti (halt). Ini bisa muncul bila pembuat kompilator menganggap jarang terjadi kemunculan error dalam program sehingga kemampuan kompilator untuk mendeteksi dan melaporkan kesalahan hanya satu untuk setiap kali kompilasi. Pemrogram akan membuang waktu untuk melakukan pengulangan kompilasi setiap kali terdapat sebuah error.                  
c.    Reaksi yang dapat diterima
·           Reaksi yang sudah dapat dilakukan, yaitu kompilator melaporkan kesalahan / error, dan selanjutnya melakukan:
Ø Recovery / pemulihan, lalu melanjutkan menemukan kesalahan / error yang lain bila masih ada.
Ø Repair / Perbaikan kesalahan, lalu melanjutkan proses translasi dan menghasilkan program objek yang valid
Kebanyakan kompilator dewasa ini sudah memiliki kemampuan recovery dan repair.
·         Reaksi yang belum dapat dilakukan, yaitu kompilator mengkoreksi kesalahan, lalu menghasilkan program objek sesuai dengan yang diinginkan pemrogram. Disini komputernya sudah memiliki kecerdasan untuk mengetahui maksud pemrogram. Tingkatan respon ini belum dapat diimplementasikan pada kompilator yang ada dewasa ini.
3     Pemulihan Kesalahan
Tujuannya mengembalikan kondisi parser ke kondisi stabil (supaya bisa melanjutkan proses parsing ke posisi selanjutnya). Strategi yang dilakukan error recovery sebagai berikut :
·       Mekanisme Ad Hoc
Recovery yang dilakukan tergantung dari pembuat kompilator sendiri/Spesifik, dan tidak terikat pada suatu aturan tertentu. Cara ini biasa disebut juga special purpose error recovery.
·       Syntax Directed Recovery
     Melakukan recovery berdasarkan syntax
     Contoh : ada program
                                begin
                                            A:=A+1
                                          B:=B+1;
                                          C:=C+1
                               end;
     kompilator akan mengenali sebagai (dalam notasi BNF)
     begin < statement>?<statement>;<statement>end;
     ? akan diperlakukan sebagai “;”
·       Secondary Error Recovery
     Berguna untuk melokalisir kesalahan / error, caranya :
·       Panic mode
     Maju terus dan mengabaikan teks sampai bertemu delimeter (misal ‘;’)
     contoh :
                                                  IF A := 1
                                                  Kondisi := true;
     Teks diatas terjadi kesalahan karena tidak ada instruksi THEN, kompilator   
      akan maju terus sampai bertemu ‘;’
·       Unit deletion
Menghapus keseluruhan suatu unit sintaktik (misal: <block>,<exp>,<statement> dan sebagainya), efeknya sama dengan panic mode tetapi unit deletion memelihara kebenaran sintaksis dari source program dan mempermudah untuk melakukan error repairing lebih lanjut.
·       Context Sensitive Recovery
     Berkaitan dengan semantik,misal bila terdapat variabel yang belum dideklarasikan(undifined variabel) maka diasumsikan tipenya berdasarkan kemunculannya.
Contoh :
                 B:= 'nama'
sementara diawal program variabel B belum dideklarasikan, maka  berdasarkan
kemunculannya diasumsikan variabel B bertipe string.
4          Error Repair
Bertujuan untuk memodifikasi source program dari kesalahan dan membuatnya valid sehingga memungkinkan kompilator untuk melakukan translasi program yang mana akan dialirkan ketahapan selanjutnya pada proses kompilasi. Mekanisme error repair meliputi :
Ø    Mekanisme Ad Hoc
                        Tergantung dari pembuat kompilator sendiri / spesifik.
Ø    Syntax Directed Repair
            Menyisipkan simbol terminal yang dianggap hilang atau membuang      
            terminal    
            penyebab kesalahan
            Contoh :                                 While a<1
                                                      I:=I+1;
            Kompilator akan menyisipkan DO karena kurang simbol DO
            contoh lain :
                                                Procedure Increment;
                                                begin
                                                            x:=x+1;
                                                end;
                                                end;
                 terdapat kelebihan simbol end, yang menyebabkan kesalahan maka     
                 kompilator akan membuangnya.
Ø    Context Sensitive Repair
            Perbaikan dilakukan pada kesalahan :
·                     Tipe identifier. Diatasi dengan membangkitkan identifier  
             dummy, misalkan :
                             Var A : string;
                             begin
                              A:=0;
                             end;
·                     Tipe konstanta. Diatasi dengan membangkitkan konstanta baru  
            dengan tipe yang tepat.
Ø    Spelling repair
            Memperbaiki kesalahan pengetikan pada identifier, misal :
                             WHILLE A = 1 DO
              Identifier yang salah tersebut akan diperbaiki menjadi WHILE









Referensi


CONTROL UNIT.



DAFTAR ISI

KATA PENGANTAR................................................................................................... ...... i
DAFTAR ISI..................................................................................................................       1
BAB I   PENDAHULUAN
A.  Latar belakang............................................................................................. ...... 2
B.  Tujuan.......................................................................................................... ...... 2

BAB II  PEMBAHASAN

A.  Definisi Control Unit................................................................................... ...... 3
B.  Struktur Control Unit.................................................................................. ...... 3
C.  Tugas Control Unit...................................................................................... ...... 5
D.  Input Output Control Unit................................................................................. 5
E.   CLU............................................................................................................. ...... 6
F.   Macam-macam Control Unit....................................................................... ...... 6

BAB III PENUTUP
              Kesimpulan....................................................................................................... ...... 8

REFERENSI.................................................................................................................. ...... 9




BAB I
PENDAHULUAN

A.  Latar Belakang
       Sebelum membahas lebih detail mengenai Control Unit, tentunya yang sangat penting kaitannya ialah CPU. Central Processing Unit (CPU) adalah bagian dari komputer yang berupa perangkat keras (hardware) yang merupakan pusat kendali dari sitem komputer dan mengkoordinasi semua kegiataan yang ada. Agar semua berjalan dengan baik, maka harus ada interaksi antara peralatan satu dengan yang lain agar setiap proses yang dilakukan brainware dapat berjalan sesuai keinginan.
       Pada awal-awal desain komputer, CU diimplementasikan sebagai ad-hoc logic yang susah untuk didesain. Sekarang, CU diimplementasikan sebagai sebuah microprogram yang disimpan di dalam tempat penyimpanan kontrol (control store). Beberapa word dari microprogram dipilih oleh microsequencer dan bit yang datang dari word-word tersebut akan secara langsung mengontrol bagian-bagian berbeda dari perangkat tersebut, termasuk diantaranya adalah register, ALU, register instruksi, bus dan peralatan input dan output di luar chip. Pada komputer modern, setiap subsistem ini telah memiliki kontrolernya masing-masing, dengan CU sebagai pemantaunya (supervisor), dan untuk mengetahui lebih lanjut, kami akan membahasnya pada bab selanjutnya.

B.  Tujuan
       Pembuatan tugas ini untuk melengkapi tugas dari mata kuliah Arsitektur dan Organisasi Komputer  yang di bimbing oleh  Bapak M. Erfan, S.Kom dan tujuan lainnya ialah untuk menambah wawasan kami tentang dunia komputer, dan yang akan dibahas disini ialah tentang Control Unit.


BAB II
PEMBAHASAN


A.  Definisi Control Unit

 










Control Unit atau Unit Kendali merupakan salah satu Unit yang terdapat pada CPU bertugas untuk mengatur dan mengendalikan semua peralatan yang ada pada sistem komputer. Unit kendali akan mengatur  kapan alat input menerima   data  dan kapan data
diolah serta kapan ditampilkan pada alat output. Unit ini juga mengartikan instruksi-instruksi dari program komputer, membawa data dari alat input ke memori utama, dan mengambil data dari memori utama untuk diolah. Bila ada instruksi untuk perhitungan aritmatika atau perbandingan logika, maka unit kendali akan mengirim instruksi tersebut ke ALU. Hasil dari pengolahan data dibawa oleh unit kendali ke memori utama lagi untuk disimpan, dan pada saatnya akan disajikan ke alat output.
























Gambar 1.1 Proses kerja CU


B.  Struktur Control Unit
Struktur merupakn bagaimana sebuah komputer diorganisasikan, terkait erat dengan strukturnya bagaimana komponenkomponen dalam sebuah komputer saling berhubungan satu sama lain.


 




  • Unit masukan (Input Unit) adalah perangkat keras komputer yang berfungsi sebagai alat untuk memasukan data atau perintah ke dalam komputer
  • Unit logika dan aritmatika (Arithmetic & Logical Unit / ALU) adalah salah satu bagian/komponen dalam sistem  di dalam sistem komputer berfungsi melakukan operasi/perhitungan aritmatika dan logika (seperti penjumlahan, pengurangan dan beberapa logika lain), AlU bekerja besama-sama memori. Dimana hasil dari perhitungan di dalam ALU di simpan ke dalam memori.
  • Unit memori/penyimpanan (Memory / Storage Unit) terbagi menjadi dua bagian yaitu memori internal dan memori eksternal. Memori internal berupa RAM (Random Access Memory) yang berfungsi untuk menyimpan program yang kita olah untuk sementara waktu, dan ROM (Read Only Memory) yaitu memori yang hanya
    bisa dibaca dan berguna sebagai penyedia informasi pada saat komputer pertama kali dinyalakan.
  • Unit keluaran (Output Unit) adalah perangkat keras komputer yang berfungsi untuk
    menampilkan keluaran sebagai hasil pengolahan data. Keluaran dapat berupa hardcopy
     (ke kertas), softcopy (ke monitor), ataupun berupa suara.
Control Unit dan ALU membentuk suatu unit tersendiri yang disebut Central Processing Unit (CPU). Hubungan antar masing-masing unit yang membentuk suatu sistem komputer dapat dilihat pada gambar berikut:
 








Data diterima melalui Input Device dan dikirim ke Memory. Di dalam Memory data disimpan dan selanjutnya diproses di ALU. Hasil proses disimpan kembali ke Memory sebelum dikeluarkan melalui Output Device. Kendali dan koordinasi terhadap sistem ini dilakukan oleh Control Unit.
C.  Tugas Control Unit
Adapun tugas-tugas yang dilakukan oleh Control Unit adalah :
1.    Mengatur dan mengendalikan alat-alat input dan output.
3.  Mengambil instruksi-instruksi dari memori utama.
4.  Mengambil data dari memori utama kalau diperlukan oleh proses.
5.  Mengirim instruksi ke ALU bila ada perhitungan aritmatika atau perbandingan logika serta mengawasi kerja.
6.  Menyimpan hasil proses ke memori utama.


D.  Input Output Control Unit
2.    Input Control Unit
               Berfungsi untuk menerima masukan (input) kemudian membacanya dan diteruskan ke Memory / penyimpanan. Dalam hubungan ini dikenal istilah peralatan masukan (input device) yaitu alat penerima dan pembaca masukan serta media masukan yaitu perantaranya.
          -    Clock/pewaktu: pewaktu adalah cara unit control dalam menjaga waktunya. Unit control menyebabkan sebuah operasi mikro (atau sejumlah operasi mikro yang bersamaan) dibentuk bagi setiap pulsa waktu. Pulsa ini dikenal sebagai waktu siklus prosesor.
          -    Register instruksi: opcode instruksi saat itu digunakan untuk menentukan operasi mikro mana yang akan dilakukan selama siklus eksekusi.
          -    Flag: flag ini diperlukan oleh unit control untuk menentukan status prosesor dan hasil operasi ALU sebelumnya.
          -    Sinyal control untuk mengontrol bus. Bagian bus control bus system memberikan sinyal-sinyal ke unit control, seperti sinyal-sinyal interupsi dan acknowledgement.
     2.  Output Control Unit
                                         Berfungsi untuk menerima hasil pengolahan data dari CPU melalui memori. Seperti halnya pada unit masukan maka pada unit keluaran dikenal juga istilah peralatan keluaran (Output device) dan media keluaran (Output media).
·       Sinyal control didalam prosesor terdiri dari dua macam: sinyal-sinyal yang menyebabkan data dipindahkan dari register yang satu keregister yang lainnya, dan sinyal-sinyal yang dapat mengaktifasi fungsi-fungsi ALU tertentu.
·       Sinyal control bagi bus control sinyal ini juga terdiri dari dua macam: sinyal control bagi memori dan sinyal control bagi modu-modul I/O.

E. CLU
Unit kendali logika ( Control Logic Unit ) bertugas untuk mengatur seluruh aktifitas perangkat keras di dalam komputer.
CLU bertugas untuk : :
1. Mengambil suatu instruksi dari memori
2. Memberi kode pada instruksi untuk menentukan operasi mana yang akan dilaksanakan
3. Menentukan sumber dan tujuan data di dalam perpindahan data
4. Mengeksekusi operasi yang dilakukan
Setelah menginterpretasi kode biner suatu instruksi, CLU menghasilkan serangkaian perintah kendali, yang disebut sebagai instruksi mikro (microinstruction ) atau operasi mikro.
Instruksi mikro merupakan operasi primitif tingkat rendah yang bertindak secara langsung pada sirkuit logika suatu komputer dan mengatur fungsi-fungsi sebagai berikut :
1. Membuka/menutup suatu gerbang ( gate ) dari sebuah register ke sebuah bus
2.   Mentransfer data sepanjang bus
3.  Memberi inisial sinyal-sinyal kendali seperti READ, WRITE, SHIFT, CLEAR & SET
4.  Mengirimkan sinyal-sinyal waktu
5.  Menunggu sejumlah periode waktu tertentu
6. Menguji bit-bit tertentu dalam sebuah register

F.  Macam-macam Control Unit
Single-Cycle CU
Proses di CUl ini hanya terjadi dalam satu clock cycle, artinya setiap instruksi ada pada satu cycle, maka dari itu tidak memerlukan state. Dengan demikian fungsi boolean masing-masing control line hanya merupakan fungsi dari opcode saja. Clock cycle harus mempunyai panjang yang sama untuk setiap jenis instruksi. Ada dua bagian pada unit kontrol ini, yaitu proses men-decodeopcode untuk mengelompokkannya menjadi 4 macam instruksi (yaitu di gerbang AND), dan pemberian sinyal kontrol berdasarkan jenis instruksinya (yaitu gerbang OR). Keempat jenis instruksi adalah “R-format” (berhubungan dengan register), “lw” (membaca memori), “sw” (menulis ke memori), dan “beq” (branching). Sinyal kontrol yang dihasilkan bergantung pada jenis instruksinya. Misalnya jika melibatkan memori ”R-format” atau ”lw” maka akan sinyal ”Regwrite” akan aktif. Hal lain jika melibatkan memori “lw” atau “sw” maka akan diberi sinyal kontrol ke ALU, yaitu “ALUSrc”. Desain single-cycle ini lebih dapat bekerja dengan baik dan benar tetapi cycle ini tidak efisien.


     Multi-Cycle CU
Berbeda dengan unit kontrol yang single-cycle, unit kontrol yang multi-cycle lebih memiliki banyak fungsi. Dengan memperhatikan state dan opcode, fungsi boolean dari masing-masing outputcontrol line dapat ditentukan. Masing-masingnya akan menjadi fungsi dari 10 buah input logic. Jadi akan terdapat banyak fungsi boolean, dan masing-masingnya tidak sederhana. Pada cycle ini, sinyal kontrol tidak lagi ditentukan dengan melihat pada bit-bit instruksinya. Bit-bit opcode memberitahukan operasi apa yang selanjutnya akan dijalankan CPU; bukan instruksi cycle selanjutnya.
    
Gambar CU :
    


BAB III
PENUTUP

       KESIMPULAN  :
       Central Unit merupakan unitt kendali yang bertugas untuk mengatur dan mengendalikan semua peralatan yang ada pada sistem computer atau control unit juga dapat dikatakan sebagai pengendali dari seluruh sistem rumah tangga didalam CPU.
       Adapun struktur dari CU yaitu terdiri atas input unit, ALU, storage unit dan output unit. CU memiliki tugas yaitu untuk mengontrol operasi CPU dan secara keselurahan mengontrol komputer sehingga terjadi sinkronisasi kerja antar komponen dalam menjalankan fungsi – fungsi operasinya. I/O CU terdiri atas Clock/pewaktu, Register instruksi, flag, Sinyal control untuk mengontrol bus, Sinyal control didalam prosesor, Sinyal control bagi bus. CLU merupakan Unit kendali logika ( Control Logic Unit ) bertugas untuk mengatur seluruh aktifitas perangkat keras di dalam komputer. Dan macam dari CU adalah Single-Cycle CU dan Multi-Cycle CU.





REFERENSI

ü  Id.wikipedia.org/wiki/unit.kendali
ü  Rajarayu.blogspot.com/2012/11/operasi-unit-kendali-cu-control unit.html
ü  Rahmadanier.wordpress.com/2011/04/17/mengenal-alu-dan-cu/
ü  http://radmarssy.wordpress.com/2007/02/07/struktur-dasar-komputer/
ü  http://l-doel.blogspot.com/2010/10/struktur-dasar-komputer.html