Cara saya suka memikirkannya adalah dengan analogi cucian. Instruksi CPU seperti banyak cucian. Anda harus menggunakan mesin cuci dan pengering untuk setiap beban. Katakanlah masing-masing membutuhkan waktu 30 menit untuk berlari. Itu adalah siklus jam. CPU lama akan menjalankan mesin cuci, kemudian menjalankan pengering, mengambil 60 menit (2 siklus) untuk menyelesaikan setiap beban cucian, setiap saat.
Pipelining: Pipeline adalah ketika Anda menggunakan keduanya pada saat yang sama - Anda mencuci beban, lalu saat pengeringan, Anda mencuci beban berikutnya. Beban pertama membutuhkan 2 siklus untuk menyelesaikan, tetapi beban kedua selesai setelah 1 siklus lagi. Jadi, sebagian besar beban hanya perlu 1 siklus, kecuali beban pertama.
Superscalar: Bawa semua cucian ke binatu. Dapatkan 2 mesin cuci dan muat keduanya. Setelah selesai, cari 2 pengering dan gunakan keduanya. Sekarang Anda dapat mencuci dan mengeringkan 2 beban dalam 60 menit. Itu adalah 2 beban dalam 2 siklus. Setiap beban masih membutuhkan 2 siklus, tetapi Anda dapat melakukan lebih dari itu sekarang. Waktu rata-rata sekarang adalah 1 beban per siklus.
Superscalar dengan Pipelining: Cuci 2 beban pertama, lalu selagi ini mengering, muat pencuci dengan 2 beban berikutnya. Sekarang, 2 muatan pertama masih membutuhkan 2 siklus, dan 2 sisanya selesai setelah 1 siklus lagi. Jadi, sebagian besar waktu, Anda menyelesaikan 2 beban di setiap siklus.
Multiple core: Berikan setengah dari cucian Anda kepada ibu Anda, yang juga memiliki 2 mesin cuci dan 2 pengering. Dengan Anda berdua bekerja bersama, Anda bisa menyelesaikan dua kali lebih banyak. Ini mirip dengan superscalar, tetapi sedikit berbeda. Alih-alih Anda harus memindahkan semua cucian ke dan dari masing-masing mesin sendiri, dia dapat melakukannya pada saat yang sama dengan Anda.
Ini hebat, kita bisa mencuci delapan kali lebih banyak dari sebelumnya dalam jumlah waktu yang sama, tanpa harus membuat mesin yang lebih cepat. (Gandakan kecepatan jam: Mesin cuci yang hanya perlu 15 menit untuk menjalankan.)
Sekarang, mari kita bicara tentang bagaimana kesalahannya:
Gelembung pipa: Anda memiliki noda yang tidak keluar dalam pencucian, jadi Anda memutuskan untuk mencucinya lagi. Sekarang pengering hanya duduk di sana, menunggu sesuatu untuk dilakukan.
Cache Miss: Truk yang mengantarkan cucian kotor macet di lalu lintas. Sekarang Anda memiliki 2 mesin cuci dan 2 pengering, tetapi Anda tidak mendapatkan pekerjaan karena Anda harus menunggu.
Bergantung pada seberapa sering kesalahan terjadi, kami tidak akan dapat selalu menyelesaikan 4 beban setiap siklus, sehingga jumlah pekerjaan aktual yang dilakukan dapat bervariasi.
Prediksi Cabang: Nah, Anda mulai mencuci pakaian bersih Anda jika Anda menodai mereka nanti jadi mereka sudah bersih ... oke, ini adalah di mana analogi itu rusak ...