Anda di halaman 1dari 17

BAB I

PENDAHULUAN

1.1 PENGERTIAN CPU

CPU singkatan dari Central Processing Unit, yang merupakan komponen


terpenting dari sistem komputer.CPU adalah komponen pengolah data
berdasarkan instruksi - instruksi yang diberikan kepadanya.

CPU tersusun atas beberapa komponen diantaranya:

1. Arithmetic and Logic Unit (ALU)

Bertugas membentuk fungsi-fungsi pengolahan data komputer. Alu sering


disebut mesin bahasa (machine language) karena bagian ini mengerjakan
instruksi-instruksi bahasa mesin yang diberikan kepadanya.

ALU terdiri dari dua bagian yaitu :

 Unit arithmetika
 Unit logika Boolean

2. Control Unit

Bertugas mengontrol operasi CPU dan secara keseluruhan mengontrol


komputer sehingga terjadi sinkronisasi kerja antar komponen dalam menjalankan
fungsi-fungsi operasinya.Termasuk dalam tanggung jawab unit kontrol adalah
mengambil instruksi-instruksi dari memori utama dan menentukan jenis instruksi
tersebut.

1
STRUKTUR

Gambar 1.1 Struktur control unit

3. Registers
CPU
Register adalah media penyimpan internal CPU yang digunakan
saat proses pengolahan data. Memori ini bersifat sementara, biasanya
ALU
digunakan untuk menyimpan data saat diolah ataupun data untuk
pengolahan selanjutnya. Control
Internal
Unit
Bus
4. CPU Interconnections
Registers
Adalah sistem koneksi dan bus yang menghubungkan komponen
internal CPU, yaitu ALU, unit kontrol dan register-register dan juga
dengan bus-bus eksternal CPU yang menghubungkan dengan system
lainnya. Seperti memori utama, piranti masukkan/keluaran.

2
1.2 CARA KERJA CPU

Saat data dan instruksi dimasukkan ke processing-devices, pertama sekali


diletakkan di RAM (melalui Input-storage); apabila berbentuk instruksi
ditampung oleh Control Unit di Program-storage, namun apabila berbentuk data
ditampung di Working-storage). Jika register siap untuk menerima pengerjaan
eksekusi, maka Control Unit akan mengambil instruksi dari Program-storage
untuk ditampungkan ke Instruction Register, sedangkan alamat memori yang
berisikan instruksi tersebut ditampung di Program Counter. Sedangkan data
diambil oleh Control Unit dari Working-storage untuk ditampung di General-
purpose register (dalam hal ini di Operand-register). Jika berdasar instruksi
pengerjaan yang dilakukan adalah arithmatika dan logika, maka ALU akan
mengambil alih operasi untuk mengerjakan berdasar instruksi yang ditetapkan.
Hasilnya ditampung di Accumulator. Apabila hasil pengolahan telah selesai, maka
Control Unit akan mengambil hasil pengolahan di Accumulator untuk ditampung
kembali ke Working-storage. Jika pengerjaan keseluruhan telah selesai, maka
Control Unit akan menjemput hasil pengolahan dari Working-storage untuk
ditampung ke Output-storage. Lalu selanjutnya dari Output-storage, hasil
pengolahan akan ditampilkan ke output-devices.

1.3 FUNGSI CPU

Fungsi CPU adalah menjalankan program-program yang disimpan dalam


memori utama dengan cara mengambil instruksi-instruksi, menguji instruksi
tersebut dan mengeksekusinya satu persatu sesuai alur perintah. Pandangan paling
sederhana proses eksekusi program adalah dengan mengambil pengolahan
instruksi yang terdiri dari dua langkah, yaitu : operasi pembacaan instruksi (fetch)
dan operasi pelaksanaan instruksi (execute). Siklus instruksi yang terdiri dari
siklus fetch dan siklus eksekusi.

3
1.2.1 Siklus Fetch – Eksekusi

Pada setiap siklus instruksi, CPU awalnya akan membaca instruksi


dari memori. Terdapat register dalam CPU yang berfungsi mengawasi dan
menghitung instruksi selanjutnya, yang disebut Program Counter (PC). PC akan
menambah satu hitungannya setiap kali CPU membaca instruksi.

Instruksi –Instruksi yang dibaca akan dibuat dalam register


