\(^-^)/FIRMANSYAH 13100731\(^-^)/

Jumat, 18 November 2011

HARDDISK

Apa itu Harddisk???
Hardisk merupakan piranti penyimpanan sekunder dimana data disimpan sebagai magnetik pada piringan metal yang berputar yang terintegrasi. Atau dapat diartikan dengan cakram keras. Data disimpan dalam lingkaran konsentris yang disebut track. Tiap track dibagi dalam beberapa segment yang dikenal sebagai sector. Untuk melakukan operasi baca tulis data dari dan ke piringan, harddisk menggunakan head untuk melakukannya, yang berada disetiap piringan. Head inilah yang selanjut bergerak mencari sector-sector tertentu untuk dilakukan operasi terhadapnya. Waktu yang diperlukan untuk mencari sector disebut seek time. Setelah menemukan sector yang diinginkan, maka head akan berputar untuk mencari track. Waktu yang diperlukan untuk mencari track ini dinamakan latency. Harddisk merupakan media penyimpan yang didesain untuk dapat digunakan menyimpan data dalam kapasitas yang besar. Hal ini dilatar belakangi adanya program aplikasi yang tidak memungkinkan berada dalam 1 disket dan juga membutuhkan media penyimpan berkas yang besar misalnya database suatu instansi. Tidak hanya itu, Harddisk diharapkan juga diimbangi dari kecepatan aksesnya. Kecepatan harddisk bila dibandingkan dengan disket biasa, sangat jauh. Hal ini dikarenakan harddisk mempunyai mekanisme yang berbeda dan teknologi bahan yang tentu saja lebih baik dari pada disket biasa. Bila tanpa harddisk, dapat dibayangkan betapa banyak yang harus disediakan untuk menyimpan data kepegawaian suatu instansi atau menyimpan program aplikasi. Hal ini tentu saja tidak efisien. Ditambah lagi waktu pembacaannya yang sangat lambat bila menggunakan media penyimpanan disket konvensional tersebut. Jika dibuka, terlihat mata cakram keras pada ujung lengan bertuas yang menempel pada piringan yang dapat berputar Data yang disimpan dalam harddisk tidak akan hilang ketika tidak diberi tegangan listrik. Dalam sebuah harddisk, biasanya terdapat lebih dari satu piringan untuk memperbesar kapasitas data yang dapat ditampung.



Dalam perkembangannya kini harddisk secara fisik menjadi semakin tipis dan kecil namun memiliki daya tampung data yang sangat besar. haddiskkini juga tidak hanya dapat terpasang di dalam perangkat (internal) tetapi juga dapat dipasang di luar perangkat (eksternal) dengan menggunakan kabel USB ataupun FireWire

Sejarah Harddisk
Harddisk diciptakan pertama kali oleh insinyur IBM, Reynold Johnson di tahun 1956. Harddisk pertama tersebut terdiri dari 50 piringan berukuran 2 kaki (0,6 meter) dengan kecepatan rotasinya mencapai 1.200 rpm (rotation per minute) dengan kapasitas penyimpanan 4,4 MB. HDD berlabel RAMAC 305 ini mempunyai kapasitas 5 Mega Bits (MB) atau 5.000.000 bits. Artinya RAMAC 305 hanya bisa menyimpan 5 juta informasi. Pada tahun 2004, Toshiba company mengeluarkan hard disk drive berlabel HDD-0.85 inchi. Harddisk zaman sekarang sudah ada yang hanya selebar 0,6 cm dengan kapasitas 750 GB. HDD yang berukuran kurang dari 1 inchi ini mempunyai kapasitas 4 Giga Bits (GB) atau 4 milyar bits, dan menjadi HDD terkecil di dunia
Harddisk yang pada awal perkembangannya didominasi oleh perusahaan raksasa yang menjadi standard komputer yaitu IBM. Ditahun-tahun berikutnya muncul perusahaan-perusahaan lain antara lain Seagate, Quantum, Conner sampai dengan Hewlet Packard’s di tahun 1992. Pada awalnya teknologi yang digunakan untuk baca/tulis, antara head baca/tulisnya dan piringan metal penyimpannya saling menyentuh. Tetapi pada saat ini hal ini dihindari, dikarenakan kecepatan putar Harddisk saat ini yang tinggi, sentuhan pada piringan metal penyimpan justru akan merusak fisik dari piringan tersebut.



