A.
Pipelining
1.
Pengertian Pipelining
Metoda pengambilan dan dekode instruksi
(pra-pengolahan) dimana pada waktu tertentu beberapa instruksi program ada pada
berbagai tahap untuk diambil atau didekode.
Prosesor Pipeline yang berputar adalah prosesor baru untuk arsitektur superscalar komputasi. Ini didasarkan pada cara yang mudah dan pipeline yang biasa, struktur yang dapat mendukung beberapa ALU untuk lebih efisien dalam pengiriman dari bagian beberapa instruksi. Daftar nilai arus yang berputar di sekitar pipa, dibuat oleh dependensi data lokal. Selama operasi normal, kontrol sirkuit tidak berada pada jalur yang kritis dan kinerja hanya dibatasi oleh data harga. Operasi mengalir dengan interval waktu sendiri. Ide utama dari Pipeline Prosesor yang berputar adalah circular uni-arah mengalir dari memori register oleh pusat waktu logika dan proses secara parallel dari operasi ALU.
Prosesor Pipeline yang berputar adalah prosesor baru untuk arsitektur superscalar komputasi. Ini didasarkan pada cara yang mudah dan pipeline yang biasa, struktur yang dapat mendukung beberapa ALU untuk lebih efisien dalam pengiriman dari bagian beberapa instruksi. Daftar nilai arus yang berputar di sekitar pipa, dibuat oleh dependensi data lokal. Selama operasi normal, kontrol sirkuit tidak berada pada jalur yang kritis dan kinerja hanya dibatasi oleh data harga. Operasi mengalir dengan interval waktu sendiri. Ide utama dari Pipeline Prosesor yang berputar adalah circular uni-arah mengalir dari memori register oleh pusat waktu logika dan proses secara parallel dari operasi ALU.
Struktur lain yang menggunakan penyelesaian
deteksi atau selain penundaan yang tepat dari pengaturan waktu pusat tetapi
karena masalah waktu yang Syncronization, Pipelines memaksakan sebuah penurunan
kinerja. Misalnya counterflow pipeline prosesor yang dirancang sekitar dua
arah, pipa membawa petunjuk dan argumen dalam satu arah dan hasil yang lainnya
b ini dapat menyebabkan Syncronization masalah antara prosesor.
Pipeline yang berputar menghindari masalah yang
hanya melewati data dalam satu arah. Pada prinsipnya, prosesor dari register
terus beredar di sekitar cincin yang berhubungan dengan berbagai fungsi
ALU,-akses memori dan sebagainya .ada tiap tahap, nilai-nilai yang memeriksa
dan disampaikan, kemungkinan setelah perubahan, tidak signifikan dengan
pengeluaran tambahan untuk sinkronisasi. Dispatched adalah instruksi dari pusat
ke fungsi unit yang memungkinkan beberapa masalah instruksi .
2.
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
|
3.
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.
4.
Beberapa Solusi
Strategi pemecahan masalah diatas adalah sebagai
berikut :
·
VARIASI PEMILIHAN
WAKTU (TIMING VARIATIONS)
Untuk memaksimalkan kecepatan, untuk menyeragam,
tahap pertama yang harus dilakukan adalah mekanisme waktu yang diperlukan.
Sebuah metode sinkron dapat digunakan,jika tahapan telah dianggap lengkap dari
sejumlah tertentu siklus waktu. Namun, teknik asynchronous secara umum lebih
efisien. Bit atau garis sinyal dilewatkan maju ke tahap berikutnya menunjukkan
data sudah valid. Sebuah sinyal juga harus lulus kembali dari tahap berikutnya
ketika data telah diterima.
Dalam semua kasus harus ada sebuah penyangga
antar tahap untuk menyimpan data, kadang-kadang penyangga ini diperluas ke
memori yang dapat menyimpan beberapa item data. Setiap tahap harus berhati-hati
untuk tidak menerima input data sampai berlaku, dan tidak untuk menghasilkan
data output sampai ada ruang dalam penyangga (buffer).
·
DATA BERBAHAYA (DATA
HAZARDS)
Untuk melindungi dari data yang berbahaya, perlu
untuk menyadari setiap tahap yang digunakan oleh tahap pipelining yang lebih
jauh . Jenis penggunaan juga harus diketahui, dua pembacaan yang terurut tidak
boleh bertentangan dan tidak boleh menyebabkan perlambatan pada pipeline. Namun
akan ada kemungkinan konflik jika terjadi penulisan.
Pipeline biasanya dilengkapi dengan small
associative check memory yang dapat menyimpan alamat dan jenis operasi (read
atau write) untuk setiap instruksi yang ada di pipeline. Konsep
“alamat(address)t” harus diperluas untuk mengidentifikasi register. Setiap
instruksi hanya dapat mempengaruhi sejumlah kecil dari operand, tapi efek yang
tidak langsung addressing tidak boleh diabaikan.
Ketika instruksi bersiap memasuki pipa, alamat
operan telah disimpan.Jika ada konflik, instruksi (dan yang di belakangnya)
harus menunggu. Ketika ada konflik, instruksi memasuki pipa dan alamat operan
disimpan dalam memori cek. Ketika instruksi selesai, alamat ini akan dihapus.
memori harus bisa untuk menangani proses pencarian berkecepatan tinggi
yangdiperlukan.
·
PERCABANGAN
(BRANCHING)
Masalah dalam percabangan adalah pipelining
diperlambat oleh instruksi karena kita tidak tahu cabang yang mana yang harus
kita ikuti. Dengan tidak adanya bantuan spesial dalam masalah ini, perlu
menunda pemrosesan instruksi selanjutnya sampai tujuan percabangan
diselesaikan. Karena cabang sangat sering, penundaan ini bersifat tidak dapat
diterima.
Salah satu solusi yang banyak digunakan,
terutama di RISC, adalah menunda percabangan. Dalam metode ini, rangkaian
instruksi ini dirangkai sedemikian rupa, sehingga setelah suatuinstruksi,
instruksi berikutnya bisa selalu di ekskusi, dan kemudian cabang di hapus.
Dengan begitu tiap-tiap cabang harus diikuti oleh satu instruksi yang secara
logika mendahuluinya dan diharapkan untuk dieksekusi dalam semua kasus. Hal ini
akan memberikan ruang bernafas (istirahat) bagi pipeline. Jika perlu, instruksi
ini bisa merupakan suatu no-op, tapi, seringnya penggunaan no-op akan merusak
fungsi kecepatan.
Penggunaan teknik ini memerlukan metode
pengkodean yang membingungkan bagi progammer, tetapi tidak terlalu sulit bagi
generator kode compiler.
5.
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.
B. RISC
1. 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.
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 operasi load 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
Adapun ciri-ciri
dari RISC ialah:
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.
Sumber :
http://www.scribd.com/doc/71858269/CISC-Complex-Instruction-Set-Computers-Dan-RISC-Reduced-Instruction-Set-Computers
Tidak ada komentar:
Posting Komentar