Kamis, 09 Juli 2009

Konfigurasi DHCP dan NAT

Konfigurasi Activity 7.4.2:
"Challenge DHCP and NAT"


pengaturan Router ISP

Router>enable
Router#config
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.

Router(config)#hostname ISP
ISP(config)#interface serial 0/0/1
ISP(config-if)#ip address 209.165.201.2 255.255.255.252
ISP(config-if)#ip route 209.165.201.0 255.255.255.252 209.165.201.1


Pengaturan Router R1

Router>enable
Router#config
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname R1
R1(config)#interface serial 0/0/0
R1(config-if)#ip address 172.16.0.1 255.255.255.252
R1(config-if)#interface fastethernet 0/0
R1(config-if)#ip address 172.16.10.1 255.255.255.0
R1(config-if)#interface fastethernet 0/1
R1(config-if)#ip address 172.16.11.1 255.255.255.0
R1(config-if)#exit

R1(config)#router rip
R1(config-router)#network 172.16.0.0
R1(config-router)#version 2
R1(config-router)#exit

//Pengaturan DHCP//

R1(config)#interface fastethernet 0/0
R1(config-if)#ip dhcp excluded-address 172.16.10.1 172.16.10.3
R1(config)#interface fastethernet 0/1
R1(config-if)#ip dhcp excluded-address 172.16.11.1 172.16.11.3
R1(config)#interface fastethernet 0/0
R1(config-if)#ip dhcp pool R1_LAN10
R1(dhcp-config)#network 172.16.10.0 255.255.255.0
R1(dhcp-config)#default-router 172.16.10.1
R1(dhcp-config)#dns-server 172.16.20.254
R1(dhcp-config)#exit
R1(config)#interface fastethernet 0/1
R1(config-if)#ip dhcp pool R1_LAN11
R1(dhcp-config)#network 172.16.11.0 255.255.255.0
R1(dhcp-config)#default-router 172.16.11.1
R1(dhcp-config)#dns-server 172.16.20.254
R1(dhcp-config)#

Pengaturan Router R2

Router>enable
Router#config
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname R2
R2(config)#interface serial 0/0/0
R2(config-if)#ip address 172.16.0.2 255.255.255.252
R2(config-if)#interface serial 0/0/1
R2(config-if)#ip address 209.165.201.1 255.255.255.252
R2(config-if)#interface fastethernet 0/0
R2(config-if)#ip address 172.16.20.1 255.255.255.0
R2(config-if)#exit
R2(config)#ip route 0.0.0.0 0.0.0.0 209.165.201.2

R2(config)#router rip
R2(config-router)#network 172.16.0.0
R2(config-router)#default-information originate
R2(config-router)#version 2
R2(config-router)#exit

//Pengaturan NAT//

R2(config)#ip access-list standard NAT_ACL
R2(config-std-nacl)#permit 172.16.10.0 0.0.0.255
R2(config-std-nacl)#permit 172.16.11.0 0.0.0.255
R2(config-std-nacl)#exit
R2(config)#ip nat inside source static 172.16.20.254 209.165.201.30
R2(config)#ip nat pool NAT_POOL 209.165.201.128 209.165.201.130 netmask 255.255.255.252
R2(config)#ip nat inside source list NAT_ACL pool NAT_POOL overload
R2(config)#interface fastethernet 0/0
R2(config-if)#ip nat inside
R2(config-if)#interface serial 0/0/0
R2(config-if)#ip nat inside
R2(config-if)#interface serial 0/0/1
R2(config-if)#ip nat outside
R2(config-if)#exit

Selasa, 07 Juli 2009

PIPELINING

Sekilas tentang Pipelining

Keberhasilan usaha produsen alat pemroses untuk meningkatkan kecepatan prosessor sangat signifikan. Evolusi perkembangan ini semakin membuktikan Hukum Moore yang menyatakan bahwa produsen keping prosessor setiap tiga tahun akan dapat menciptakan generasi baru dengan jumlah transistor empat kali lipat pada setiap keping (Stallings, 2003). Stallings (2003) juga memberikan fakta sejak intel meluncurkan keluarga prosessor X86 pada tahun 1978, penambahan rangkaian baru dan pengurangan jarak antar rangkaian dapat meningkatkan kecepatan dan kinerja mikroprosessor sebesar empat kali atau lima kali setiap tiga tahun.

