Selasa, 01 November 2011

PIPELINED EXECUTION


 Semua arsitektur prosesor yang Anda telah melihat sejauh ini relatif sederhana, dan mereka mencerminkan awal tahap evolusi komputer. Bab ini akan membawa anda lebih dekat ke era komputasi modern dengan memperkenalkan salah satu inovasi kunci yang mendasari peningkatan kinerja yang telah ditandai masa lalu beberapa dekade pembangunan mikroprosesor: 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. Bab ini akan memperkenalkan konsep perpipaan dengan cara analogi pabrik, dan kemudian akan berlaku analogi untuk mikroprosesor.

Siklus Hidup suatu Instruksi


Dalam bagian sebelumnya, Anda belajar bahwa komputer mengulangi tiga dasar langkah berulang-ulang untuk menjalankan sebuah program:

1. Mengambil instruksi dari alamat yang disimpan dalam program counter dan        menjalankan instruksi  ke register instruksi.

2. Decode instruksi dalam register instruksi.

3. Jalankan instruksi dalam register instruksi.

Anda juga harus ingat bahwa langkah 3, langkah mengeksekusi, itu sendiri dapat terdiri dari beberapa sub-langkah, tergantung pada jenis instruksi yang sedang dieksekusi (aritmatika, akses memori, atau cabang). Dalam hal aritmetika instruksi tambahkan A, B, C, contoh kita gunakan terakhir kali, tiga sub-langkah adalah sebagai berikut:

            1. Membaca isi register A dan B.

            2. Tambahkan isi dari A dan B.

            3. Menulis hasilnya kembali untuk mendaftar C.

Untuk alasan, kita akan membahas secara detail ketika kita berbicara tentang jendela instruksi dalam Bagian 5, mikroprosesor paling modern mengubah sub-langkah 3a dan 3b sebagai kelompok, sementara mereka menggunakan langkah 3c,  menulis mendaftar, secara terpisah. Untuk mencerminkan hal ini konseptual dan arsitektur divisi, daftar ini harus diubah untuk melihat seperti berikut:

1.      Mengambil instruksi berikutnya dari alamat yang disimpan dalam program counter, dan beban yang instruksi ke register instruksi.

2.      Decode instruksi dalam register instruksi.

3.       Jalankan instruksi dalam register instruksi. Karena instruksi bukan instruksi cabang  tapi instruksi aritmatika, kirim ke ALU.

a. Membaca isi register A dan B.

b. Tambahkan isi dari A dan B.

5.    Menulis hasilnya kembali untuk mendaftar C.

Instruksi Dasar Arus


            Salah satu divisi yang berguna arsitek komputer sering mempekerjakan ketika berbicara tentang CPU bahwa front end dibandingkan back end. Seperti yang Anda sudah tahu, ketika instruksi yang diambil dari memori utama, instruksi harus diterjemahkan untuk di eksekusi. Ini berarti mengambil dan decoding terjadi di depan prosesor akhir.

Dijelaskan pipelining


            Katakanlah teman-teman saya dan saya telah memutuskan untuk masuk ke manufaktur otomotif bisnis dan bahwa produk pertama kami adalah untuk menjadi kendaraan sport (SUV). Setelah beberapa penelitian, kita menentukan bahwa ada lima tahapan dalam proses pembangunan SUV:

            Tahap 1: Membangun sasis.

            Tahap 2: Drop mesin ke dalam chassis.

            Tahap 3: Masukkan pintu, kap mesin, dan penutup pada chassis.

            Tahap 4: Pasang roda.

            Tahap 5: Cat SUV.

            Masing-masing tahap memerlukan pekerja yang sangat terlatih dengan sangat terampil dan khusus set-pekerja yang pandai membangun chasses tidak tahu banyak tentang mesin, bodywork, roda, atau lukisan, dan juga untuk mesin pembangun, pelukis, dan kru lainnya. Jadi ketika kita membuat upaya pertama kami untuk menyusun sebuah pabrik SUV, kami mempekerjakan dan melatih lima awak spesialis, satu untuk setiap tahap proses SUV.

SUV ini menjual dengan baik sehingga kami telah menarik perhatian militer dan telah ditawari kontrak untuk menyediakan SUV untuk Angkatan Darat AS secara berkelanjutan dasar. Angkatan Darat memesan suka SUV beberapa waktu; satu urutan mungkin datang untuk 10 SUV, dan ketertiban yang lain mungkin datang untuk 500 SUV.

