Wednesday, 4 October 2017

Future Implementation of VLIW

Sebuah implementasi VLIW akan menghasilkan efek yang sama dengan superscalar RISC atau implementasi CISC, tapi desain VLIW melakukannya tanpa dua bagian yang paling kompleks dari desain superscalar berperforma tinggi.

Karena instruksi VLIW
secara eksplisit menentukan beberapa operasi independen yang secara eksplisit menentukan paralelisme, maka tidak diperlukan untuk melakukan decoding dan pengiriman hardware untuk merekonstruksi paralelisme dari aliran instruksi serial. Alih-alih berupaya untuk menemukan paralelisme, prosesor VLIW hanya akan mengandalkan compiler penghasil kode VLIW untuk secara eksplisit menentukan paralelisme. Mengandalkan kompilator memiliki kelebihan.

Pertama, compiler memiliki kemampuan untuk melihat instruksi dari jendela yang jauh lebih besar dari daripada perangkat keras. Untuk prosesor superscalar, jendela hardware yang lebih besar berdampak pada jumlah yang lebih besar dari logika dan area chip.

Pada beberapa titik, ada yang tidak cukup baik sehingga ukuran jendela dibatasi. Lebih buruk lagi, bahkan sebelum batas sederhana pada jumlah hardware tercapai, kompleksitas dapat berpengaruh pada kecepatan logika, sehingga ukuran jendela dibatasi untuk menghindari berkurangnya kecepatan clock chip. Jendela software dapat menjadi besar. Dengan demikian, mencari paralelisme di jendela perangkat lunak mungkin untuk memperoleh hasil yang lebih baik.

Very-Long Instruction Word (VLIW) Computer Architecture

The Basic Idea of VLIW

Ide awal dari VLIW adalah adanya komputasi paralel Alan Turing pada tahun 1946 dan Maurice Wilkes pada tahun 1951 saat melakukan pekerjaan microprogramming. CPU Microprogrammed memiliki macroinstruction yang sesuai dengan setiap instruksi program. Masing-masing macroinstructions memiliki urutan yang sesuai microinstructions dan disimpan dalam ROM pada CPU. Microinstructions ini dapat di-order di dalam set yang luas dari sinyal kontrol. Hal ini dinamakan microprogramming horisontal.

Ketika Joseph Fisher bekerja menulis microcode horisontal untuk emulator-6600 CDC pada tahun 1979, ia mulai
memikirkan teknik untuk menghasilkan instruksi yang panjang dari sekuensial yang singkat. Teknik-teknik yang dikembangkan, disebut "jejak penjadwalan", sangat penting untuk menghasilkan kode VLIW yang kompatibel.

Pada tahun 1984, Fisher dan rekan
-rekannya dari Universitas Yale membentuk Multiflow, dengan tujuan menciptakan superkomputer VLIW. Cydrome juga dibentuk pada tahun itu oleh Bob Rau. Meskipun mereka berdua merilis produk jadi tersebut, ternyata pasar tidak siap dan teknologi yang ada juga belum lengkap. Dengan demikian, perusahaan tidak berhasil meraih banyak kesuksesan komersial. Tapi mereka terus menyempurnakan teknologi VLIW, dan kedua pendiri sekarang membawa keahlian mereka untuk Hewlett-Packard Labs, yang telah menghasilkan mesin penelitian playdoh [PDF].

Tuesday, 3 October 2017

SUPERSCALAR ARCHITECTURE

Overview Supersclalar Architecture (SSA)           
            Superscalar Architecture (SSA) yang biasa dikenal dengan arsitektur superskalar merupakan arsitektur dari suatu komputer (processor) yang memungkinkan eksekusi dilakukan secara bersamaan (paralel) dalam satu siklus dengan memanfaatkan teknik pipelining. Hal ini menjadikan  setiap pipleine terdiri dari beberapa stage, sehingga setiap pipeline dapat menangani beberapa insruksi dalam satu waktu. Dalam hal ini, sebuah processor superscalar memanfaatkan apa yang  dikenal dengan instruction level parallelism, yang mengacu pada sejauh mana instruksi dari sebuah program dapat dieksekusi secara paralel. Arsitektur superskalar diperlukan untuk meningkatkan kinerja eksekusi dari suatu instruksi yang bersifat skalar. Maksud dari instruksi yang bersifat skalar adalah perintah/ instruksi tersebut dapat dieksekusi dengan menggunakan variabel yang sederhana, seperti variabel integer (bilangan bulat, bilangan yang tidak memiliki pecahan). Disisi lain, beberapa CPU juga memiliki kemampuan untuk mengolah data bertipe floating point (bilangan berkoma). Teknik superscalar terkait dengan mengidentifikasi beberapa karakteristik :
ñ  Instruksi yang dikeluarkan dari aliran instruksi berurutan.
ñ  Processor memeriksa secara dinamik dependensi data antara instruksi saat berjalan.
ñ  Processor menerima beberapa instruksi per clock cycle.

Berikut ini adalah gambaran dari arsitektur superscalar  :
Superscalar Architecture
           

Thursday, 28 September 2017

RISC (Reduced Instruction Set Computer)

Arsitektur RISC

RISC singkatan dari Reduced Instruction Set Computer yang artinya prosesor tersebut memiliki set instruksi program yang lebih sedikit. Karena perbedaan keduanya ada pada kata set instruksi yang kompleks atau sederhana (reduced). RISC lahir pada pertengahan 1980, kelahirannya ini dilator belakangi untuk CISC. Perbedaan mencolok dari kelahiran RISC ini adalah tidak ditemui pada dirinya instruksi assembly atau yang dikenal dengan bahasa mesin sedangkan itu banyak sekali di jumpai di CISC.

CISC (Complex Instruction-Set Computer)

Complex instruction-set computing  atau  (CISC; "Kumpulan instruksi komputasi kompleks") adalah sebuah arsitektur dari set instruksi komputer dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memori, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Karakteristik CISC dapat dikatakan bertolak-belakang dengan RISC. Contoh-contoh prosesor CISC adalah  System/360, VAX, PDP-11, varian Motorola 68000 , dan CPU AMD dan Intel x86.
Arsitektur CISC

Tuesday, 26 September 2017

Example of Pipeline Implementation

Intel 80486

Prosesor Intel 80486 memiliki pipeline dengan 5 tahap, antara lain adalah sebagai berikut :
  • Fetch
o   Dari cache atau memori eksternal
o   Memakai salah satu dari dua prefetch buffer yang masing-masing berukuran 16 byte
o   Mengisi buffer dengan data baru seketika setelah data lama selesai digunakan
o   Rata-rata dapat mengambil 5 instruksi untuk sekali operasi
o   Bersifat independen dari tahap lain supaya  buffer dapat tetap penuh
  •  Decode stage 1 (D1)
o   Informasi opcode dan mode pengalamatan memori
o   Paling banyak mengambil 3 byte pertama dari sebuah instruksi
o   Mendelegasikan kepada Decode stage 2 untuk mengambil sisa instruksi
  • Decode stage 2 (D1)
o   Mengembangkan opcode menjadi sinyal kontrol
o   Perhitungan untuk mode pengalamatan yang kompleks
  •  Execute (EX)
o   Operasi ALU, akses cache, update register
  • Writeback (WB)
o   Update register dan flag
o   Hasilnya dikirim ke write buffer untuk cache dan bus interface

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