Fog (2008) menggambarkan pada sebuah mikroprosessor sederhana, semua instruksi ditangani dalam dua langkah, yaitu decoding dan eksekusi. Mikroprosessor dapat menghemat waktu eksekusi instruksi dengan men-decode sebuah instruksi selama proses eksekusi instruksi lain sedang dikerjakan. Prinsip ini disebut dengan pipelining. Pipelining, merupakan fitur standar prosesor tipe RISC (Reduced Instruction Set Computing), yang dapat digambarkan persis seperti barisan antrian. Menurut Gajski dkk. (1992) teknik pipelining membagi instruksi kedalam stage-stege dan menempatkan (latched) stage satu setelah stage lainnya. Dalam kondisi ini prosesor dapat mengerjakan langkah-langkah instruksi lainnya pada waktu yang sama, sehingga beberapa instruksi dapat dieksekusi dalam periode waktu yang singkat (http://cse.stanford.edu), sehingga Pipelining dapat meningkatkan kinerja prosessor (Gajski dkk., 1992).

Lebih lanjut Fog (2008) mengungkapkan permasalahan muncul ketika prosessor harus mengkesekusi percabangan instruksi. Percabangan instruksi merupakan implementasi dari what of analysis if-then-else. Yaitu ketika if pada kondisi true, maka proses akan menuju ke lokasi lain, dan jika if kondisi false maka prosessor akan mengeksekusi instruksi selanjutnya. Hal tersebut mengakibatkan delay pada aliran intstruksi yang melalui pipeline, karena prosessor tidak mengetahui instruksi mana yang harus dieksekusi sampai selesai melaksanakan instruksi percabangan. Kondisi ini akan mengganggu aliran kerja konstan mikroprosessor yang berakibat menurunnya kecepatan eksekusi instruksi (Stallings, 2003).

Semakin panjang pipelines mengakibatkan waktu tunggu juga semakin lama dan berakhir sampai diketahui instruksi yang akan dimasukkan ke dalam pipelines diketahui (Fog, 2008). Mikroprosessor modern cenderung mempunyai pipelines yang panjang, sehingga percabangan yang terjadi akan menjadikan permasalahan performance prosessor. Stallings (2003) memberikan beberapa teknik untuk mempertahankan kecepatan atau kinerja optimal pada desain prosessor, yaitu Branch Prediction, Data Flow Analysis, dan Speculative Execution.

Penjelasan aplikasi pipelining pada Branch Prediction
1. Cara kerja Branch Prediction

Stallings (2003) mendeskripsikan cara kerja teknik Branch Predictors, yaitu prosessor melihat kode instruksi selanjutnya dari memori, kemudian 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 1. Branch Predictor melalui speculative execution. Sumber: Heil dkk. (1992)

Sampai saat ini, hampir seluruh kondisi Branch Predictors masih diusulkan menggunakan kontrol aliran informasi sebagai input-input dasar, termasuk percabangan yang dihasilkan atau cabang PC (Program Counter). Disamping meningkatkan jalur yang telah ada, predictors mengkombinasikan tipe informasi yang sama untuk meningkatkan jalur yang baik. Mispredicted pada percabangan mengakibatkan teknik Branch Prediction mempunyai pengaruh yang negattif untuk meningkatkan performance prosessor.

Gambar 1 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 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 2. penggunaan data-values secara langsung untuk memprediksi percabangan.
MISPREDICTED

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

Instruksi 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 Pentium 4, yang menunjukkan alamat ketika terjadi bottlenecks dan eksekusi instruksi spekulatif setelah percabangan. Pada kondisi tersebut, prosessor membutuhkan informasi :

- 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.

- 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).


Gambar 4. Arsitektur Branch Predictors. Sumber: Acιiçmez dkk.

Gambar 4 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.).

ALGORITMA BRANCH PREDICTORS

Jiménez memberikan contoh algoritma Branch Predictor sebagai berikut:
Parameter atau variable yang digunakan dalam algoritma:
GHL
Global history length
GHR
Global History shift register
GA
Global Array alamat percabangan sebelumnya
W
n × m × (GHL + 1) array (larik) bertipe small integer

CONTOH PEMANFAATAN BRANCH PREDICTORS

Branch Predictors UltraSPARC-III memiliki (Co, 2001):

Pipeline 14-stage, prediksi percabangan akan diakses saat mengambil instruksi pada stage 2-3

16K-entry 2-bit counter Gshare predictor

Bimodal predictor, melakukan operasi XOR terhadap bit-bit PC dengan global history register (kecuali 3 bit dibawahnya) untuk mengurangi alias.

Miss queue

Membagi mispredict penalty dengan menyediakan instruksi yang siap untuk di proses