Menerapkan Analogi yang Membawa diskusi kita kembali ke mikroprosesor, harus mudah untuk melihat bagaimana konsep ini berlaku untuk empat fase siklus instruksi itu. Hanya sebagai pemilik pabrik di analogi kita ingin meningkatkan jumlah SUV bahwa pabrik bisa selesai dalam periode waktu tertentu, mikroprosesor desainer selalu mencari cara untuk meningkatkan jumlah instruksi bahwa CPU dapat menyelesaikan dalam jangka waktu tertentu. Bila Anda ingat bahwa program adalah memerintahkan urutan instruksi, menjadi jelas bahwa meningkatkan jumlah instruksi dieksekusi per satuan waktu adalah salah satu cara untuk mengurangi jumlah total waktu yang dibutuhkan untuk menjalankan sebuah program.

Buku-buku lain menggunakan analogi sederhana, seperti mencuci pakaian, misalnya, untuk menjelaskan teknik ini, tetapi ada beberapa alasan mengapa saya memilih analogi yang lebih rumit dan panjang untuk menggambarkan apa adalah sebuah konsep yang relatif sederhana. Pertama, saya menggunakan analogi pabrik di seluruh buku ini, karena perakitan berbasis pabrik mudah bagi pembaca untuk memvisualisasikan dan ada banyak ruang untuk mengisi gambar mental dalam cara yang menarik di untuk membuat berbagai poin terkait. Kedua, dan mungkin bahkan lebih penting, penjadwalan-, banyak antrian dan sumber daya manajemen yang terkait masalah bahwa pabrik desainer wajah memiliki analogi langsung dalam arsitektur komputer. Di banyak kasus, masalah dan solusi yang persis sama, hanya diterjemahkan ke dalam yang berbeda domain. (Mirip antrian terkait masalah / solusi pasang juga muncul dalam industri jasa, yang mengapa analogi melibatkan supermarket dan makanan cepat saji

Non-Pipelined Processor

non-pipelined prosesor bekerja pada satu instruksi pada satu waktu, masing-masing bergerak instruksi melalui semua empat fase siklus hidup selama satu jam siklus. 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).

Akhir dari keempat nanodetik juga merupakan akhir dari siklus jam pertama, jadi sekarang bahwa siklus jam pertama selesai dan instruksi biru telah menyelesaikan eksekusinya, merah instruksi dapat memasukkan prosesor pada awal dari sebuah siklus clock baru dan pergi 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 instruksi / 16 ns).

Pipelined Processor

            Prosesor pipelining berarti mengubah eksekusi instruksi tersebut proses apa yang saya sudah menelepon ke siklus hidup-instruksi itu serangkaian diskrit pipa tahapan yang dapat diselesaikan secara berurutan oleh perangkat keras khusus. Ingat cara kita mendobrak proses perakitan SUV menjadi lima diskrit langkah-dengan satu kru khusus ditugaskan untuk menyelesaikan setiap langkah dan Anda akan mendapatkan ide. Karena siklus instruksi terdiri dari empat fase yang cukup berbeda, Anda dapat memulai dengan memecah eksekusi instruksi prosesor tunggal siklus yang proses menjadi urutan empat tahap pipa diskrit, di mana masing-masing pipa tahap 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.

Pada awal nanodetik pertama, instruksi biru masuk fetch. Setelah nanodetik itu selesai, kedua nanodetik dimulai dan instruksi biru bergerak ke tahap decode, sedangkan instruksi berikutnya, merah satu, mulai untuk membuat jalan dari penyimpanan kode ke prosesor (yakni, itu memasuki tahap fetch). Pada awal nanodetik ketiga, kemajuan instruksi biru untuk tahap mengeksekusi, instruksi merah kemajuan ke tahap decode, dan instruksi hijau memasuki fetch. Pada awal nanodetik kelima, pipa sekarang penuh dan prosesor dapat mulai menyelesaikan instruksi pada tingkat satu instruksi per nanodetik. Ini satu instruksi / ns tingkat penyelesaian adalah peningkatan empat kali lipat selama prosesor tunggal siklus yang menyelesaikan tingkat 0,25 instruksi / ns (atau empat setiap ns 16 instruksi).

The Speedup from Pipelining

Secara umum, tingkat penyelesaian percepatan dalam pelaksanaan tunggal versus siklus yang diperoleh dari perpipaan idealnya sama dengan jumlah pipa tahap. Sebuah pipa empat tahap menghasilkan percepatan empat kali lipat dalam tingkat penyelesaian versus siklus pipa tunggal, pipa lima tahap menghasilkan speedup lima kali lipat, sebuah dua belas tahap pipa menghasilkan speedup duabelas, dan sebagainya. Speedup ini mungkin karena pipa tahapan yang lebih ada di prosesor, semakin instruksi prosesor dapat bekerja secara bersamaan, dan petunjuk lebih itu dapat menyelesaikan dalam jangka waktu tertentu. Jadi, semakin halus Anda dapat slice keempat fase siklus instruksi, semakin perangkat keras yang digunakan untuk mengimplementasikan fase Anda dapat menempatkan untuk bekerja pada suatu waktu tertentu.