Komponen penyusun Harddisk
Secara umum, komponen-komponen pokok yang menyusun sebuah hard disk terdiri dari:
1. Platter: Piringan, biasanya dibuat dari alumunium yang dilapisi dengan bahan magenetik. Pada permukaan platter inilah data pada hard disk disimpan. Sebuah had disk bisa memiliki beberapa buah platter yang bekerja simultan.
2. Lengan pembaca: Komponen ini menyangga head yang berfungsi untuk membaca/menulis pada permukaan platter. Lengan ini dikontrol melalui sebuah mekanisme yang digerakkan oleh sebuah motor-linear. Mekanisme ini bergerak dengan kecepatan dan presisi yang sangat tinggi. Lengan pembaca pada kebanyakan hard disk saat ini mampu bergerak dari pusat hingga pinggir platter, dan kemudian kembali ke pusat sebanyak 50 kali sedetik.
3. Head baca/tulis merupakan perantara antara media fisik dengan data elektronik. Lewat head ini data ditulis ke medium fisik atau dibaca dari medium fisik. Head akan mengubah data bit menjadi pulsa magnetik dan menuliskannya ke medium fisik. Pada proses pembacaan data prosesnya merupakan kebalikannya.

Bahan Pembuat Harddisk
Saat ini Harddisk dibuat dengan teknologi material media magnetik disebut thin film.Lebih rapat, masa pakainya, kecil, ringan dari bahan oxide

Proses baca Harddisk
Saat sebuah sistem operasi mengirimkan data kepada hard drive untuk direkam, drive tersebut memproses data tersebut menggunakan sebuah formula matematikal yang kompleks yang menambahkan sebuah bit ekstra pada data tersebut.Bit tersebut tidak memakan tempat: Di kemudian hari, saat data diambil, bit ekstra tersebut memungkinkan drive untuk mendeteksi dan mengkoreksi kesalahan acak yang disebabkan oleh variasi dari medan magnet di dalam drive tersebut. Kemudian, drive tersebut menggerakkan head melalui track yang sesuai dari platter tersebut. Waktu untuk menggerakkan head tersebut dinamakan “seek time”. Saat berada di atas track yang benar, drive menunggu sampai platter berputar hingga sector yang diinginkan berada di bawah head. Jumlah waktu tersebut dinamakan “drive latency”. Semakin pendek waktu `seek` dan `latency`, semakin cepat drive tersebut menyelesaikan pekerjaannya. Saat komponen elektronik drive menentukan bahwa sebuah head berada di atas sector yang tepat untuk menulis data, drive mengirimkan pulsa elektrik pada head tersebut. Pulsa tersebut menghasilkan sebuah medan magnetik yang mengubah permukaan magnetik pada platter. Variasi yang terekam tersebut sekarang mewakili sebuah data. Membaca data memerlukan beberapa proses perekaman. Drive memposisikan bagian pembaca dari head di atas track yang sesuai, dan kemudian menunggu sector yang tepat untuk berputar di atasnya. Saat spektrum magnetik tertentu yang mewakili data Anda pada sector dan track yang tepat berada tepat di atas head pembaca, komponen elektronik drive mendeteksi perubahan kecil pada medan magnetik dan mengubahnya menjadi bit. Saat drive tersebut selesai mengecek error pada bit dan membetulkannya jika perlu, ia kemudian mengirimkan data tersebut pada sistem operasi.

Sector & Tracks
Tracks adalah bagian dari sepanjanjang keliling lingkaran dari luar sampai ke dalam.Sedangkan sector adalah bagian dari tracks.Sectors memiliki jumlah bytes yang sudah diatur. Ada ribuan sector dalam HD.
Mekanisme Kerja Harddisk
Proses baca tulis dilakukan oleh lengan harddisk dengan media Fisik magnetik. Head hardisk melakukan konversi bits ke pulse magnetik dan menyimpannya ke dalam platters, dan mengembalikan data jika proses pembacaan dilakukan Hard disk memiliki “Hard platter” yang berfungsi untuk menyimpan medan magnet.Pada dasarnya cara kerja hard disk adalah dengan menggunakan teknik perekaman medan magnet. Cara kerja teknik magnet tersebut memanfaatkan Iron oxide (FeO) atau karat dari besi, Ferric oxide (Fe2O3) atau oxida lain dari besi. 2 oxida tersebut adalah zat yang bersifat ferromagnetic , yaitu jika didekatkan ke medan magnet maka akan ditarik secara permanen oleh zat tersebut.