Pada UltraSPARC-III yang menggunakan Bimodal Branch Prediction memiliki sebuah tabel masukkan berukuran 2 bit yang berisi salah satu dari 4 state sebagai berikut :

00 : Strongly Not Taken
01 : Weakly Not Taken
10 : Weakly Taken
11 : Strongly Taken

Gambar 5 menunjukkan state dan tebel untuk menggambarkan branch prediction model Bimodal Prediction :

(a)


(b)

Gambar 5. Model prediksi percabangan menggunakan bimodial prediction. (a) Diagram state; (b) Penggunaan diagram state pada tabel pipelines. Sumber : Co (2001).


DAFTAR PUSTAKA

Acιiçmez, O., Ç.K. Koç, dan J.P. Seifert. On the Power of Simple Branch Prediction Analysis. http://eprint.iacr.org/2006/351.pdf. Tanggal akses 12 November 2008, Jam 07.02.

Co, M. 2001. Intro to Branch Prediction. Department of Computer Science University of Virginia. http://www.cs.virginia.edu/~skadron/cs654/slides/bpred.ppt. Tanggal Akses 12 November 2008, Jam 07.30.

Fog, A. 2008. Branch prediction in the Pentium family: How the branch prediction mechanism in the Pentium has been uncovered with all its quirks, and the incredibly more effective branch prediction in the later versions. http://www.x86.org/ articles/branch/ branchprediction.htm. Tanggal Akses 11 November 2008, Jam 17.00 WIB.

Gajski, D.D., N.D. Dutt, A.C-II Wu, dan S.Y-L. Lin. 1992. High-Level Synthesis Introduction to Chip and System Design. Kluwer Academic Publisher. Boston/Dordrecht/London. 358p.

Heil, T.H., Z. Smith, dan J.E. Smith. 1999. Improving Branch Predictors by Correlating on Data Values. http://www.ece.wisc.edu/~jes/papers/micro99.heil.pdf. tanggal akses 11 November 2008, Jam 17.10 WIB.

Jiménez, D.Á. Recent Advances in Branch Prediction. Department of Computer Science Rutgers, The State University of New Jersey. http://ce.et.tudelft.nl/ cecoll/slides/06/0516jimenez.ppt. Tanggal akses 11 November 2008. 20.30.

Stallings, W. 2003. Computer Organization and Architecture: Designing for Performance. Sixth Edition. Prentice-Hall (Person Education, Inc.). New Jersey. 815p.

http://cse.stanford.edu/class/sophomore-college/projects-00/ risc/pipelining/index.html. Tanggal akses 12 November 2008, Jam 07.17.

© 2008. Andri Pranolo
Magister Ilmu Komputer FMIPA UGM Yogyakarta


Sumber :

http://apranolo.staff.ugm.ac.id/home/?p=150


Minggu, 28 Juni 2009

Arsitektur Komputer

PROSESOR RISC, CISC, dan SUPERSCALAR

1. CISC

Complex Instruction Set Computing merupakan rangkaian instruksi built-in pada processor yang terdiri dari perintah-perintah yang kompleks. Instruksi-instruksi yang tersedia bertujuan untuk memudahkan para programmer untuk mengembangkan aplikasi untuk plattform CISC. Pada arsitektur CISC seperti Intel x86, yang diperkenalkan pada tahun 1978, bisa terdapat ratusan instruksi program - perintah-perintah sederhana yang menyuruh sistem menambah angka, menyimpan nilai, dan menampilkan hasilnya. Bila semua instruksi panjangnya sama, instruksi sederhana akan memboroskan memori. Instruksi sederhana membutuhkan ruang penyimpanan 8 bit, sementara instruksi yang paling kompleks mengkonsumsi sebanyak 120 bit. Sehingga hal tersebut akan mengurangi kecepatannya.

Arsitektur berbasis CISC juga memungkinkan para perancang prosesor untuk menambahkan set instruksi tambahan untuk keperluan tertentu disamping set instruksi standar yang sudah ada, misalnya set instruksi MMX (Multimedia Extension) yang ditambahkan pada prosesor buatan Intel, dan 3Dnow! pada prosesor keluaran AMD. Karena itulah maka keluarga prosesor CISC lebih banyak digunakan dalam komputer pribadi dimana aplikasinya lebih luas, sementara keluarga prosesor RISC hanya digunakan pada workstation yang biasanya memiliki lingkup aplikasi yang lebih sempit. Diantara kelebihan dan kekurangan dari arsitektur RISC dan arsitektur CISC sampai sekarang masih menjadi sebuah perdebatan. Ada juga teknologi yang menggabungkan kedua arsitektur tersebut, contohnya : Prosesor Intel dan AMD yang dijual secara komersil sekarang adalah pengembangan dari prosesor x86 yang menggunakan basis prosesor CISC. Lucunya, instruksi set yang didukung oleh kedua prosesor tersebut menggunakan instruksi RISC yang lebih efisien dalam menangani data.