Jadi kita bisamempercepat pabrik kami dengan membelah menjadi dua kru masing-masing lebih kecil, lebih khusus awak tiga pekerja masing-masing, dan kemudian setelah masing-masing kru kecil melakukan salah satu tugas pendek di salah satu SUV per 30 menit.

Tahap 1: Membangun sasis.

       1a: Fit bagian dari chassis bersama-sama dan tempat-melas sendi.
       1b: Sepenuhnya las semua bagian chassis.

Tahap 2: Drop mesin ke dalam chassis.

       2a: Tempatkan mesin ke dalam chassis dan mount di tempat.
       2b: Hubungkan mesin ke bagian yang bergerak dari mobil.
Tahap 3: Masukkan pintu, kap mesin, dan penutup pada chassis.

       3a: Masukkan pintu dan kap pada chassis.

       3b: Letakkan penutup lainnya pada chassis.

Tahap 4: Pasang roda.

       4a: Lampirkan dua roda depan.

       4b: Pasang kedua roda belakang.

Tahap 5: Cat SUV.

       5a: Cat sisi SUV.

       5b: Cat bagian atas SUV.

Program Execution Time and Completion Rate

Secara umum, waktu eksekusi program adalah sama dengan jumlah instruksi dalam program dibagi dengan tingkat penyelesaian instruksi prosesor (nomor instruksi diselesaikan per nanodetik), seperti dalam persamaan berikut: Program waktu eksekusi = jumlah instruksi dalam program / instruksi tingkat penyelesaian Sebagian besar waktu, ketika saya berbicara tentang kinerja prosesor dalam buku ini, Aku sedang berbicara tentang waktu pelaksanaan program. Satu prosesor melakukan lebih baik daripada yang lain jika menjalankan semua instruksi dalam sebuah program yang lebih pendek jumlah waktu, sehingga mengurangi waktu eksekusi program adalah kunci untuk meningkatkan kinerja prosesor.

Dengan prosesor pipelined, hubungan antara eksekusi instruksi waktu dan tingkat penyelesaian yang lebih kompleks. Seperti telah dibahas sebelumnya, pipelined prosesor memungkinkan Anda untuk meningkatkan tingkat penyelesaian prosesor tanpa mengubah waktu eksekusi instruksi. Tentu saja, penurunan dalam instruksi waktu eksekusi masih diterjemahkan ke dalam peningkatan tingkat penyelesaian, tetapi sebaliknya belum tentu benar. Bahkan, karena Anda akan belajar nanti, pipelining ini perbaikan tingkat penyelesaian sering datang pada saat instruksi meningkat. Ini berarti bahwa untuk pipelining untuk meningkatkan kinerja, tingkat penyelesaian prosesor harus setinggi mungkin selama kursus eksekusi sebuah program.

The Relationship Between Completion Rate and Program Execution Time

            Lima menyelesaikan instruksi dalam rentang 8 ns jelas bukan peningkatan empat kali lipat selama dua instruksi selesai pada periode waktu yang sama, jadi apa? Ingatlah bahwa ia mengambil prosesor pipelined ns 4 awalnya untuk mengisi dengan instruksi, prosesor pipelined tidak menyelesaikan instruksi pertama sampai akhir nanodetik keempat. Oleh karena itu, selesai lebih sedikit instruksi selama 8 ns pertama pelaksanaan program daripada itu akan telah pipa telah penuh untuk seluruh ns 8. Ketika prosesor sedang mengeksekusi program yang terdiri dari ribuan instruksi, kemudian sebagai jumlah nanodetik membentang ke dalam ribuan, dampak pada waktu eksekusi program dari empat nanodetik awal, selama yang hanya satu instruksi selesai, mulai lenyap dan Keuntungan prosesor pipelined yang mulai mendekati tanda empat kali lipat. Untuk Misalnya, setelah 1000 ns, prosesor non-pipelined akan menyelesaikan 250 instruksi (1000 instruksi ns ÷ 0,25 / ns = 250 instruksi), sementara pipelined prosesor akan menyelesaikan instruksi 996 [(1000 ns - 4 ns) ÷ 1 instruksi / ns]-perbaikan 3,984 kali lipat.

            Jadi dalam kesimpulan, prosesor pipelined hanya dapat pendekatan ideal tingkat penyelesaian jika dapat pergi untuk membentang panjang dengan pipa yang penuh pada setiap siklus clock.

Instruction Throughput and Pipeline Stalls

