Saturday, 13 December 2014

Branch in Instruction Pipeline

MASALAH DENGAN BRANCH

Branch atau percabangan instruksi seringkali kita temukan dalam suatu program atau kode. Pada instruction pipelining, sebuah instruksi yang bercabang dapat menimbulkan masalah berupa delay dan kesulitan menentukan instruksi mana yang harus dilakukan setelahnya, seperti yang diilustrasikan berikut:
Misalnya kita memiliki sebuah kode:

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

Direct, Set Associative, Associative Mapping

A. DIRECT MAPPING
Blok address akan disimpan pada sebuah baris unik pada cache. Dari 24 bit address, dapat dibagi menjadi: (dari belakang)
  • 2 bit LSB berisi byte dari blok.
  • 22 bit sisanya berisi byte dari memory dari terdiri atas
          a. 14 bit LSB untuk membedakan cache line
          b. 8 bit terakhir adalah MSB berisi “tag”, sebuah elemen unik yang menjadi penanda akan               keunikan memory blok yang direferensikan oleh cache line tersebut

Keuntungan dari direct mapping antara lain.
  • Sederhana
  • Elemen “tag” pada setiap cache line pendek(8bit), sehingga mempercepat proses compare
  • Pengaksesan blok memory cepat
Kerugian dari direct mapping antara lain.
  • Jika terdapat memory address baru yang akan disimpan di cache yang memiliki line yang sama dengan sebuah cache line yang telah ada pada cache, walaupun menunjuk ke blok memory yang berbeda pada memory, address baru akan menimpa cache line lama.

Sunday, 5 October 2014

Memory System

Memori merupakan tempat penyimpanan data pada suatu perangkat elektronik, misalnya komputer. Sistem merupakan sekumpulan atau suatu kesatuan yang terdiri dari komponen yang dihubungkan untuk mencapai suatu tujuan. Oleh karena itu sistem memori merupakan sekumpulan komponen-komponen yang dihubungkan untuk memudahkan aliran informasi atau data untuk membentuk fungsi sebagai tempat penyimpanan data agar dapat diproses.

Sistem memori terbentuk sebagai tempat berkumpulnya informasi dalam sistem komputer. Prosesor (atau biasa disebut dengan Central Processing Unit, atau CPU) mengakses seluruh data dari sistem memori untuk melakukan komputasi dan menyimpan hasilnya kembali pada memori. Memori selalu didefinisikan sebagai kumpulan dari tempat penyimpanan data yang setiap lokasi penyimpanannya memiliki alamat tersendiri berupa numerik yang dapat diakses dengan berbagai teknik pengaksesan.

Memori merupakan komponen penting kedua setelah prosesor. Secara ideal, memori seharusnya sangat cepat, besar, dan murah pengaksesannya. Namun kenyataannya tidak seperti demikian, memori sangat mahal dan belum cukup besar untuk menampung data yang sesuai dengan kebutuhan pada zaman canggih ini. Faktanya, pada zaman dulu, kemampuan prosesor jauh lebih lambat dan ketersediaan memori pada masa itu sudah cukup untuk memenuhi kebutuhan. Seiring dengan perkembangannya, perkembangan prosesor menjadi semakin cepat dan kapasitas memori terus bertambah seiring dengan kebutuhan. 

Namun apabila dibandingkan, kecepatan perkembangan dari prosesor untuk meningkatkan kecepatan pengolahan datanya lebih cepat dibandingkan dengan kecepatan pertambahan kapasitas memori. Hal tersebut terus berlanjut hingga zaman ini sehingga kecepatan prosesor lebih cepat dibandingkan dengan kapasitas memori yang dibutuhkan. Prosesor pada zaman sekarang memiliki kecepatan yang lebih tinggi, namun kapasitas memori tidak cukup besar dan cepat untuk mengiringi cepatnya prosesor.

ACCELERATED PROCESSING UNIT

Accelerated Processing Unit (APU) adalah suatu pengembangan dari arsitektur CPU dimana di dalam CPU tersebut tedapat komponen pemrosesan tambahan yang dirancang untuk meningkatka akselerasi proses komputasi yang ada di dalam CPU. Beberapa komponen CPU ditambahkan seperti GPU (Graphics Processing Unit) yang ditujukan untuk keperluan general purpose computing (General Purpose-GPU), serta FGPA (Field Programmable Gate Array), dan beberapa komponen lain yang meningkatkan performa dari proses komputasi. Salah satu peningkatan performa komputasi tersebut dapat melalui eksekusi suatu proses secara parallel.
Gambar 1. Perkembangan Teknologi Heterogeneous Computing pada APU

Friday, 3 October 2014

Machine Cycle

       Machine cycle atau nama lainnya adalah processor cycle atau instruction cycle merupakan merupakan suatu siklus instruksi dasar yang dikerjakan oleh CPU di dalam melakukan eksekusi suatu instruksi. Rangkaian proses eksekusi instruksi ini dimulai dari proses fetching data dan instruksi yang ada didalam memori hingga proses penulisan kembali hasil eksekusi instruksi tersebut ke dalam memori.

