Pegembangan Kompiler Menggunakan Metoda Shift Instruction dan Smallest Schedule Instruction
oleh
Eko Travada SP., ST., MT
Fakultas Ilmu Komputer Universitas Nasional Pasim
Abstrak
Kompiler adalah suatu proses yang mentranslasikan dari suatu bahasa sumber ke bahasa tujuan. Proses Kompilasi untuk komputer yang memiliki lebih dari satu prosesor memiliki perbedaan bila dibandingkan komputer yang berprosesor tunggal. Dengan prosesor berjumlah lebih dari satu maka harus dilakukan pembagian tugas untuk masing – masing prosesor yang tersedia agar dapat diproses lebih cepat. Pada makalah ini akan dibahas dua metode yang dapat digunakan untuk melakukan paralelisasi instruksi
squential menjadi instruksi paralel.
1. Pendahuluan
Kompiler adalah suatu proses mengubah dari bahasa sumber ke bahasa tujuan. Bahasa sumber dapat berupa bahasa pascal, bahasa assembly dan bahasa lain yang dalam penulisannya menggunakan bahasa yang familiar dengan kebiasaan manusia untuk berkomunikasi. Bahasa ini disebut dengan bahasa level tinggi, sedangkan bahasa yang dipahami oleh komputer adalah bahasa mesin atau bahasa level rendah. Saat ini proses kompilasi tidak hanya diartikan sebagai mengubah bahasa dari level tinggi ke level rendah, proses kompilasi adalah merubah suatu bentuk bahasa ke bentuk bahasa lain.
Pemrosesan secara paralel adalah suatu teknik untuk mempercepat proses dari suatu program. Program – program yang dikerjakan dengan satu prosesor disebut dengan program sekuensial. Program sekuensial juga dapat dikerjakan dengan prosesor lebih dari satu. Keuntungan yang didapat adalah peningkatan kecepatan proses bila dibandingkan dikerjakan dengan satu prosesor. Dalam paper ini akan dijelaskan metoda paralelisasi program.
Paper ini terbagi beberapa bagian , bagian satu satu menjelaskan progam kompilasi dari program sumber yang telah dimasukkan, bagian dua proses analisa ketergantungan data , bagian tiga menjelaskan paralelisasi menggunakan metoda Pergeseran intruksi dan , bagian empat menjelaskan paralelisasi mengunakan metoda penjadualan terkecil.
2. Kompiler
Kompiler terdiri dua bahasa yaitu bahasa sumber dan bahasa tujuan, gambar 1 compiler Source language Target Language
Gambar 2.1 Proses Kompilasi
Dari pengertian diatas maka sebuah kompilator akan membaca dalam bahasa sumber dan menerjemahkan bahasa sumber tadi ke dalam suatu bahasa lain yang disebut dengan bahasa sasaran. Dalam melakukan proses penerjemahan kompilator akan melaporkan adanya keanehan-keanehan atau kesalahan yang mungkin diketemukan. Proses penerjemahan yang dilakukan oleh kompilator disebut proses kompilasi (compiling).
3. Tahap – tahap proses Kompilasi
Seperti telah dijelaskan diatas ada dua tahap proses kompilasi yaitu tahap analisis dan tahap sintesis.
3.1 Tahap analisis terdiri dari :
a) Analisis Leksikal , yaitu pembacaan sekilas (scanning) . Dalam kaitan ini aliran karakter yang membentuk program sumber dibaca dari kiri ke kanan dan dikelompokkan dalam apa yang disebut token yaitu barisan dari karakter yang dalam suatu kesatuan yang mempunyai arti tersendiri.
b) Analisa sintaktik atau analisa hirarki, yaitu dalam tahap ini karakter atau token yang diperoleh pada analisis leksikal disusun dan dikelompokkan dalam suatu hirarki tertentu yang secara keseluruhan mempunyai arti tertentu.
c) Analisis Semantik
Disini dilakukan pengecekan pada struktur akhir yang telah diperoleh dan diperiksa kesesuaianya dengan komponen program yang ada. d) Cycles Count
Menghitung Cycles Program Sequential yang terbentuk e) Register Analysis dependent
Mengecek Keterkaitan antara register yang ada di program sequential.
f) Count SpeedUp Of Program
Menghitung pertambahan kecepatan yang dihasilkan sesuai dengan mikroprosesor yang digunakan.
g) Create Comunication among processor
3.2 Tahap Sintesis
Program yang telah diparalelisasi diubah ke dalam format kode mesin yang dapat dipahami oleh mikroprosesor, tampak di gambar 2
Leksik analis Sintax Analisis Simbol Table Cancel If Speed Up = 1 Assembly Paralel Code Register Analitis Dependent Change Sequential Program to Paralel Program Source Assembly Code Sequential Semantik Analisis Cycles Count of sequential Program Count Speed Up Of paralel Programming
Gambar 2 , Tahapan Proses Kompiler Paralel
4. Analisa Ketergantungan Data
Suatu kemampuan untuk dapat mengeksekusi beberapa segment program secara paralel prosesing ditentukan oleh tidak ketergantungan atau kemandirian dengan segment yang lain. Kemandirian dari suatu statement ditentukan oleh ketergantungan antar data - data yang digunakan di setiap statement dalam program tersebut.
Metoda Depedence graph/grafik ketergantungan dapat digunakan untuk menggambarkan relasi ketergantungan data setiap statement dalam suatu program. Node dalam depedence graph mewakili statement dalam program, dan arah panah menunjukkan keterkaitan antar setiap node.
Analisa dari depedence graph menghasilkan kemungkinan dari program untuk dapat dieksekusi secara paralel. Notasi dari depedence graph tampak di gambar 3
Gambar 3 Notasi Simbol Depedence Graph Sebagai contoh diketahui program sebagai berikut :
S1 : Mov R1,A S2 : Add R2,R1 S3 : Mov @R1,R3 S4 : Mov 20h,@R1
Digambarkan dengan depedence graph sebagai berikut :
S2
S1
S3
S4
Gambar 4 Grafik ketergantungan
Dari gambar 4 terlihat bahwa S4 dapat dieksekusi setelah S1 dan S3 dieksekusi. S3 tergantung keluaran S1. S2 dapat dieksekusi setalah S1 dieksekusi dan antara S3 dan S2 antidepedence yaitu statement S2 dan S3 menggunakan register yang sama. Depedence graph memperlihatkan terlihat yang benar-benar tidak bergantung adalah proses S2 dan S4.
Misal diketahui tersedia dua buah prosesor P1 dan P2 dan dua buah instruksi dengan Input I1 dan I2 dan output O1 dan O2 dan keduanya independent, maka prosesor dapat dijalankan secara paralel dan disimbolkan dengan P1||P2.
Node mewakili
statement
Aliran Data antara setiap statement
Ketergantungan output antara setiap statement antidepedence/ bila antara input dan output di statement berikutnya menggunakan variabel yang sama
Maka bila diketahui ada 2 baris instruksi maka masukkannya adalah I1, I2 dan keluarannya O1,O2. maka kondisi Bernstein untuk menganalisa ketergantungan terpenuhi bila
2 1 1 2 2 1 O O O I O I
5. Metode Shift Processor
Metoda ini adalah merupakan pengembangan dari teori depedence graph dan digabung dengan teori bernstein condition. Kemudian bila dari hasil analisa instruksi tersebut independen maka instruksi dipindahkan ke prosesor yang berikutnya. Bila instruksi yang terakhir berada di prosesor ke n dan n = total prosesor yang digunakan, dan bila instruksi berikutnya independen maka instruksi dipindah ke lokasi prosesor ke n-1. Metoda ini peletakkan instruksi yang independen akan digeser ke kanan bila tercapai prosesor terakhir maka instruksi akan digeser ke kiri. Metoda ini disebut dengan Shift Processor.
Dalam penerapannya shift processor dijabarkan dalam gambar berikut :
Start
End Scanner
Penentuan letak instruksi di prosesor ke- n dan
jadwal kerja di prosesor ke - n Definisikan keterkaitan antar instruksi di prosesor yang berbeda
• Proses Scan akan membaca Program sumber dari teks editor untuk dipilah menjadi token –token kemudian akan dipisahkan yang menjadi Opcode dan menjadi Operand
• Setelah dipilah dianalisa ketergantungan register – register bila bergantung diletakkan di prosesor ke n yang sama bila tidak bergantung dipindahkan ke prosesor n + 1 bila n + 1 < total prosesor yang digunakan, jika n + 1> total prosesor diletakkan di n -1
• Diatur jadwal kerja prosesor
• Definisikan keterkaitan instruksi di prosesor yang berbeda 6. Metoda Smallest Schedule
Metoda ini adalah merupakan pengembangan dari teori depedence graph dan digabung dengan teori bernstein condition. Kemudian bila dari hasil analisa instruksi tersebut independen maka instruksi dipindahkan ke prosesor yang memiliki jadwal kerja yang paling sedikit. Metoda ini ditambahkan algoritma pencarian jadwal terkecil dari n prosesor yang tersedia
Dalam penerapannya smallest Schedule dijabarkan dalam gambar berikut :
Start End Scanner Penentuan letak instruksi di prosesor ke- n Penjadwalan kerja tiap prosesor Definisikan keterkaitan antar instruksi di prosesor yang berbeda
Metode ini hampir serupa dengan shift prosesor hanya memiliki kelebihan dalam proses mengalokasikan intruksi, yaitu penempatannya di prosesor dengan jadwal yang paling sedikit.
Untuk menghitung pertambahan kecepatan digunakan hukum amdahl’s. dirumuskan dengan formula
) 1 ( 1 tan n n Kecepa7. Hasil - hasil Percobaan
Program yang dihasilkan diuji dengan tiga jenis program dengan 2 buah program yang memiliki memiliki instruksi yang sekuensial, dan satu jenis program yang dependent.
Percobaan 1
diketahui program sekuensail sebagai berikut :
Tabel 1 Contoh Program Sekuensial Instruksi Hasil MOV R1,#5 R1 <-- 5 MOV A,#6 A <-- 6 ADD A,R1 A = A + R1 / 5 + 6 = 11 MOV R2,A R2 <-- A / R2 <-- 11 MOV R3,#3 R3 <-- 3 MOV A,#4 A <-- 4 ADD A,R3 A = A + R3 / 4 + 3 = 7 ADD A,R2 A = A + R2/ 7 + 11 = 18
diparalelisasi dengan shift prosesor menghasilkan program sebagai berikut : Tabel 2 Hasil Paralelisasi dengan metoda Shift Processor
Jadwal Mikroprosesor 1 Mikroprosesor 2 0 R1 <-- 5 A <-- 6 1 R3 <-- 3 A = A + R1 = 11 2 R2 <-- A / 11 3 A <-- 4 4 A = A + R3 = 7 5 A = A + R2 = 18
Bila menggunakan program maka keluaran yang dihasilkan tampak di gambar 5
Gambar 5 Keluaran yang dihasilkan dengan Metoda Shift Processor Bila diproses dengan Smallest Schedule maka keluaran yang dihasilkan :
Tabel 4.3 Hasil Paralelisasi dengan metoda Smallest Schedule Jadwal Mikroprosesor 1 Mikroprosesor 2 0 R1 <-- 5 A <-- 6 1 R3 <-- 3 A = A + R1 = 11 2 A <-- 4 R2 <-- A / 11 3 A = A + R3 = 7 4 A = A + R2 = 7 + 11 = 18
Dijalankan dengan program dihasilkan :
Gambar 6 Keluaran yang dihasilkan dengan Smallest schedule
Dari hasil percobaan yang dilakukan didapat didapatkan bahwa kecepatan tidak akan bertambah bila ketergantungan antar instruksi demikian besarnya ditunjukkan dengan nilai alfa >0. Sedangkan bila alfa = 0, maka kecepatan yang didapat akan sempurna tampak di grafik 7a dan 7b.
Gambar 7.a Pertambahan kecepatan dengan metoda Shift Processor
Gambar 7b Pertambahan kecepatan dengan metoda Smallest Schedule
8. Kesimpulan
1. Program yang dirancang dapat melakukan proses paralelisasi dari program sumber sekuensial.
2. Kedua metode yang digunakan terbukti dapat melakukan proses paralelisasi dengan baik dan benar.
3. Dari hasil pengujian metoda pencarian prosesor dengan jadwal terkecil memiliki algoritma yang lebih baik dibuktikan dengan peningkatan kecepatan yang diperoleh lebih baik dari metode pergeseran instruksi antar mikroprosesor
SpeedUp Performance With Shift Processor
0 1 2 3 4 5 6 0 2 4 6 8 10 Number of Processor Sp e e d U p Percobaan 3, Alfa = 0 Percobaan 2 , alfa = 0,625 Percobaab 1, alfa = 0,692
SpeedUp PerFormance Smallest Schedule
0 1 2 3 4 5 6 0 1 2 3 4 5 6 7 8 9 Number of Processor Sp e e d U p Percobaan 3, Alfa = 0 Percobaab 1, Alfa 0,625 Percobaab 2, alfa 0,692
4. Dari hasil proses simulasi program dapat dikathui Degree Of Paralelism
(DOP) dari suatu program sehingga dapat mengestimasi kemungkinan total mikroprosesor maksimum yang digunakan.
5. Untuk mendapat peningkatan kecepatan yang baik perlu dpilih jenis program yang memiliki sifat ketergantungan sangat minimal agar dapat tercapai kecepatan yang sempurna , dibuktikan dengan hukum Amdahl’s.
9. Saran – saran dan Pengembangan
1. Program yang dibuat telah mampu melakukan proses paralelisasi dengan baik , hanya instruksi – instruksi yang mampu dikenali masih terbatas pada fungsi aritmatika. Hal ini disebabkan setiap instruksi memiliki ketergantung yang unik antara tiap instruksinya sehingga perlu dikembangkan algoritma khusus untuk mengidentifikasi proses paralelisasi yang harus dilakukan disesuaikan dengan instruksi yang ada.
2. Dilakukan penelitian lebih lanjut untuk perancangan hardware mikroprosesor paralel agar dapat diketahui faktor-faktor tunda yang terjadi antara mikroprosesor keluarga MCS-51 dan antara mikroprosesor dan komponen lain. Dengan diketahuinya faktor delay
dapat diperhitungkan secara lebih akurat pertambahan kecepatanbahan bila dilakukan proses paralelisasi.
Daftar Pustaka
Kai Hwang(1993), Advanced Computer Architecture, McGraw-Hill Series in Computer Science
Dick Grune,Henri E.Bat,Ceriel J.H. Jscobs, Koen G. Langendoen(2001), Modern Compiler Design, John Willey & Sons, Ltd
Andrew S. Tanembaum(2002), Organisasi Komputer Terstruktur Jilid 2, Salemba Teknika & Person Education Asia Pte.Ltd
I. Scott Mackenzie (1995), The 8051 Microcontroler, Prenctice Hall
Kenneth J. Ayala (1998), The 8051 Microcontroler, West Publishing Company Paulus Sudaryo (2004), Pemrograman Berorientasi Objek menggunakan
Delphi, Andi
John Carrol, Darrel Long(1989), Theory Of Finite Automata, Prentice Hall International Edition.
Sumantri Slamet, Heru Suhartono(1993), Teknik Kompilasi, Elex Media Komputindo kelompok Gramedia Jakarta
Firrar Utdirartatmo(2001), Teori Bahasa dan Otomata, J&J Learning Jogjakarta Isabel Gonzales , Effective Design Method for Implementation of parallel Processing by Data Multiplexing Technique, C/Einstein,7 (PTM), 28760 Tres Cantos Madrid Spain
Marco Cantu(2001), Delphi 6, Sybex
Douglas V. Hall (1992), Microprocessors and Interfacing, McGrawHill International Edition
Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman(1988),Compilers Principles, Techniques, and tools , Addison Wesley Publishing Company
Hassan Gomaa (2000), Designing Concurrent, Distributed, and Real Time application with UML, Addison Wesley Publishing Company