Jenis – Jenis Hard Disk:

v Disk ATA / EIDE, hard disk dengan tipe EIDE (Enhanced Integrated Drive Electronic) atau tipe ATA (Advanced Technology Attachment) adalah standar versi terbaru suatu antar muka disk yang sesuai untuk koneksi ke bus, Banyak produsen disk memiliki rentang disk dengan antar muka EIDE / ATA, disk semacam itu dapat dihubungkan langsung ke bus PCI, yang digunakan pada banyak PC (personal computer). Keuntungan drive EIDE / ATA yang signifikan adalah harganya yang cukup murah, karena penggunaannya di pasaran PC. Salah satu kekurangan utamanya adalah diperlukan kontroler terpisah untuk tiap drive jika dua drive digunakan bersamaan untuk meningkatkan performa. Salah satu produsen chip yang terkenal sudah menyertakan kontroler yang memungkinkan disk EIDE / ATA dihubungkan langsung ke motherboard.

v Disk SCSI, banyak disk memiliki antar muka yang didesain untuk koneksi ke bus SCSI standar. Disk tersebut cenderung lebih mahal, tetapi mempunyai performa yang lebih baik, yang dimungkinkan karena kelebihan bus SCSI daripada bus PCI. Akses yang bersamaan dapat dilakukan ke banyak disk drive karena antar muka drive secara aktif dihubungkan ke bus SCSI hanya pada saat drive tersebut siap untuk transfer data. Hal ini terutama berguna dalam aplikasi dimana terdapat sejumlah besar request untuk file kecil, yang sering terjadi dalam komputer yang digunakan sebagai file server.

v Disk RAID, menjanjikan performa yang luar biasa dan menyediakan penyimpanan yang besar dan handal. Disk tersebut digunakan baik dalam komputer performa tinggi atau dalam sistem yang memerlukan keandalan yang lebih tingi dari tingkat normal. Akan tetapi, dengan semakin menurunnya harga ke tingkat yang lebih terjangkau, disk tersebut menjadi lebih menarik bahkan untuk sistem komputer dengan ukuran rata – rata.

v Disk SATA, hard disk dengan tipe SATA (Serial Advanced Technology Attachment), yaitu interface disk ATA (Advanced Technology Attachment) dengan versi Serialnya menggunakan kabel tipis yang memiliki total kabel kecil sekitar dua pertiga dari total kabel harddisk dengan tipe EIDE atau ATA disk yang berjumlah 39 pins dan SATA mempunyai kecepatan pengiriman data sangat tinggi serta mengurani latensi. Sehingga bus serial ini mampu melebihi kecepatan bus paralel.

v SATA dalam mentransfer data secara berurutan atau serial lewat kabelnya dan juga secara teknik SATA menyusun sendiri disk yang tersambung ke dalam motherboard tanpa adanya sistem master ataupun slave, sehingga kabel SATA hanya dapat digunakan pada satu hard disk. Tipe hard disk yang telah dibahas ini, semuanya masuk dalam kategori internal hard disk, maksudnya yang diinstall di dalam CPU. Selain internal hard disk ada juga eksternal harddisk (hard disk yang berada diluar CPU), jadi bisa dipindah – pindahkan. Eksternal hard disk mempunyai kecepatan rotasi 7200 rpm, pemasangannya sangat mudah, tidak perlu membongkar PC dan hanya dengan menghubungkan port USB ke PC, dan dapat mentransfer data 480 Mbps.


kesimpulan wikipedia ()