instruksi (IR). Instruksi-instruksi ini dalam bentuk kode-kode binner yang dapat
diinterpretasikan oleh CPU kemudian dilakukan. Aksi-aksi ini dikelompokkan
menjadi empat kategori, yaitu:

1. CPU- Memori, perpindahan data dari CPU ke Memori dan sebaliknya.


2. CPU- I/O, perpindahan data dari CPU ke modul I/O dan sebaliknya.
3. Pengolahan Data, CPU membentuk sejumlah operasi aritmatika dan logika
terhadap data.
4. Kontrol, merupakan instruksi untuk pengontrolan fungsi atau kerja.
Misalnya instruksi pengubahan urusan eksekusi.
5. 1.2.2 Fungsi Interrupt

Fungsi interupsi adalah mekanisme penghentian atau pengalihan


pengolahan instruksi dalam CPU kepada routine interupsi. Hampir semua
modul (memori dan I/O) memiliki mekanisme yang dapat menginterupsi
kerja CPU.

4
BAB II

PEMBAHASAN

2.1 PENGERTIAN PIPELINING INSTRUKSI

Pipelining instruksi merupakan suatu cara yang digunakan untuk


melakukan sejumlah kerja secara bersamaan tetapi dalam tahap yang berbeda
yang dialirkan secara continue pada unit pemrosesan. Pipelining instruksi disebut
juga sebuah perangkat keras dan fasilitas-fasilitas perangkat lunak. Penilaian ini
disebut dengan troughput = jumlah pemrosesan yang dapat dikerjakan dalam
suatu interval waktu tertentu. Pemrosesan pipeline adalah salah satu teknik yang
mendorong peningkatan suatu system troughput yang cukup hebat. Pemrosesan
pipeline dalam suatu komputer diperoleh dengan membagi suatu fungsi yang akan
dijalankan menjadi beberapa sub fungsi yang lebih kecil dan merancang perangkat
keras yang terpisah (STAGE), untuk setiap sub fungsi. Stage-stage itu kemudian
bersama-sama membentuk pipeline tunggal untuk menjalankan fungsi asli.

A.Langkah – langkah pengolahan instruksi pada pipeline :

• Mengambil instruksi (Fetch Instruction – FI) : Membaca instruksi


berikutnya kedalam suatu buffer.
• Pemecahan kode instruksi ( Decode instruction – DI) : Menentukan
spesifier opcode dan operand.
• Kalkulasi operand (Calculate operand – CO) : Kalkulasi alamat efektif dari
setiap sumber. Ini boleh melibatkan bentuk kalkulasi alamat penggantian,
register tidak langsung, atau lainnya.
• Pengambilan Operand (Fetch operand _FO): Pengambilan setiap operand
dari memori. Operand dalam register tidak perlu di ambil.

5
• Eksekusi Instruksi (Execute instruction - EI) : Membentuk operasi yang di
indikasikan dan menyimpan hasilnya bila ada, dalam lokasi operand tujuan
yang dispesifikasikan.
• Tulis Operand (Write operand – WO) : Menyimpan hasilnya didalam
memori.

Pipelining instruksi sering kali digunakan untuk meningkatkan kinerja. Sebagian


besar instruksi merupakan operasi dari register ke register, dan sebuah siklus
instruksi memiliki dua buah fase berikut :

• I : Instructions Fetch ( Pengambilan Instruksi)


• E: excute (eksekusi). Melakukan operasi ALU dengan input dan output
register.

Bagi operasi-operasi load dan store, diperlukan ALU tiga buah fase:

• I :Instructions Fetch
• E : Execute. Menghitung alamat memori.
• D : Memory. Operasi register ke memori atau dari memori ke register.

Pipelining berasumsi bahwa instruksi berurutan pada suatu program beruntun


akan tumpang-tindih pelaksanaan, seperti yang ditunjukkan oleh diagram yang
diatas ( Vertikal ‘I’ Instruksi, horizontal ‘t’ waktu ). CPU yang paling canggih
dijalankan oleh clock. CPU berisi logika dan flip flop. Ketika clock jalan, flip flop
mengambil nilai yang baru dan logika kemudian memerlukan masa waktu untuk
memecahkan kode nilai-nilai yang baru itu. Kemudian pulsa clock yang
berikutnya jalan dan flip flop mengambil nilai-nilai baru itu, dan begitu
seterusnya. Dengan patahan logika ke dalam potongan lebih kecil dan
memasukkan/menyisipkan flip flop antar potongan logika, penundaan sebelum/di
depan logika memberi keluaran sah dikurangi. Dengan cara ini periode clock
dapat dikurangi. Sebagai contoh, RISC saluran diterobos lima langkah-langkah

