Artikel 1: Pipelining dan RISC
1. PIPELINING
Pengertian PIPELINING
Pipelining adalah suatu teknik
implementasi dengan mana berbagai instruksi dapat dilaksanakan secara tumpang
tindih (overlapped; hal ini mengambil keuntungan paralelisme yang ada di antara
tindakan yang diperlukan untuk mengeksekusi suatu instruksi. Di dalam pipeline
suatu komputer, masing-masing langkah di dalam pipeline melengkapi
bagian-bagian dari suatu instruksi. Masing-masing langkah disebut stage atau
segment. Stage dihubungkan satu terhadap lainnya sehingga membentuk yang
pipe-instruction pada bagian akhir stage. Mirip dengan proses pada
suatu industri manufaktur.
Ø Intruksi pipeline
Tahapan pipeline
·
Mengambil
instruksi dan membuffferkannya
·
Ketika
tahapn kedua bebas tahapan pertama mengirimkan instruksi yang dibufferkan
tersebut
·
Pada saat
tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan
siklus memori yang tidak dipakai untuk mengambil dan membuffferkan instruksi
berikutnya .
Instuksi pipeline:
Karena untuk setiap tahap pengerjaan instruksi,
komponen yang bekerja berbeda, maka dimungkinkan untuk mengisi kekosongan kerja
di komponen tersebut. Sebagai contoh :
Instruksi 1: ADD AX, AX
Instruksi 2: ADD EX, CX
Setelah CU menjemput instruksi 1 dari memori (IF), CU
akan menerjemahkan instruksi tersebut(ID). Pada menerjemahkan instruksi 1
tersebut, komponen IF tidak bekerja. Adanya teknologi pipeline menyebabkan IF
akan menjemput instruksi 2 pada saat ID menerjemahkan instruksi 1. Demikian
seterusnya pada saat CU menjalankan instruksi 1 (EX), instruksi 2 diterjemahkan
(ID).
Contoh pengerjaan instruksi tanpa pipeline
t =
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
ADD AX,AX
|
IF
|
DE
|
IF
|
DE
|
EX
|
|||||
ADD BX,CX
|
IF
|
DE
|
IF
|
DE
|
EX
|
Disini instruksi baru akan dijemput jika instruksi
sebelumnya telah selesai dilaksanakan.
t =
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
ADD AX,AX
|
IF
|
DE
|
IF
|
DE
|
EX
|
|||||
ADD BX,CX
|
IF
|
DE
|
IF
|
DE
|
EX
|
|||||
ADD DX,DX
|
IF
|
DE
|
IF
|
DE
|
EX
|
Contoh pengerjaan instruksi dengan pipeline
Disini instruksi baru akan dipanggil setelah tahap IF
menganggur (t2).
Dengan adanya pipeline dua instruksi selesai
dilaksanakan pada detik keenam (sedangkan pada kasus tanpa pipeline baru
selesai pada detik kesepuluh). Dengan demikian telah terjadi percepatan
sebanyak 1,67x dari 10T menjadi hanya 6T. Sedangkan untuk pengerjaan 3 buah
instruksi terjadi percepatan sebanyak 2, 14 dari 15T menjadi hanya 7T.
Untuk kasus pipeline sendiri, 2 instruksi dapat
dikerjakan dalam 6T(CPI = 3) dan instruksi dapat dikerjakan dalam 7T (CPT =
2,3) dan untuk 4 instruksi dapat dikerjakan dalam 8T (CPI =2). Ini
berarti utnuk 100 instruksi akan dapat dikerjakan dalam 104T (CPI = 1,04). Pada
kondisi ideal CPI akan harga 1.
Ø Permasalahan di (dalam) Instruksi Pipelining
·
VARIASI
WAKTU:
Tidak semua tahap memakan waktu yang sama. Ini berarti
untuk mendapatkan kecepatan dalam intruksi pipelining sangat ditentukan oleh
tahap yang paling lambat. Masalah ini sangat akut dalam memproses instruksi,
sejak instruksi yang berbeda memiliki persyaratan
operand waktu proses yang berbeda. Selain itu,
diperlukan mekanisme sinkronisasi untuk memastikan bahwa data lewat dari stage
ke stage hanya ketika kedua stage siap.
·
DATA
BERBAHAYA (DATA HAZARDS):
Ketika beberapa instruksi di eksekusi secara parsial,
masalah timbul jika mereka referensi data yang sama. Kita harus memastikan
bahwa instruksi selanjutnya tidak berusaha untuk mengakses data lebih cepat
dari instruksi sebelumnya, jika ini terjadi akan menyebabkan hasil yang salah.
Sebagai contoh, instruksi N +1 tidak harus diperbolehkan untuk mengambil sebuah
operand yang belum disimpan oleh instruksi N.
·
PERCABANGAN
(BRANCH):
untuk mengambil instruksi berikutnya, kita harus
tahu mana saja yang dibutuhkan, Jika instruksi ini adalah cabang bersyarat
(conditional branch) instruksi berikutnya mungkin tidak diketahui sampai saat
diproses.
·
JEDA(INTERUPTSI):
interupsi membuat instruksi extra yang tidak terencana
untuk masuk kedalam aliran intruksi. jeda(Interrupt) harus berperan antar
instruksi. yaitu, ketika satu instruksi telah selesai dan berikutnya belum
dimulai. Dengan pipelining, instruksi berikutnya biasanya dimulai sebelum yang
sekarang telah selesai.
Semua masalah ini harus diselesaikan dalam konteks kebutuhan
kita untuk mendaatkan kinerja dengan kecepatan tinggi. Jika kita tidak dapat
mencapai kecepatan yang cukup, pipelining mungkin tidak sepadan.
Ø Keuntungan dan Kerugian
Pipelining tidak membantu dalam semua kasus. Ada
beberapa kemungkinan kerugian. Pipa instruksi dikatakan sepenuhnya pipelined
jika dapat menerima instruksi baru setiap clock cycle. Sebuah pipa yang tidak
sepenuhnya pipelined telah menunggu siklus yang menunda kemajuan pipa.
Keuntungan dari Pipelining:
1. Waktu siklus prosesor berkurang, sehingga meningkatkan
tingkat instruksi dalam
kebanyakan
kasus( lebih cepat selesai).
2. Beberapa combinational sirkuit seperti penambah atau
pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak sirkuit.
Jika pipelining digunakan sebagai pengganti, hal itu dapat menghemat sirkuit
& combinational yang lebih kompleks.
3. Pemrosesan dapat dilakukan lebih cepat, dikarenakan
beberapa proses dilakukan secara bersamaan dalam satu waktu.
Kekurangan Pipelining:
1. Pipelined prosesor menjalankan beberapa instruksi pada
satu waktu. Jika ada beberapa cabang yang mengalami penundaan cabang (penundaan
memproses data) dan akibatnya proses yang dilakukan cenderung lebih lama.
2. Instruksi latency di non-pipelined prosesor sedikit
lebih rendah daripada dalam pipelined setara. Hal ini disebabkan oleh fakta
bahwa intruksi ekstra harus ditambahkan ke jalur data dari prosesor pipeline.
3. Kinerja prosesor di pipeline jauh lebih sulit untuk
meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda.
4. Karena beberapa instruksi diproses secara bersamaan
ada kemungkinan instruksi tersebut sama-sama memerlukan resource yang sama,
sehingga diperlukan adanya pengaturan yang tepat agar proses tetap berjalan
dengan benar.
5. Sedangkan ketergantungan terhadap data, bisa muncul,
misalnya instruksi yang berurutan memerlukan data dari instruksi yang
sebelumnya.
6. Kasus Jump, juga perlu perhatian, karena ketika sebuah
instruksi meminta untuk melompat ke suatu lokasi memori tertentu, akan terjadi
perubahan program counter, sedangkan instruksi yang sedang berada dalam salah
satu tahap proses yang berikutnya mungkin tidak mengharapkan terjadinya
perubahan program counter.
. 2. PROSEDUR VEKTOR PIPELINING.
Disini yang dimaksud dengan prosedur
vektor pipelining yaitu :
- · Mengambil instruksi dan membuffferkannya.
- · Ketika tahapn kedua bebas tahapan pertama mengirimkan instruksi yang dibufferkan tersebut.
- · Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membuffferkan instruksi berikutnya.
- · Tiga kesulitan yang sering dihadapi ketika menggunakan teknik pipeline :
- · Terjadinya penggunaan resource yang bersamaan
- · Ketergantungan terhadap data
- · Pengaturan Jump ke suatu lokasi memori
3. Reduce instruction set computer (RISC)
Pengertian RISC
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.
Karakteristik
Arsitektur RISC memiliki beberapa karakteristik diantaranya :
a. Siklus
mesin ditentukan oleh waktu yang digunakan untuk mengambil dua buah operand dari
register, melakukan operasi ALU, dan menyimpan hasil operasinya kedalam
register, dengan demikian instruksi mesin RISC tidak boleh lebih kompleks dan
harus dapat mengeksekusi secepat mikroinstruksi pada mesin-mesin CISC. Dengan
menggunakan instruksi sederhana atau instruksi satu siklus hanya dibutuhkan
satu mikrokode atau tidak sama sekali, instruksi mesin dapat dihardwired.
Instruksi seperti itu akan dieksekusi lebih cepat dibanding yang sejenis pada
yang lain karena tidak perlu mengakses penyimapanan kontrol mikroprogram saat
eksekusi instruksi berlangsung.
b. Operasi
berbentuk dari register-ke register yang hanya terdiri dari operasiload dan
store yang mengakses memori . Fitur rancangan ini menyederhanakan set instruksi
sehingga menyederhanakan pula unit control. Keuntungan lainnya memungkinkan
optimasi pemakaian register sehingga operand yang sering diakses akan tetap ada
di penyimpan berkecepatan tinggi. Penekanan pada operasi register ke register
merupakan hal yang unik bagi perancangan RISC.
c. Penggunaan
mode pengalamatan sederhana, hampir sama dengan instruksi menggunakan
pengalamatan register,. Beberapa mode tambahan seperti pergeseran dan
pe-relatif dapat dimasukkan selain itu banyak mode kompleks dapat disintesis
pada perangkat lunak dibanding yang sederhana, selain dapat menyederhanakan sel
instruksi dan unit kontrol.
d. Penggunaan
format-format instruksi sederhana, panjang instruksinya tetap dan disesuaikan
dengan panjang word. Fitur ini memiliki beberapa kelebihan karena dengan
menggunakan field yang tetap pendekodean opcode dan pengaksesan operand
register dapat dilakukan secara bersama-sama.
Ciri-ciri :
a. Instruksi berukuran tunggal
b. Ukuran yang umum adalah 4 byte
c. Jumlah pengalamatan data sedikit, biasanya kurang dari 5 buah.
d. Tidak terdapat pengalamatan tak langsung yang mengharuskan melakukan sebuah
akses memori agar memperoleh alamat operand lainnya dalam memori.
e. Tidak terdapat operasi yang menggabungkan operasi load/store dengan
operasi aritmatika, seperti penambahan ke memori dan penambahan dari memori.
f. Tidak terdapat lebih dari satu operand beralamat memori per instruksi
g. Tidak mendukung perataan sembarang bagi data untuk operasi load/ store.
h. Jumlah maksimum pemakaian memori manajemen bagi suatu alamat data adalah
sebuah instruksi .
i. Jumlah bit bagi integer register spesifier sama dengan 5 atau lebih,
artinya sedikitnya 32 buah register integer dapat direferensikan sekaligus
secara eksplisit.
j. Jumlah bit floating point register spesifier sama dengan 4 atau lebih,
artinya sedikitnya 16 register floating point dapat direferensikan sekaligus
secara eksplisit.
Referensi :
•
RISC ( Reduce Instruction Set Computer )
Beberapa elemen penting pada arsitektur RISC :
1. Set instruksi yang terbatas dan sederhana
2. Register general-purpose yang berjumlah banyak, atau penggunaan
teknologi kompiler untuk mengoptimalkan pemakaian registernya.
3. Penekanan pada pengoptimalan pipeline instruksi.
Ditinjau dari jenis set instruksinya, ada 2 jenis arsitektur komputer,
yaitu:
1. Arsitektur komputer dengan kumpulan perintah yang rumit (Complex
Instruction Set Computer = CISC)
2. Arsitektur komputer dengan kumpulan perintah yang sederhana (Reduced
Instruction Set Computer = RISC)
CISC dimaksudkan untuk meminimumkan jumlah perintah yang diperlukan untuk
mengerjakan pekerjaan yang diberikan. (Jumlah perintah sedikit tetapi rumit)
Konsep CISC menjadikan mesin mudah untuk diprogram dalam bahasa rakitan, tetapi
konsep ini menyulitkan dalam penyusunan kompiler bahasa pemrograman tingkat
tinggi.
Dalam CISC banyak terdapat perintah bahasa mesin. RISC menyederhanakan
rumusan perintah sehingga lebih efisien dalam penyusunan kompiler yang pada
akhirnya dapat memaksimumkan kinerja program yang ditulis dalam bahasa tingkat
tinggi.
Konsep arsitektur RISC banyak menerapkan proses eksekusi pipeline. Meskipun
jumlah perintah tunggal yang diperlukan untuk melakukan pekerjaan yang
diberikan mungkin lebih besar, eksekusi secara pipeline memerlukan waktu yang
lebih singkat daripada waktu untuk melakukan pekerjaan yang sama dengan
menggunakan perintah yang lebih rumit.
Mesin RISC memerlukan memori yang lebih besar untuk mengakomodasi program
yang lebih besar. IBM 801 adalah prosesor komersial pertama yang menggunakan
pendekatan RISC.
Lebih lanjut untuk memahami RISC, diawali dengan tinjauan singkat tentang
karakteristik eksekusi instruksi.
Eksekusi Instruksi
Waktu eksekusi dapat dirumuskan sbb.:
Waktu eksekusi = N x S x T
Dengan
N adalah jumlah perintah
S adalah jumlah rata-rata langkah per perintah
T adalah waktu yang diperlukan untuk melaksanakan satu langkah
Kecepatan eksekusi dapat ditingkatkan dengan menurunkan nilai dari ketiga
varisbel di atas.
Arsitektur CISC berusaha menurunkan nilai N, sedangkan
Arsitektur RISC berusaha menurunkan nilai S dan T.
Proses pipeline dapat digunakan untuk membuat nilai efektif S mendekati 1
(satu) artinya komputer menyelesaikan satu perintah dalam satu siklus waktu
CPU.
Nilai T dapat diturunkan dengan merancang perintah yang sederhana.
• one cycle execution time : satu
putaran eksekusi. Prosessor RISC mempunyai CPI (clock per instruction) atau
waktu per instruksi untuk setiap putaran. Hal ini dimaksud untuk mengoptimalkan
setiap instruksi pada CPU.
• pipelining:adalah sebuah teknik yang memungkinkan dapat melakukan eksekusi secara simultan.Sehingga proses instruksi lebih efiisien
• large number of registers: Jumlah register yang sangat banyak. RISC di Desain dimaksudkan untuk dapat menampung jumlah register yang sangat banyak untuk mengantisipasi agar tidak terjadi interaksi yang berlebih dengan memory.
• pipelining:adalah sebuah teknik yang memungkinkan dapat melakukan eksekusi secara simultan.Sehingga proses instruksi lebih efiisien
• large number of registers: Jumlah register yang sangat banyak. RISC di Desain dimaksudkan untuk dapat menampung jumlah register yang sangat banyak untuk mengantisipasi agar tidak terjadi interaksi yang berlebih dengan memory.