Pipelining tidak benar-benar "bebas," namun. Pipelining menambahkan beberapa kompleksitas untuk mikroprosesor yang mengontrol logika, karena semua tahapan ini harus disimpan di sync. Bahkan lebih penting bagi pembahasan sekarang, meskipun, adalah kenyataan bahwa pipelining menambahkan beberapa kompleksitas cara-cara di mana Anda menilai kinerja prosesor.

Instruction Throughput

Jumlah instruksi bahwa prosesor selesai dieksekusi pada setiap siklus clock. Anda juga akan melihat instruksi throughput disebut sebagai instruksi per jam (IPC).

Maximum theoretical instruction throughput

Jumlah maksimum teoritis instruksi bahwa prosesor dapat selesai mengeksekusi pada setiap siklus clock. Untuk jenis sederhana pipelined dan non-pipelined prosesor digambarkan sejauh ini, nomor ini selalu satu instruksi per siklus (satu instruksi / jam atau satu IPC).

Average instruction throughput

Rata-rata jumlah instruksi per jam (IPC) bahwa prosesor sebenarnya telah menyelesaikan lebih dari sejumlah tertentu siklus. Sebuah prosesor instruksi throughput adalah terkait erat dengan instruksi yang tingkat-penyelesaian lebih instruksi bahwa prosesor selesai masing-masing siklus jam (instruksi / jam), instruksi yang lebih juga selesai selama periode waktu tertentu (instruksi / ns). Kita akan berbicara lebih banyak tentang hubungan antara kedua metrik dalam saat, tapi untuk saat ini hanya ingat bahwa instruksi throughput yang lebih tinggi diterjemahkan menjadi instruksi yang lebih tinggi tingkat penyelesaian, dan karenanya lebih baik kinerja.

Pipeline Stalls

Sekarang, 10 atau 20 siklus senilai kios di sana-sini mungkin tidak tampak seperti banyak, tetapi mereka menambahkan. Bahkan lebih penting, meskipun, adalah kenyataan bahwa angka dalam contoh sebelumnya akan meningkat dengan faktor 30 atau lebih dalam dunia nyata skenario eksekusi. Seperti tulisan ini, prosesor dapat menghabiskan 50-120 nanodetik menunggu data dari memori utama. Untuk 3 GHz prosesor yang memiliki waktu jam siklus sebagian kecil dari nanodetik, sebuah 100 ns menerjemahkan akses utama memori menjadi ribuan beberapa siklus jam senilai gelembung-dan itu hanya untuk satu memori utama akses keluar dari banyak jutaan bahwa program mungkin membuat selama pelaksanaannya. Dalam bab-bab berikutnya, kita akan melihat penyebab kios pipa dan banyak trik yang arsitek komputer digunakan untuk mengatasinya.

Instruction Latency and Pipeline Stalls

Latency sebuah instruksi adalah jumlah siklus clock yang diperlukan untuk instruksi untuk melewati pipa. Untuk siklus tunggal- prosesor, semua instruksi memiliki latency satu siklus clock. Sebaliknya, untuk pipa empat tahap sederhana yang dijelaskan sejauh ini, semua instruksi memiliki latency yang dari empat siklus. Untuk mendapatkan gambar visual dari ini, mengambil satu terlihat lebih pada biru

Dalam dunia nyata prosesor, instruksi latency tidak selalu tetap nomor yang sama dengan jumlah tahap pipa. karena instruksi bisa digantung di satu atau lebih tahapan pipa untuk beberapa siklus, masing-masing ekstra siklus yang mereka menghabiskan menunggu dalam tahap pipa menambahkan satu siklus lagi untuk mereka latency. Jadi latency instruksi yang diberikan dalam ayat sebelumnya (yaitu, empat siklus untuk jaringan pipa empat tahap, delapan siklus untuk pipa delapan tahap, dan sebagainya) merupakan instruksi latency minimal. Realisasi instruksi latency dalam pipa panjang apapun dapat lagi dari kedalaman pipa, tergantung pada apakah atau tidak instruksi kios di satu atau lebih tahap.

The Cost of Pipelining

Selain batas melekat pada perbaikan kinerja yang telah kami hanya menatap, pipelining membutuhkan sejumlah trivial pembukuan ekstra dan buffering logika untuk melaksanakan, sehingga ada biaya overhead dalam transistor dan mati ruang. Selanjutnya, biaya overhead meningkat dengan pipa mendalam, sehingga prosesor dengan sangat dalam pipa (misalnya, Intel Pentium 4) menghabiskan sejumlah besar anggaran transistor pada pipelinerelated logika. Biaya overhead ini terjadi beberapa kendala praktis tentang bagaimana Anda dapat pipa mendalam prosesor. Aku akan mengatakan lebih banyak tentang kendala seperti dalam bab-bab yang mencakup garis Pentium dan Pentium 4.

Tidak ada komentar:

Posting Komentar