6
dengan satu set flip flop antar langkah masing-masing. Di dalam perhitungan,
suatu saluran adalah satu set unsur-unsur pengolahan data menghubungkan secara
urut, sedemikian sehingga keluaran satu unsur adalah masukan yang berikutnya.
Unsur-unsur suatu saluran adalah sering dieksekusi yang paralel atau di dalam
pertunjukkan time-sliced; di dalam beberapa kasus, jumlah penyangga atau
bantalan gudang/penyimpanan adalah sering dimasuki/disisipi antar unsure-unsur.

Saluran terkait dengan komputer meliputi :

1. Saluran Instruksi

Saluran instruksi seperti RISC saluran yang klasik, yang digunakan


pengolah untuk mengijinkan pelaksanaan yang parallel dua atau lebih instruksi
berurutan dari suatu secara nominal arus percontohan; unsur-unsur pengolahan
adalah sirkuit yang logis yang menerapkan itu berbagai langkah-langkah dari
suatu instruksi ( alamat yang memecahkan kode dan perhitungan, daftar yang
mengambil, tempat menyembunyikan lookup, dan lainnya ).

2. Saluran Grafik

Saluran grafik yang ditemukan kebanyakan kartu grafik, yang terdiri dari
berbagai unit perhitungan, atau melengkapi, menyudahi CPU, itu menerapkan
berbagai langkah-langkah umum untuk menyumbangkan operasi ( proyeksi
perspektif, guntingan koran atau majalah jendela, warna dan kalkulasi,
menyumbangkan dan lain-lain ).

3. Saluran Perangkat lunak

Saluran perangkat lunak terdiri dari berbagai proses mengatur sedemikian


sehingga arus keluaran satu proses secara otomatis dan dengan segera diberi arus
masukan yang berikutnya. Saluran Unix adalah implementasi yang klasik tentang

7
konsep ini.

2.2 SINKRONISASI PIPELINE

Pada semua baris perakitan industri, efisiensi suatu pipeline dapat


berkurang jauh akibat suatu bottleneck. Bottleneck terjadi sewaktu pemrosesan
pada suatu stage, menghabiskan waktu lebih lama dari stage lain, karena itu
idealnya kita menginginkan waktu yang sama. Untuk menyamankan waktu yang
diperlukan pada setiap stage maka stage-stage tersebut harus di sinkronisasi.Dapat
dilakukan dengan menyisipkan kunci-kunci sederhana antara stage-stage tersebut.

2.3 EFESIENSI PIPELINE

Suatu fungsi pipeline hampir selalu lebih baik dari fungsi non-pipeline,
namun pada kenyataannya, harga pipeline sangat mempengaruhi kapan dan
apakah fungsi – fungsi yang di pipeline kan lebih baik atau tidak.

2.4 BEBERAPA PENYEBAB HARGA PIPELINE

1. Tambahan kunci(latch) perangkat keras yang dibutuhkan.


2. Kendali yang diperlukan untuk penjadwalan input tersebut.
3. Waktu yang dihabiskan oleh data dalam latch untuk menyesuaikan
diri dengan suatu penangguhan clock yang seragam
4. Jumlah rata – rata input yang tersedia.

2.5 KLASIFIKASI PIPELINE

8
• A. Klasifikasi berdasarkan fungsi
• Pipelining Aritmatika adalah proses segmentasi fungsi dari ALU
dari system yang muncul dalam kategori ini.

2.6 PIPELINING PROSESSOR

Pipeline prosessor adalah sewaktu stage dari suatu stage


merupakan prosessor actual dan latch-latch saling berbagi memori antara
prosessor – prosessor tersebut .

2.7 BRANCH PREDICTORS

2.7.1 Prinsip Kerja

Pada sebuah mikroprosesor sederhana semua instruksi ditangani dalam dua