Karakteristik singkat CISC :

  • Lebih menekankan pada perangkat keras sesuai untuk programmer.
  • Memiliki instruksi komplek.
  • Load & Storage atau memory ke memory bekerja sama.
  • Memiliki ukuran kode yang kecil dan kecepatannya rendah.
  • Transistor di dalamnya digunakan untuk menyimpan instruksi - instruksi bersifat komplek.

2. RISC

Reduced Instruction Set Computing merupakan rangkaian instruksi built-in pada processor yang terdiri dari perintah-perintah yang lebih ringkas dibandingkan dengan CISC. RISC memiliki keunggulan dalam hal kecepatannya sehingga banyak digunakan untuk aplikasi-aplikasi yang memerlukan kalkulasi secara intensif. Konsep RISC pertama kali dikembangkan oleh IBM pada era 1970-an. Komputer pertama yang menggunakan RISC adalah komputer mini IBM 807 yang diperkenalkan pada tahun 1980. Dewasa ini, RISC digunakan pada keluarga processor buatan Motorola (PowerPC) dan SUN Microsystems (Sparc, UltraSparc).

RISC dikembangkan melalui seorang penelitinya yang bernama John Cocke, beliau menyampaikan bahwa sebenarnya kekhasan dari komputer tidaklah menggunakan banyak instruksi, namun yang dimilikinya adalah instruksi yang kompleks yang dilakukan melalui rangkaian sirkuit. Pada desain chip mikroprosesor jenis ini, pemroses diharapkan dapat melaksanakan perintah-perintah yang dijalankannya secara cepat dan efisien melalui penyediaan himpunan instruksi yang jumlahnya relatif sedikit, dengan mengambil perintah-perintah yang sangat sederhana, akibatnya arsitektur RISC membatasi jumlah instruksinya yang dipasang ke dalam mikroprosesor tetapi mengoptimasi setiap instruksi sehingga dapat dilaksanakan dengan cepat. Dengan demikian instruksi yang sederhana dapat dilaksanakan lebih cepat apabila dibandingkan dengan mikroprosesor yang dirancang untuk menangan susunan instruksi yang lebih luas.

Dengan demikian chip RISC hanya dapat memproses instruksi dalam jumlah terbatas, tetapi instruksi ini dioptimalkan sehingga cepat dieksekusi. Meski demikian, bila harus menangani tugas yang kompleks, instruksi harus dibagi menjadi banyak kode mesin, terutama sebelum chip RISC dapat menanganinya. Karena keterbatasan jumlah instruksi yang ada padanya, apabila terjadi kesalahan dalam pemrosesan akan memudahkan dalam melacak kesalahan tersebut. Pada tahun 1980-an kapasitas modul memori meningkat dan harganya turun. Penekanan pada desain CPU bergeser ke kinerja, dan RISC menjadi trend baru. Contoh arsitektur RISC meliputi SPARC dari Sun Microsystems; seri MIPS Rxxxx dari MIPS Technologies; Alpha dari Digital Equipment; PowerPC yang dikembangkan bersama oleh IBM dan Motorola; dan RISC dari Hewlett-Packard.

Chip RISC menggunakan sejumlah kecil instruksi dengan panjang-sama yang relatif sederhana, yaitu panjangnya selalu 32 bit. Walaupun hal ini memboroskan memori karena harus dibuat program lebih besar, instruksi lebih mudah dan cepat dieksekusi. Karena chip ini berurusan dengan jenis instruksi lebih sedikit, chip RISC membutuhkan lebih sedikit transistor ketimbang chip CISC dan umumnya berkinerja lebih tinggi pada kecepatan clock yang sama, walaupun chip ini harus mengeksekusi lebih banyak instruksi lebih pendek untuk menyelesaikan sebuah fungsi. Kesederhanaan RISC juga mempermudah merancang prosesor superscalar - chip yang dapat mengeksekusi lebih dari satu instruksi pada satu saat. Hampir semua prosesor RISC dan CISC modern adalah superscalar; tetapi untuk mencapai kemampuan ini membuat desain lebih rumit. Kebalikan dari arsitektur chip mikrprosesor dari RISC adalah CISC.

