Saturday, 13 December 2014

Hazard in Pipelining

Dalam mengimplementasi pipelining, terdapat 3 kondisi yang menyebabkan pipelining kehilangan sebagian total kinerja yang bisa diraih. 3 kondisi ini dikenal dengan hazard.

1.       Structural Hazard
Structural hazard terjadi karena adanya konflik dalam penggunaan resource oleh masing-masing instruksi yang sedang berada dalam pipeline.

Pipelining pada dasarnya memungkinkan beberapa instruksi dikerjakan dalam waktu yang bersamaan. Ketika masing-masing instruksi tersebut dieksekusi, mesin harus mampu memenuhi resource yang dibutuhkan. Ada kalanya mesin tidak mampu melakukan hal tersebut, yang menyebabkan sebuah resource mengalami konflik dalam penggunaannya oleh instruksi-instruksi yang kebetulan akan mengakses resource yang sama.

Instruction Pipeline

Instruction pipeline adalah teknik yang digunakan pada komputer untuk meningkatkan throughput eksekusi instruksi pada Central Processing Unit (CPU). Pipeline adalah sekumpulan tahapan proses yang terhubung secara berurutan.Output dari sebuah tahap proses menjadi input untuk tahap berikutnya. Pipeline tidak mengurangi waktu eksekusi sebuah instruksi tetapi meningkatkan jumlah instruksi yang dapat diproses secara bersamaan.


Dibawah ini akan dibahas tentang Instruction Pipeline pada CPU. Hal-hal yang dicakup antara lain adalah konsep mengenai pipeline, permasalahan, dan hambatan yang ada pada pipeline khususnya mengenai dependensi data, penanganan percabangan instruksi, dan penjelasan mengenai contoh implementasi pipeline pada beberapa prosesor komputer.

KONSEP PIPELINE
Diasumsikan pada sebuah bisnis warung makan memiliki tiga tahapan pekerjaan yaitu Menyiapkan bahan makanan, Memasak, dan Mengantar makanan ke meja pelanggan yang masing-masing dikerjakan oleh satu orang. Setiap pesanan pelangganyang diterima akan selalu mengalami tiga tahapan tersebut. Berikut adalah ilustrasi urutan proses jika tidak menggunakan konsep pipeline.

Gambar 1. Proses Sumber Daya Tanpa Pipeline

Friday, 24 October 2014

Format Instruksi dan Bahasa Assembly Pada Instruction Set Design

FORMAT INSTRUKSI
Sebuah format instruksi mendefinisikan susunan bit-bit dari sebuah instruksi.sebuah format instruksi harus menyertakan sebuah opcode dan, baik secara implisit ataupun eksplisit, 0 atau lebih operan. setiap operan eksplisit direferensikan menggunakan jenis pengalamatan yang telah dibahas sebelumnya. Format yang digunakan harus, baik secara implisit atau eksplisit, mengindikasikanjenis pengalamatan yang digunakan. Sebagian besat set instruksi memiliki lebih dari satu format instruksi.

a.      Panjang instruksi
            Salah satu isu terbesar yang harus dihadapi adalah panjang format instruksi.Keputusan ini berpengaruh dan dipengaruhi oleh, organisasi memori, struktur bus, kompleksitas processor dan kecepatan processor.Keputusan ini juga menentukan kekayaan dan fleksibilitas sebuah mesin dalam pandangan seorang programmer bahasa assembly.
            Pertimbangan dasar panjang instruksi salah satunya terletak pada pilihan apakah memiliki instruksi yang powerful atau memilih untuk menghemat ruang memori.Pertimbangan lainya, adalah pilihan apakah panjang sebuah instruksi harus sama dengan lebar jalur komunikasi memori (data bus) atau salah satunya (panjang instruksi atau lebar jalur) harus merupakan kelipatan dari yang lainya (contoh lebar jalur = 2 x panjang instruksi). feature penting lain yang perlu di perhatikan adalah panjang instruksi harus merupakan kelipatan panjang karakter (word). Dengan demikian, tidak ada bit yang tidak digunakan.