Sebelum suatu instruksi dieksekusi oleh processor, terlebih dahulu sekumpulan instruksi tersebut disimpan dalam memori. Ketika akan dieksekusi, instruksi tersebut akan diambil (fetch) ke dalam memori, berdasarkan alamat instruksi yang disimpan dalam PC (Program Counter) yang terdapat dalam CPU. Setelah instruksi tersebut diload dari memori, nilai PC akan di-increment untuk menunjuk alamat berikutnya dari dari instruksi yang akan dieksekusi. Tahapan berikutnya setelah proses load (fetch) dilakukan, instruksi tersebut akan di-decode, dan kemudian dilakukan proses eksekusi.  Setelah itu , hasil dari eksekusi instruksi tersebut akan dikembalikan lagi ke dalam memori. Siklus instruksi tersebut akan dikerjakan secara berulang oleh CPU selama masih ada instruksi yang akan dieksekusi.
Gambar 1. Siklus Instruksi

Thursday, 2 October 2014

Sytem Clock dan Clock Rate

System clock menggambarkan model pengukuran untuk system time (waktu sistem), dimana untuk setiap rangkaian proses eksekusi instruksi (fetching, decoding, executing, writing) di ukur dalam berapa jumlah tick. System clock ini nantinya yang akan mengatur waktu dari tiap tahapan eksekusi instruksi (machine cycle) kapan dimulai dan kapan selesai. System clock ini akan diukur dalam satuan cycle per second (Hertz).
Gambar 1. Sistem Clock

Perkembangan Arsitektur CPU

Arsitektur CPU terus berkembang dari CISC dan RISC untuk peningkatan performa dari CPU itu sendiri. Pengembangan arsitektur itu antara lain superscallar dan VLIW (Very Long Instruction Word).

Superscallar atau processore superscallar adalah istilah bagi processor yang mampu melakukan banyak instruksi setiap siklusnya, dengan menggunakan sebuah teknik yang disebut pipelining. Superscallar adalah arsitektur processor yang memungkinkan eksekusi yang bersamaan (parallel)  dari instruksi yang banyak pada tahap pipeline yang sama sebaik tahap pipeline yang lain sehingga dapat meningkatkan kecepatan CPU.
Gambar 1. Arsitektur Superskalar

Tuesday, 30 September 2014

Reduce Instruction Set Computer (RISC) dan Complex Instruction-Set Computer (CISC)


RISC singkatan dari Reduced Instruction Set Computer. Merupakan bagian dari arsitektur mikroprosessor, berbentuk kecil dan berfungsi untuk negeset istruksi dalam komunikasi diantara arsitektur yang lainnya. Termasuk dalam arsitektur ini adalah embeded CPU, yaitu ARM. ARM adalah processor yang digunakan untuk handphone, Tv dan juga untuk mobile computers.
Gambar 1. Arsitektur ARM

Central Processing Unit (Extended)

Cara Kerja CPU
CPU sebagai komponen yang utama dalam komputer melakukan banyak hal dalam menjalankan tugasnya, sebagaimana halnya manusia menggunakan otak untuk berbagai macam tugas sehari-harinya. Didalam CPU semua kerja komputer dilakukan. Hal-hal yang dilakukan oleh CPU antara lain :
·         Membaca, mengkodekan dan mengeksekusi instruksi program
·         Mengirim data dari dan ke memori, serta dari dan ke bagian input/output
·         Merespon interupsi dari luar
·         Menyediakan clock dan sinyal kontrol kepada sistem.

Monday, 29 September 2014

Komponen CPU

CPU terdiri dari beberapa komponen sebagai bagian dari struktur CPU untuk dapat melaksanakan fungsi dan tugasnya. Komponen-komponen CPU antara lain Register, Arithmatic Logic Unit (ALU), Control Unit, dan CPU interconections seperti yang terlihat pada gambar 1 dan struktur detailnya seperti pada gambar 2.

Gambar 1. Komponen CPU

Saturday, 27 September 2014

Sejarah Perkembangan Prosesor

Perkembangan mikroprosesor tentunya tidak terlepas dari perkembangan komputer itu sendiri. Sejarah komputer sendiri sering disebutkan dalam lima tahapan. Kelima tahapan tersebut antara lain :
1. Generasi Pertama (1944-1959)

Tabung hampa udara sebagai penguat sinyal, merupakan ciri khas komputer generasi pertama. Pada awalnya, tabung hampa udara (vacum-tube) digunakan sebagai komponen penguat sinyal. Bahan bakunya terdiri dari kaca, sehingga banyak memiliki kelemahan, seperti: mudah pecah, dan mudah menyalurkan panas. Panas ini perlu dinetralisir oleh komponen lain yang sebagai pendingin. Dengan adanya komponen tambahan, akhirnya komputer yang ada menjadi besar, berat dan mahal. Pada tahun 1946, komputer elektronik di dunia yang pertama adalah ENIAC. ENIAC memiliki 18.800 tabung hampa udara dan beratnya mencapai sekitar 30 ton.


CENTRAL PROCESSING UNIT (CPU)

Sistem komputer dibangun dari suatu arsitektur yang terdiri dari serangkaian komponen-komponen (hardware) yang sangat kompleks, yang digunakan untuk pengolahan data melalui sejumlah instruksi-instruksi. Rangkaian dari komponen-komponen tersebut saling terintegrasi antara yang satu dengan yang lain membentuk suatu organisasi komputer yang menjalankan fungsi tertentu untuk mengeksekusi intruksi-instruksi dalam pengolahan data.