Karakteristik singkat RISC :

  • Menekankan pada perangkat lunak dengan sedikit transistor.
  • Instruksi sederhana bahkan single.
  • Load & Storage atau memory ke memory bekerja terpisah.
  • Ukuran kode besar besar dan kecepatan lebih tinggi.
  • Transistor di dalamnya lebih digunakan untuk register memory.

3. SUPERSCALAR

Salah satu jenis arsitektur dimana superscalar adalah sebuah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalam bentuk paralel. Merupakan salah satu rancangan untuk meningkatkan kecepatan CPU. Kebanyakan dari komputer saat ini menggunakan mekanisme superscalar ini. Standar pipeline yang digunakan adalah untuk pengolahan bilangan matematika integer (bilangan bulat, bilangan yang tidak memiliki pecahan), kebanyakan CPU juga memiliki kemampuan untuk pengolahan untuk data floating point (bilangan berkoma). Pipeline yang mengolah integer dapat juga digunakan untuk mengolah data bertipe floating point ini, namun untuk aplikasi tertentu, terutama untuk aplikasi keperluan ilmiah CPU yang memiliki kemampuan pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis.

Peristiwa menarik yang bisa dilakukan dengan metoda superscalar ini adalah dalam hal memperkirakan pencabangan instruksi (brach prediction) serta perkiraan eksekusi perintah (speculative execution). Peristiwa ini sangat menguntungkan buat program yang membutuhkan pencabangan dari kelompok intruksi yang dijalankankannya.Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman. Contohnya dalam menentukan aktifitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya, katakanlah jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut, anggaplah seseorang tersebut dianggap telah dewasa, sedangkan untuk kondisi lainnya dianggap belum dewasa. Tentu perlakuannya akan dibedakan sesuai dengan sistem yang sedang dijalankan.

Lalu apa yang dilakukan oleh CPU untuk hal ini? Komputer akan membandingkan nilai umur data yang diperolehnya dengan 18 tahun sehingga komputer dapat menentukan langkah dan sikap yang harus diambilnya berdasarkan hasil perbandingan tersebut. Sikap yang diambil tentu akan diambil berdasarkan pencabangan yang ada. Pada CPU yang mendukung perintah pencabangan ini, CPU membutuhkan lumayan banyak clock cycle, mengingat CPU menempatkan semuanya pada pipeline dan menemukan perintah berikutnya yang akan dieksekusinya. Sirkuit untuk branch prediction melakukan pekerjaan ini bekerja sama dengan pipeline, yang dilakukan sebelum proses di ALU dilaksanakan, dan memperkirakan hasil dari pencabangan tersebut.

Jika CPU berfikir bahwa branch akan menuju suatu cabang, biasanya berdasarkan pekerjaan sebelumnya, maka perintah berikutnya sudah dipersiapkan untuk dieksekusi berikut data-datanya, bahkan dengan adanya pipeline ini, bila tidak diperlukan suatu referensi dari instruksi terakhir, maka bisa dilaksanakan dengan segera, karena data dan instruksi yang dibutuhkan telah dipersiapkan sebelumnya. Dalam hal speculative execution, artinya CPU akan menggunakan melakukan perhitungan pada pipeline yang berbeda berdasarkan kemungkinan yang diperkirakan oleh komputer. Jika kemungkinan yang dilakukan oleh komputer tepat, maka hasilnya sudah bisa diambil langsung dan tinggal melanjutkan perintah berikutnya, sedangkan jika kemungkinan yang diperkirakan oleh komputer tidak tepat, maka akan dilaksanakan kemungkinan lain sesuai dengan logika instruksi tersebut.

Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan branch prediction dan speculative execution tentunya membutuhkan ekstra transistor yang tidak sedikit untuk hal tersebut. Sebagai perbandingan, komputer yang membangkitkan pemrosesan pada PC pertama yang dikeluarkan oleh IBM pada mesin 8088 memiliki sekitar 29.000 transistor. Sedangkan pada mesin Pentium III, dengan teknologi superscalar dan superpipeline, mendukung branch prediction, speculative execution serta berbagai kemampuan lainnya memiliki sekitar 7,5 juta transistor. Beberapa CPU terkini lainnya seperti HP 8500 memiliki sekitar 140 juta transistor.


Sumber :

1. http://margono.staff.uns.ac.id/2008/10/31/complex-instruction-set-computing-cisc/

2. http://margono.staff.uns.ac.id/2008/10/20/reduced-instruction-set-computing-risc/

3. http://images.deroom.multiply.com/attachment/0/SYp@6AoKCt8AAB1l3uo1/Arsikom4%20tema.pdf?nmid=192548469

4. http://chuded.co.cc/superscalar/