Wednesday, April 25, 2012

Resume Pipelined Execution


RESUME PIPELINED EXECUTION
Khafidurrohman Agustianto/ 100533402595/ PTI OFF C 2010
Berbeda dengan era komputasi pada era pertama, dimana pada era tersebut berfokus dalam pewujudan suatu alat komputasi yang kecil. Era komputasi modern ditandai dengan salah satu inovasi kunci yang mendasari meningkatkan kinerja cepat yang menjadi ciri beberapa dekade terakhir perkembangan mikroprosesor yaitu eksekusi pipelined. Eksekusi pipelined adalah teknik yang memungkinkan desainer mikroprosesor untuk meningkatkan kecepatan di mana prosesor beroperasi, sehingga mengurangi jumlah waktu yang dibutuhkan prosesor untuk mengeksekusi program.
Siklus Hidup dari Instruksi komputer pada dasarnya mengulangi tiga langkah dasar berulang-ulang dalam rangka untuk menjalankan sebuah program:
1. Fetch / Mengambil instruksi berikutnya dari alamat disimpan dalam program counter dan beban instruksi yang ke register instruksi. Increment program counter.
2. Decode instruksi dalam register instruksi.
3. Excute / Jalankan instruksi dalam register instruksi.
Anda juga harus ingat bahwa langkah ke-3, adalah tahap pengeksekusian, dimana pada tahap pengesekusian ini terdiri dari beberapa sub-langkah, hal ini tergantung pula pada jenis instruksi yang dieksekusi (aritmatika, akses memori, atau cabang). Dalam kasus instruksi aritmatika terdapat tiga sub-langkah yang analogikan sebagai register A,B, dan C, contoh langkah pengesekusian dalam aritmatika sebagai berikut:
1. Read/ Membaca isi register A dan B.
2. Add/ Tambahkan isi dari A dan B.
3. Write/ Menulis hasilnya kembali untuk mendaftar C.
Perluasan/ penjabaran esekusi yang dibutuhkan untuk menjalankan sebuah instruksi aritmatika adalah sebagai berikut (pengganti instruksi aritmatika lain untuk menambahkan dalam daftar untuk melihat bagaimana hal itu dijalankan):
1. Mengambil instruksi berikutnya dari alamat disimpan dalam program counter dan beban instruksi yang ke register instruksi. Increment program counter.
2. Decode instruksi dalam register instruksi.
3. Jalankan instruksi dalam register instruksi. Karena instruksi bukan merupakan instruksi cabang tapi instruksi aritmatika, kirimkan ke unit aritmatika logika (ALU).
a. Membaca isi register A dan B.
b. Tambahkan isi dari A dan B.
4. Menulis hasilnya kembali untuk mendaftar C.
Dalam prosesor modern, keempat langkah ini diulang lagi dan lagi sampai program selesai dieksekusi. Dalam pipa RISC1 klasik. Dalam model pipa lama/ old pipe, pipa digunakan sebagai serangkaian tahapan bahwa setiap instruksi dalam aliran kode harus melewati ketika aliran kode sedang dieksekusi. Berikut ini adalah empat tahapan dalam old pipe:
1. Mengambil
2. Membaca sandi
3. Melaksanakan
4. Menulis (atau “write-back”)
Masing-masing tahapan dapat dikatakan mewakili satu fase dalam satu siklus hidup sebuah instruksi. Instruksi mulai keluar dalam fase mengambil, bergerak ke tahap decode, kemudian ke fase pengeksekusian, dan akhirnya ke tahap menulis. Setiap fase membutuhkan tetapan, tetapi tidak berarti sama, jumlah waktu. Pada sebagian besar contoh prosesor yang lama, semua empat fase mengambil dialakukan dalam waktu bersamaan, namun sebenarnya ini tidak biasanya terjadi pada prosesor sesungguhnya. Dalam kasus manapun, jika DLW-1 mengambil tepat 1 nanodetik (ns) untuk menyelesaikan setiap tahap, maka DLW-1 dapat menyelesaikan satu instruksi setiap 4ns.
Dasar Arus Instruksi
Satu bagian yang memiliki keguanaan yang paling penting ketika berbicara tentang CPU adalah alur yang terdapat pada front end dibandingkan back end. Ketika instruksi yang diambil dari memori utama harus diterjemahkan terlebih dahulu baru masuk tahapan eksekusi. pengambilan dan decoding terjadi di front end prosessor.
Pada Gambar 3-1 front end berfungsi untuk mengontrol dan unit I / O. ALU dan register merupakan ujung belakang DLW-1 maka disebut sebagai back end. Instruksi membuat jalan mereka dari ujung depan ke bawah melalui bagian belakang, di mana urutan tugas akan dilakukan.
Analogi Pipe Line
Katakanlah saya telah memutuskan untuk masuk ke bisnis manufaktur otomotif dan menetukan bahwa produk pertama kami adalah kendaraan sport (SUV). Setelah beberapa penelitian, saya menentukan bahwa ada lima tahapan dalam proses pembuatan kendaraan sport (SUV):
Tahap 1: Membangun sasis.
Tahap 2: Drop mesin ke dalam chassis.
Tahap 3: Pemasangan pintu, kap mesin, dan penutup pada chassis.
Tahap 4: Pemasangan roda.
Tahap 5: Cat SUV.
Masing-masing tahap memerlukan penggunaan pekerja yang sangat terlatih dengan sangat khusus, sehingga misal diperlukan set keterampilan kerja yang baik dalam membangun chasses tidak tahu banyak tentang mesin, bodywork, roda, atau lukisan, dan juga untuk pembangun mesin, pelukis, dan yang lainnya.
Jadi ketika kita membuat usaha pertama saya untuk membuat sebuah pabrik SUV, kami mempekerjakan dan melatih lima awak spesialis, satu untuk setiap tahap proses pembuatan SUV. Ada satu kru untuk membangun chassis, satu untuk menjatuhkan mesin, satu untuk menempatkan pintu, kap mesin, dan penutup pada casing, satu lagi untuk roda, dan kru lukisan. Akhirnya, karena kru sangat khusus dan efisien, setiap tahap proses pembangunan SUV membutuhkan kru tepat satu jam untuk menyelesaikan.
Sekarang, karena saya adalah lulusan IT dan bukan insinyur industri, saya harus banyak belajar tentang membuat efisiensi penggunaan sumber daya pabrik. Saya berdsar fungsi pabrik pertama saya pada rencana berikut: Tempatkan semua lima kru dalam garis di lantai pabrik, dan memiliki kru pertama memulai sebuah SUV pada Tahap 1. Setelah Tahap 1 selesai, Kru tahap 1 beristrirahat, kemudian diteruskan kepada Tahap 2 dan seterusnya sampai tahap 5. Pada tingkat ini, dibutuhkan tepat lima jam untuk menyelesaikan sebuah SUV tunggal. Atau secara sedehana pada sistem pertama ini, dalam pembuatan subuah SUV dilakukan tahap per tahap diaman ketika satu tahap dilakukan tahap lainnya tidak berjalan, sehingga dalam setiap siklus pem uatan dibutuhkan waktu 5 tahapan, hal ini sangatlah tidak efisien.
Perushaan saya ternyata mendapat keamajuan yang pesat setelah satu tahun beroprasi. Bahkan, SUV kami adalah SUV terbaik, sehingga kami telah menarik perhatian militer dan telah ditawari kontrak untuk menyediakan SUV untuk Angkatan Darat AS secara terus-menerus. Angkatan Darat memesan SUV dalam beberapa kurun waktu; satu order bisa mencapai 10 SUV, dan pada order berikutnya dimungkinkan akan melakukan pemesan 500 SUV. Semakin banyak permintaan SUV kepada perusahaan saya berarti semakin banyak jumlah keuntungan yang bisa saya sapatkan. Ini tentu saja berarti bahwa saya perlu menemukan cara untuk meningkatkan jumlah produksi SUV pabrik saya dengan estimasi 1 jam untuk tiap SUV-nya. Dengan menyelesaikan SUV lebih cepat tiap jam nya, saya dapat memenuhi pesanan Angkatan Darat lebih cepat dan membuat lebih banyak uang setiap tahun.
Cara paling intuitif untuk meningkatkan produksi pabrik saya adalah untuk mencoba mengurangi waktu produksi dari masing-masing SUV. Jika kita bisa mendapatkan kru untuk bekerja dua kali lebih cepat, pabrik kami dapat menghasilkan SUV dua kali lebih banyak dalam jumlah waktu yang sama. Namun ini tidak tampak seperti penggunaan yang sangat efisien dari sumber daya pabrik, meskipun, karena tidak hanya kita memiliki awak dua kali lebih banyak bekerja sekaligus tetapi kami juga memiliki dua kali lebih banyak awak di ruang istirahat sekaligus. Harus ada cara yang lebih baik.
Dihadapkan dengan kurangnya pilihan, saya akhirnya menyewa tim konsultan untuk mencari tahu cara cerdas untuk meningkatkan produktivitas pabrik secara keseluruhan tanpa menambah dua kali lipat jumlah kru atau meningkatkan produktivitas masing-masing kru individu. Setelah sejenak berfikir si-konsultan ini melontarkan sebuah ide cerdas. Mengapa membiarkan kru kami menghabiskan empat-perlima dari hari kerja mereka di ruang istirahat, ketika mereka bisa melakukan pekerjaan yang berguna selama waktu itu? Dengan penjadwalan yang tepat dari lima kru yang ada, pabrik kami dapat menyelesaikan satu SUV setiap jam, sehingga secara drastis meningkatkan baik efisiensi dan output dari jalur perakitan kami. Alur kerja yang direvisi akan terlihat sebagai berikut:
1. Tahap 1 kru membangun chassis.
2. Setelah sasis selesai, mereka mengirimkannya ke kru 2 Tahap.
3. Tahap 2 kru menerima chassis dan mulai menjatuhkan mesin dalam, sedangkan Tahap 1 kru dimulai pada sasis baru.
4. Ketika kedua Tahap 1 dan Tahap 2 kru sudah selesai, pekerjaan Tahap 2 kru kemajuan ke Tahap 3, kemajuan pekerjaan Tahap 1 kru ke Tahap 2, Tahap 1 dan kru dimulai pada sasis baru.
Pada sistem kedua yang diterapkan oleh perusahaan saya, terjadi efisiensi sampai 5 kali lipat, dimana hal ini terjadi dengan pemaksimalan kerja tiap kru dengan penjadwalan yang berntai dan berkesinambungan. Atau dalam penjabarannya, ketika satu kru selesai dengan tahapannya kru tersebut meneruskan ke kru berikutnya sekaligus mendapat pekerjaan baru yang telah dijadwalkan.
Prosesor Non-Pipelined
Non-pipelined prosesor bekerja pada satu instruksi pada satu waktu, yang bergerak setiap instruksi melalui semua empat fase siklus hidup selama satu siklus clock. Jadi non-pipelined prosesor juga disebut single-siklus prosesor, karena semua instruksi mengambil tepat satu siklus clock untuk mengeksekusi sepenuhnya (misalnya, untuk melewati keempat tahap siklus hidup mereka). Karena prosesor menyelesaikan instruksi pada tingkat satu per siklus clock, sedangkan orientasi sekarang CPU harus berlari secepat mungkin sehingga tingkat penyelesaian instruksi prosesor dapat setinggi mungkin. Dengan demikian Anda perlu menghitung jumlah maksimum waktu yang dibutuhkan untuk menyelesaikan instruksi dan membuat waktu siklus clock setara dengan waktu yang panjang. Kebetulan bahwa pada CPU contoh hipotetis, empat fase siklus instruksi kita total 4 ns untuk menyelesaikan. Oleh karena itu, Anda harus mengatur durasi siklus clock CPU untuk 4 ns, sehingga CPU dapat menyelesaikan instruksi itu siklus hidup-dari fetch untuk menulis-kembali-dalam sebuah jam tunggal. (Sebuah siklus clock CPU sering hanya disebut clock for short) Akhir dari nanodetik keempat adalah juga akhir dari siklus jam pertama, jadi sekarang bahwa siklus jam pertama selesai dan instruksi biru telah menyelesaikan eksekusinya, instruksi merah dapat memasukkan prosesor pada awal dari sebuah siklus clock yang baru dan melalui proses yang sama. Ini 4 ns urutan langkah ini diulang sampai, setelah total 16 ns (atau empat siklus jam), prosesor telah menyelesaikan semua empat instruksi pada tingkat penyelesaian 0,25 instruksi / ns (= 4 instructions/16 ns).
Single-siklus prosesor pada non-piplened prosesor yang sederhana untuk desain, tetapi mereka membuang banyak sumber daya perangkat keras. Semua diakibatkan hardware prosesor yang duduk menganggur sementara menunggu untuk instruksi yang masih ditangani oleh bagian lainnya. Dengan pipelining prosesor dalam angka ini, Anda dapat menempatkan lebih dari perangkat keras yang bekerja setiap nanodetik, sehingga meningkatkan efisiensi dan kinerja prosesor pada program mengeksekusi.
Prosesor Pipelined
Prosesor pipelining serangkaian tahapan pipa diskrit yang dapat diselesaikan secara berurutan oleh perangkat keras khusus. Hal ini identik dengan sistem kedua yang diterapkan dalam masalah prosuksi SUV diatas. Karena instruksi, anggap siklus terdiri dari empat fase yang cukup berbeda, di mana setiap tahap pipa sesuai dengan fase dalam siklus instruksi standar :
Tahap 1: Mengambil instruksi dari penyimpanan kode.
Tahap 2: Decode instruksi.
Tahap 3: Jalankan instruksi.
Tahap 4: Tulis hasil instruksi kembali ke file mendaftar.
Perhatikan bahwa jumlah pipa tahapan yang disebut pipeline depth. Jadi pipa empat tahap memiliki kedalaman pipa empat. Untuk mudahnya kita bisa mengatakan bahwa masing-masing pipa tahapan keempat mengambil tepat 1 ns untuk menyelesaikan tugasnya pada suatu instruksi, seperti masing-masing kru dalam analogi perakitan baris SUV membutuhkan waktu satu jam untuk menyelesaikan porsi kerja pada SUV. Jadi prosesor tunggal siklus asli, 4 ns proses eksekusi sekarang dipecah menjadi empat diskrit, pipa tahapan berurutan dari 1 ns masing-masing panjangnya.

0 comments:

Post a Comment