Cakram keras (bahasa Inggris: harddisk atau harddisk drive disingkat HDD atau hard drive disingkat HD) adalah sebuah komponen perangkat keras yang menyimpan data sekunder dan berisi piringan magnetis. Cakram keras diciptakan pertama kali oleh insinyur IBM, Reynold Johnson di tahun 1956. Cakram keras pertama tersebut terdiri dari 50 piringan berukuran 2 kaki (0,6 meter) dengan kecepatan rotasinya mencapai 1.200 rpm (rotation per minute) dengan kapasitas penyimpanan 4,4 MB. Cakram keras zaman sekarang sudah ada yang hanya selebar 0,6 cm dengan kapasitas 750 GB. Kapasitas terbesar cakram keras saat ini mencapai 3 TB dengan ukuran standar 3,5 inci.



Data yang disimpan dalam cakram keras tidak akan hilang ketika tidak diberi tegangan listrik. Dalam sebuah cakram keras, biasanya terdapat lebih dari satu piringan untuk memperbesar kapasitas data yang dapat ditampung.
Dalam perkembangannya kini cakram keras secara fisik menjadi semakin tipis dan kecil namun memiliki daya tampung data yang sangat besar. Cakram keras kini juga tidak hanya dapat terpasang di dalam perangkat (internal) tetapi juga dapat dipasang di luar perangkat (eksternal) dengan menggunakan kabel USB ataupun FireWire.
Karena sifatnya yang rapuh dan tidak tahan guncangan, cakram keras bisa dikategorikan sebagai barang pecah belah.


DAFTAR PUSTAKA :
http://hasiaulia.net/2009/12/09/pengertian-hardisk/
http://chandaclub.wordpress.com/2008/05/15/jenis-jenis-hard-disk/
http://id.wikipedia.org/wiki/Cakram_keras

BRANCH PREDICTORS

PENGANTAR
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.
Pada paper ini akan dibahas tentang Branch Prediction sebagai teknik penting untuk menjaga performance prosessor modern (Heil dkk., 1999) dan sebagai solusi untuk penanganan permasalahan percabangan (dependensi) instruksi pada pipelines (Stallings, 2003; Fog, 2008).


CARA KERJA BRANCH PREDICTORS
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.)
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 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.

Data Flow analisis

DEFINISI :

ANALISIS ALIRAN DATA adalah analisis yang dilakukan untuk mempelajari pemanfaatan data pada setiap aktifitas. Menampilkan hasil pengamatan dalam apa yang disebut ‘Data Flow Diagram’ (DFD) atau diagram alir data.Diagram Alir Data, yaitu satu tampilan grafis yang memunculkan relasi/hubungan antara proses dan data beserta kamus data yang menjelaskan rincian data yang dipergunakan.
Data flow analisis adalah Metoda untuk melacak gerakan berbagai jenis informasi melalui sistem komputer, terutama dalam hubungan sekurity dan kontrol yang diterapkan untuk memastikan integritas informasi.
Penentuan kualitas atau mutu suatu perangkat lunak mutlak diperlukan. Kualitas suatu perangkat lunak dapat dinyatakan baik bila telah sesuai dengan requirement pengguna tanpa mengabaikan segi strukturalnya. Dengan tidak mengabaikan fungsional program, uji coba struktural juga harus dilakukan karena uji coba fungsional tak mampu menangani hal-hal yang berhubungan dengan struktural program.. Uji coba fungsional tidak dapat menentukan apakah dieksekusi selama pengujian akan tersembunyi dalam package program dan bila didalamnya terdapat kesalahan maka kesalahan tersebut akan tersembunyi dalam jangka waktu tertentu. Data flow analysis adalah suatu metode yang digunakan untuk mengumpulkan informasi dalam program tanpa mengeksekusi program yang diuji coba. Metode ini merupakan bagian dari metode pengujian secara structural yang sangat efektif untuk menemukan kesalahan yang berupa data flow anomaly dengan cara memeriksa kode program. Dengan metode ini, seluruh pernyataan program yang diuji coba akan dianalisa.
Analisis sistem adalah penguraian dari suatu sistem informasi yang utuh ke dalam bagian-bagian komponennya dengan maksud untuk mengidentifikasikan dan mengevaluasi permasalahan, kesempatan, hambatan yang terjadi dan kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan.
Tahap analisis dilakukan setelah tahap perencanaan sistem dan sebelum tahap desain sistem. Dapat dilakukan dengan 2 cara :
1. Analisis terstruktur (structured analysis)
2. Analisis aliran data (data flow analysis)
Data-flow analisis
Data-flow analisis adalah sebuah teknik untuk mengumpulkan informasi tentang kemungkinan set nilai-nilai dihitung pada berbagai titik dalam sebuah program komputer . Sebuah program flow control grafik (CFG) digunakan untuk menentukan bagian-bagian dari sebuah program untuk mana suatu nilai tertentu yang diberikan ke variabel mungkin merambat. Informasi yang dikumpulkan sering digunakan oleh kompiler ketika mengoptimalkan program. Contoh kanonik dari analisis aliran data mencapai definisi .