langkah yaitu mendekode dan mengeksekusi. Mikroprosesor dapat menghemat
waktu dengan cara mendekode suatu instruksi ketika instruksi yang diproses
sedang dieksekusi, prinsip ini dikenal dengan “pipelining”. Pipelining
menggambarkan seolah olah instruksi – instruksi yang akan dieksekusi
ditempatkan pada barisan antrian yang menunggu untuk dirakit ataupun dibentuk
dengan tahapan-tahapan pemrosesan tertentu. Pada mikroprosesor yang lebih
kompleks, pipeline dapat memiliki banyak langkah sehingga instruksi-instruksi
yang saling berkaitan diproses pada pipeline pada saat yang bersamaan dengan
satu pemrosesan instruksi pada setiap tahapannya. Masalah akan timbul ketika
prosesor menghadapi instruksi percabangan. Instruksi percabangan adalah
implementasi dari konsep if-then-else. Ketika kondisi if benar maka akan
melompat ke lokasi lain, jika salah maka dilanjutkan dengan instruksi berikutnya.
Hal ini membuat adanyawaktu jeda pada aliran instruksi melalui pipeline karena
prosesor tidak mengetahui instruksi yang selanjutnya sampai ketika selesai
mengeksekusi instruksi percabangan tersebut. Semakin panjang pipeline maka

9
semakin lama waktu total yang dibutuhkan pipeline untuk menunggu sampai
mengetahui instruksi mana yang akan dimasukan ke dalam pipeline.
Padamikroprosesor modern cenderungmempunyai pipeline yang panjang dan akan
bertambah semakin panjang sehingga dibutuhkan penyelesaian akan masalah
pipeline ini. Solusinya adalah dengan menggunakan branch prediction.
Mikroprosesor akan mencoba memprediksi apakah akan terjadi percabangan atau
tidak berdasarkan rekaman yang telah dilakukan oleh proses percabangan ini
sebelumnya. Sebagai contoh jika telah terjadi 4 kali percabangan pada kondisi
percabangan yang sama, maka besar kemungkinan akan terjadi percabangan juga
pada pemrosesan berikutnya. Mikroprosesor menentukan instruksi mana yang
akan dimasukkan ke dalam pipeline berdasarkan prediksi ini, sebelum
mikroprosesor benar-benar yakin akan hal tersebut. Hal ini disebut dengan
speculative execution. Jika prediksinya salah maka setiap perhitungan berdasarkan
prediksi tadi akan diabaikan, tetapi jika prediksi benar maka mikroprosesor akan
sangat banyak menghemat waktu.

2.7.2 Contoh Spesifikasi

Ada bermacam-macam branch predictor yang digunakan dalam komputer,


diantaranya adalah :

1. Alpha 21264, spesifikasinya :


• Pipeline 8 tingkat (stage), dengan kerugian akibat kesalahan prediksi
sebesar 7 siklus (cycles).
• Cache : 64 KBmenggunakan instruksi 2 arah dengan line dan way
prediction bits(Fetch). Setiap 4 instruksi untuk fetch block mengandung
sebuah prediksi untuk block yang akan diambil (fetch) selanjutnya.
• Hybrid predictor :12 bit GAg (4K entry PHT, 2 bit counters), 10 bit PAg
(1K entry BHT, 1K entry PHT, 3 bit counters)

2. UltraSPARC-III, spesifikasinya :

10
• Pipeline 14 tingkat, branch prediction diakses saat instruksi fetch pada
stage / tingkat 2-3.
• Gshare predictor : 16K entry 2 bit counters. Menggunakan tipe
bimodalpredictor, yaitu melakukan operasi XOR terhadap PC bits dan
global history register (kecuali 3 bit urutan terbawah).
• Menghindari antrian (queue)

3. Pentium III, spesifikasinya :


• Menggunakan dynamic branch prediction 512 entry BTB (branch target
buffer) untuk memprediksi arah dan target.
• Menggunakan 4 bit history untuk menentukan arah.
• Menggunakan static branch predictor untuk BTB yang miss.
• Return Address Stack (RAS) : 4/8 entries
• Branch Penalties / Kerugian:
Untuk kasus dengan prediksi Not Taken (kondisi percabangan tidak perlu
dieksekusi) dan terbukti benar : tidak ada penalty / kerugian. Untuk kasus dengan
prediksi Taken dan terbukti benar : kerugian 1 cycle. Untuk kasus kesalahan
prediksi : paling sedikit 9 cycles, paling banyak 26 cycles, rata-rata 10-15 cycles.