Pengalamatan Pada Instruction Set Design

Bagian alamat dalam sebuah format instruksi pada umumnya relatif berukuran kecil.Dilain pihak, kita menginginkan agar bagian ini cukup besar untuk mereferensi lokasi pada memoriutama atau memori virtual (pada beberapa sistem).Untuk mencapai tujuan ini, beberapa jenis teknik pengalamatan telah digunakan. Teknik-teknik tersebut berdasar pada kecenderungan untuk memilih opsi pengelamatan dengan rentang alamat yang lebar/fleksibel dengan proses perhitungan alamat yang kompleks atau memilih rentang alamat yang terbatas namun dengan kalkulasi alamat yang lebih mudah. Pada sesi ini kita akanmembahas jenis pengalamatan yang umum digunakan:
a.      Immediate
b.      Direct
c.       Indirect
d.      Register
e.       Register Indirect
f.        Displacement
g.      Stack

Jenis Operand dan Jenis Operasi Instruksi Mesin

 JENIS OPERAND
          Instruksi mesin melakukan operasi terhadap data. Pada umumnya data dikategorikan ke dalam angka, karakter dan data logika.

a.        Angka
       Setiap bahasa mesin mengandung tipe data numerik. Umunya terdapat tiga tipe data angka yang ada pada komputer yaitu:
1.        Binary integer
2.        Binary floating point
3.        Desimal
          Semua operasi pada internal komputer berupa data biner, namun user berinteraksi dengan bilangan desimal. Maka perlu dilakukan konversi dari desimal ke bilangan biner pada input dan konversi dari biner ke desmimal pada output. Bilangan desimal direpresentasikan dalam 4 bit kode biner maka 0=0000, 1=0001,...,8=1000, 9=1001. Sedangkan untuk desimal 246 = 0000 0010 0100 0110. Untuk bilangan negatif direpresentasikan dengan 4 bit yang diletakkan pada awal atau akhir string. Standar tanda yang digunakan adalah 1100 untuk bilangan positif dan 1101 untuk tanda bilangan negatif.

Karakteristik Instruksi Mesin

Operasi dari sebuah prosesor ditentukan oleh instruksi yang akan dieksekusi yang disebut dengan instruksi mesin atau instruksi komputer. Berbagai macam instruksi yang dapat dieksekusi oleh prosesor disebut dengan processor instruction set.
Gambar 1. Diagram Siklus Instruksi

Virtual Memory

Virtual memory merupakan teknik yang sudah umum disediakan oleh setiap sistem operasi dalam komputer sekarang. Hal ini disebabkan karena teknik ini menghasilkan keuntungan yang besar dengan biaya yang relatif murah. Ketika menggunakan komputer yang memiliki kapasitas RAM terbatas, seringkali pengguna dihadapkan dengan himbauan aplikasi tidak dapat dijalankan karena memori penuh. Dengan memanfaatkan virtual memory, komputer akan melihat bagian RAM yang sedang tidak digunakan saat itu untuk melakukan penyalinan ke dalam hard disk. Penyalinan yang dilakukan berjalan secara otomatis sehingga tidak membuat pengguna mengetahui detail proses tersebut dan seakan-akan hanya terdapat satu memori yang bekerja di sana yang disebut “virtual memory”. 
Seperti yang sudah diketahui, hard disk memiliki kecepatan yang jauh lebih lambat dibandingkan dengan RAM. Semakin sistem terlalu memanfaatkan virtual memory maka sistem akan mengalami penurunan performa karena hard disk di sini hanya bersifat sebagai pembantu saja.
Virtual memory biasa diimplementasi dengan menggunakan demand paging. Page adalah kumpulan chunk dari sebuah program (instruksi + data) dan frame adalah chunk dari main memory yang dapat ditempati oleh page. Paging sendiri adalah proses segmentasi dari program/proses dan main memori menjadi kumpulan page dan frame tersebut.
Gambar 1. Proses Paging