Sebuah cara sederhana untuk melakukan analisis aliran data dari program adalah untuk mengatur-persamaan aliran data untuk setiap node dari grafik kontrol aliran dan menyelesaikannya dengan berulang kali menghitung output dari input secara lokal pada setiap node sampai seluruh sistem stabil, yaitu, mencapai suatu fixpoint . Pendekatan umum yang dikembangkan oleh Gary Kildall saat mengajar di Naval Postgraduate School .
DATA FLOW ANALYSIS
Adalah suatu teknik perancangan yg digunakan untuk memperoleh modul-modul dg tingkat kohesi yg tinggi.

Data-flow analisis adalah sebuah teknik untuk mengumpulkan informasi tentang kemungkinan set nilai-nilai dihitung pada berbagai titik dalam sebuah program komputer .Sebuah program flow control grafik (CFG) digunakan untuk menentukan bagian-bagian dari sebuah program untuk mana suatu nilai tertentu yang diberikan ke variabel mungkinmerambat. Informasi yang dikumpulkan sering digunakan olehkompiler ketikamengoptimalkanprogram. Contoh kanonik dari analisis aliran data mencapai definisi . Sebuah cara sederhana untuk melakukan analisis data flow program adalah untuk mengatur persamaan data flow untuk setiap node dari grafik kontrol aliran dan menyelesaikannya dengan berulang kali menghitung output dari input secara lokal padasetiap node sampai seluruh sistem stabil, yaitu mencapai sebuah fixpoint . Pendekatan umum yang dikembangkan oleh Gary Kildallsaat mengajar diNaval Postgraduate School.
Ini adalah proses pengumpulan informasi tentang cara variabel yang digunakan,didefinisikan dalam program ini. analisis aliran data upaya untuk memperoleh informasitertentu di setiap titik dalam sebuah prosedur. Biasanya, itu sudah cukup untuk memperoleh informasi ini pada batas blok dasar, karena dari yang mudah untuk menghitung informasi pada titik-titik di blok dasar. Dalam analisis aliran ke depan,negara keluar dari blok adalah fungsi dari negara masuk blok. Fungsi ini adalahkomposisi efek laporan di blok tersebut. Keadaan masuknya blok adalah fungsi darinegara keluar dari pendahulunya
KEUNTUNGAN ANALISIS ALIRAN DATA :
•notasi yang dipergunakan sederhana, mudah dimengerti sekalipun oleh orang awam;
•usulan untuk modifikasi diagram agar dicapai keakurasian yang tinggi dalam aktifitas bisnis dapat dilakukan;
•mudah dikoreksi sebelum proses perancangan ,karenadapat dikaji rinci/ditelusuri
•memberikan kemungkinan untuk mengisolasi daerah kajian yang diminati secara khusus
memberikan fasilitas penjabaran diagram berdasarkan tingkat pengamatan





Data flow,
Disimbolkan dengan tanda panah dimana arah panah menunjukkan arah mengalirnya data.
Data flow mengalir menuju proses atau meninggalkan proses.
Data flow yang meninggalkan external entity selalu menuju ke proses.
Data flow dapat berupa:
masukan untuk sistem atau hasil dari proses sistem dan dapat berbentuk formulir atau dokumen yang digunakan sistem
laporan tercetak yang dihasilkan sistem
masukan untuk komputer
output ke layar monitor
data yang dibaca dari suatu file atau yang direkam ke suatu file
komunikasi ucapan
surat atau memo
suatu isian yang dicatat pada buku agenda
Arus data diberi nama yang jelas dan bermakna (meaningfull) yang dapat mewakili data yang mengalir.

Speculative Execution

Speculative Execution dalam Superscalar

Salah satu jenis dari arsitektur, dimana superscalar adalah sebuah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalm 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.