4. AMD Athlon K7, spesifikasinya :


• 10 stage integer, 15-stage fp pipeline, predictor diakses saat proses fetch
• 2K entry bimodal, 2K entry BTAC
• 12 entry RAS
• Branch Penalties:
Untuk kasus dengan prediksi Taken dan terbukti benar : kerugian 1 cycle.
Untuk kasus kesalahan prediksi : kerugian sedikitnya 10 cycles.

2.7.3 Contoh Penggunaannya

11
Pada SPARC dan MIPS menggunakan trivial prediction. Trivial prediction
memprediksi bahwa branch (percabangan) tidak akan diambil. Jadi trivial
prediction selalu melakukan fetch instruksi pada urutan berikutnya. Pada
UltraSPARC-III menggunakan bimodal branch prediction. Bimodal branch
prediction memiliki sebuah tabel masukkan 2 bit yang berisi salah satu dari 4 state
yang dimungkinkan yaitu:
00 : strongly not taken
01 : weakly not taken
10 : weakly taken
11 : strongly taken
Isi tabel ini akan diupdate setiap kali memasuki kondisi percabangan tersebut.
Berikut ini adalah gambaran dari state diagram bimodal prediction :

Gambar 2.1 Bit smith counter saturation

2.7.3 Cara Kerja Branch Predictors


Stallings (2003) mendeskripsikan cara kerja teknik Branch Predictors,
yaitu prosessor melihat kode instruksi selanjutnya dari memori, kemudian

12
memprediksi percabangan atau kelompok instruksi yang mirip untuk diproses
berikutnya. Apabila perkiraan prosessor benar pada bebarapa waktu tertentu,
prosessor akan mengambil instruksi-instruksi yang benar dan menyimpannya di
dalam buffer, sehingga prosessor selalu dalam keadaan sibuk. Prediksi Branch
predictors tidak hanya pada sebuah percabangan selanjutnya, tetapi juga beberapa
cabang berikutnya. Penelitian Branch prediction untuk mendukung performance
prosessor modern dalam menangani percabanan instruksi telah banyak dilakukan.
Branch Predictor dinamis yang pertama untuk mengambil prediksi percabangan
didasarkan pada history informasi lokal. Sejak itu, Branch Predictors mengalami
perkembangan yang signifikan. Perkembangan branch predictor ditentukan
diantaranya oleh 3 (tiga) kategori dasar (Heil dkk., 1999), yaitu:

1. Penambahan path global dan history informasi


2. Teknik mengkombinasikan antara history global dan lokal
3. Mengurangi hambatan melalui skema peng-indeks-an tabel yang lebih baik

Gambar 2. Branch Predictor melalui speculative execution. Sumber: Heil dkk.


(1992)
Gambar 2 memberikan ilustrasi metode untuk menintegrasikan data values ke
dalam branch prediction yang dikenal sebagai speculative branch execution (Heil
dkk. 1992). Fog (2008) memberikan contoh ketika terjadi 4 (empat) kali
percabangan pada kondisi yang sama, maka pada pemrosesan berikutnya juga
diduga akan terjadi percabangan yang sama. Prediksi ini digunakan oleh
mikroprosessor untuk menentukan instruksi yang akan dimasukkan ke dalam

13
pipelines (buffer), sebelum mikroprosesor benar-benar yakin terjadi percabangan
pada instruksi. Semua perhitungan yang berdasarkan prediksi akan diabaikan jika
prediksinya salah, tetapi apabila prediksi benar maka waktu yang dibutuhkan
untuk eksekusi instruksi menjadi lebih singkat (Fog, 2008).

Speculative branch execution membutuhkan satu atau dua akses terhadap tabel
serial (tergantung pada data-value predictor yang digunakan) dan menggunakan
history percabangan atau data-value, tetapi tidak dapat menggunakan keduanya.
Gambar 2 menunjukkan skema speculative branch execution menggunakan
prediksi data-value dengan ukuran yang tidak terbatas. Dibandingkan dengan
percabangan statis skema tersebut tingkat akurasinya lebih baik (Heil dkk. 1992).

Gambar 3. penggunaan data-values secara langsung untuk memprediksi


percabangan.

2.7.4 MISPREDICTED

Gambar 4. mispredicted pada 20 Stage pipelines. Sumber: (Acιiçmez dkk.)


Instruki yang bersifat spekulatif dibuang dari pipelines dan prosessor memulai
eksekusi dari jalur setelah terjadinya mispredicted (Acιiçmez dkk.). Pada gambar
3 dapat diperhatikan gambaran “20 stage Misprediction Pipelines” Prosessor Intel

14
Pentium 4, yang menunjukkan alamat ketika terjadi bottlenecks dan eksekusi
instruksi spekulatif setelah percabangan. Pada kondisi tersebut, prosessor
membutuhkan informasi :

1. Hasil percabangan

Prosessor harus mengetahui hasil percabangan (Taken atau Not Taken)


untuk mengeksekusi urutan instruksi yang benar. Informasi ini tidak langsung
tersedia ketika terjadi percabangan, untuk itu prosessor harus mengeksekusi
percabangan untuk memperoleh informasi stages selanjutnya di dalam pipelines
untuk diekseskusi. Ketika menunggu hasil percabangan, prosessor mencoba untuk
memprediksi urutan instruksi yang akan dieksekusi selanjutnya. Prediksi ini
didasarkan pada history percabangan yang sama/mirip antara percabangan
sebelumnya yang telah dieksekusi dengan percabangan yang akan diproses.

2. Target alamat percabangan

Prosessor mencoba menentukan percabangan ke dalam dua kategori Taken


dan Not Taken. Jika prediksi keluar dari Taken, maka instruksi pada alamat target
diambil dan dikeluarkan. Pengambilan instruksi dari alamat target membutuhkan
informasi alamat tersebut. Seperti halnya hasil percabangan, target alamat juga
dimungkinkan tidak tersedia secara langsung. Untuk itu, Prosessor akan mencoba
untuk mengambil record target alamat percabangan sebelumnya yang dieksekusi
pada pipelines (buffer), yang dikenal dengan Branch Target Buffer (BTB).

15
Gambar 5. Arsitektur Branch Predictors. Sumber: Acιiçmez dkk.
Gambar 5 mendeskripsikan Branch Prediction Units (BPU) yang terdiri dari 2
bagian utama, yaitu BTB dan Predictor. BTB adalah buffer tempat prosessor
menyimpan alamat target pada percabangan sebelumnya. Ketika ukuran buffer
terbatas, prosessor cukup menyimpan nomor alamat target pada buffer atau
menumpuk/mengganti alamat sebelumnya yang tersimpan di buffer. fungsi dan
arsitetektur BTB sangat mirip dengan cache biasa, dan digunakan sebagai cache
untuk melihat alamat target percabangan sebelumnya yang menunjuk ke alamat
instruksi tertentu. Predictor adalah bagaian dari BPU yang melakukan prediksi
hasil percabangan. Yang termasuk bagian-bagian predictor, yaitu Branch History
Registers (BHR) seperti Global History Register atau Local History Registers, and
Branch Prediction Tables, dan lain-lain (Acιiçmez dkk.).

BAB III

PENUTUP

16
3.1 SIMPULAN

Dari hasil makalah ini dapat disimpulkan bahwa pipelining


instruksi adalah suatu cara yang digunakan untuk melakukan sejumlah kerja
secara bersamaan tetapi dalam tahap yang berbeda yang dialirkan secara continue
pada unit pemrosesan. Dengan cara ini, maka unit pemrosesan selalu bekerja.
Pada sebuah mikroprosesor sederhana semua instruksi ditangani dalam dua
langkah yaitu mendekode dan mengeksekusi. Mikroprosesor dapat menghemat
waktu dengan cara mendekode suatu instruksi ketika instruksi yang diproses
sedang dieksekusi, prinsip ini dikenal dengan “pipelining”. Pipelining
menggambarkan seolah olah instruksi – instruksi yang akan dieksekusi
ditempatkan pada barisan antrian yang menunggu untuk dirakit ataupun dibentuk
dengan tahapan-tahapan pemrosesan tertentu.

17