Jawaban singkatnya
Langkah-langkah dalam decoding dan mengeksekusi instruksi dieksekusi secara paralel dengan langkah selanjutnya dari instruksi sebelumnya. Teknik ini dikenal sebagai pipelining. Lihat Pada Prosesor RISC di bawah ini.
Arsitektur RISC satu masalah biasanya akan rata-rata sedikit kurang dari satu instruksi per siklus karena status tunggu dan waktu yang dibutuhkan untuk operasi load / store yang menekan memori daripada hanya mendaftar untuk mendaftar. Slot keterlambatan memberi Anda pengait arsitektur yang memungkinkan Anda mendapatkan sebagian dari waktu ini kembali. Lihat Pada prosesor RISC di bawah ini.
Siklus instruksi adalah lamanya waktu yang dibutuhkan untuk menjalankan instruksi. Ini akan berbeda dengan arsitektur dan (dalam beberapa kasus) instruksi. Misalnya, sebagian besar instruksi pada sesuatu seperti MIPS R2000 / 3000 mengambil satu siklus. Instruksi yang melibatkan akses memori (memuat / menyimpan, cabang) membutuhkan lebih dari satu siklus, meskipun slot penundaan berarti Anda mungkin dapat menjalankan sesuatu yang lain (mungkin hanya NOP) di slot penundaan. Arsitektur non-pipa dapat memiliki siklus instruksi dari beberapa siklus clock, seringkali berbeda dengan mode pengalamatan. Lihat Pada prosesor RISC, arsitektur CISC Tradisional dan Arsitektur yang Dipasang di Bawah ini .
Desain multi-isu dapat mengaburkan konsep ini dengan mengeksekusi lebih dari satu instruksi secara paralel.
Prosesor CISC dapat memiliki instruksi yang membutuhkan waktu yang bervariasi. Jumlah pasti siklus jam tergantung pada arsitektur dan instruksi. Beragamnya jumlah clock cycle yang diambil pada CISC ISA adalah salah satu alasan mengapa mereka sulit untuk dibangun ke dalam arsitektur yang disalurkan melalui pipa. Lihat arsitektur CISC Tradisional di bawah ini.
Jawaban yang lebih panjang
Untuk MIPS masalah tunggal, SPARC atau CPU lainnya, semua (untuk perkiraan pertama) mengeluarkan instruksi dalam satu siklus, meskipun mereka dapat memiliki sesuatu yang dikenal sebagai 'slot keterlambatan.'
Pada Prosesor RISC
Dalam konteks ini, satu masalah CPU adalah satu di mana CPU tidak melakukan analisis ketergantungan on-the-fly dan paralel mengeluarkan instruksi seperti CPU modern, yaitu mereka hanya memiliki satu unit eksekusi yang mengeksekusi instruksi dalam urutan mereka dibaca dari memoty. Lebih lanjut tentang ini nanti.
Sebagian besar prosesor RISC yang lebih lama adalah desain satu masalah, dan jenis ini masih banyak digunakan dalam sistem embedded. Inti RISC integer 32-bit masalah tunggal dapat diimplementasikan di sekitar 25.000-30.000 gerbang, sehingga inti CPU jenis ini memiliki konsumsi daya yang sangat rendah dan jejak kaki yang sangat kecil. Ini membuatnya mudah dan murah untuk diintegrasikan ke dalam produk SOC (system-on-chip).
RISC desain CPU pipelined - pemrosesan instruksi dilakukan dalam beberapa tahap, dengan setiap instruksi diturunkan pipa ke tahap berikutnya setiap siklus clock. Dalam kebanyakan kasus, CPU pipelined masalah tunggal akan mengeksekusi sesuatu yang dekat dengan satu instruksi per siklus clock.
Beberapa arsitektur memiliki instruksi seperti percabangan atau memuat / menyimpan dari memori di mana siklus tambahan yang diambil oleh akses memori terlihat oleh kode.
Misalnya, dalam desain SPARC V7 / V8 instruksi berikutnya setelah cabang benar-benar dieksekusi sebelum cabang itu sendiri terjadi. Biasanya Anda akan meletakkan NOP ke dalam slot setelah cabang tetapi Anda bisa memasukkan instruksi lain ke dalamnya jika Anda bisa menemukan sesuatu yang berguna untuk dilakukan.
Arsitektur MIPS R2000 / R3000 memiliki slot penundaan yang serupa dalam instruksi memuat / menyimpan. Jika Anda memuat nilai dari memori, itu tidak akan benar-benar muncul di register untuk siklus lain. Anda dapat meletakkan NOP di slot atau melakukan sesuatu yang lain jika Anda dapat menemukan sesuatu yang bermanfaat untuk dilakukan yang tidak bergantung pada operasi beban yang baru saja dikeluarkan.
Jika memori lebih lambat dari CPU, yang sering terjadi, Anda mungkin mendapatkan status tunggu tambahan pada akses memori. Status tunggu, diamkan CPU untuk satu atau beberapa siklus jam sampai akses memori selesai. Dalam praktiknya, status tunggu ini dan waktu ekstra untuk mengakses memori berarti bahwa desain CPU satu masalah rata-rata sedikit kurang dari satu instruksi per siklus clock. Delay slot memberi Anda beberapa peluang yang memungkinkan untuk mengoptimalkan kode dengan menjalankan beberapa instruksi lain saat operasi memori berlangsung.
Prosesor CISC tradisional
Prosesor CISC adalah desain yang dapat memiliki instruksi yang memakan banyak waktu. Seringkali mereka memiliki instruksi yang lebih kompleks diimplementasikan secara langsung dalam perangkat keras yang harus dilakukan dalam perangkat lunak pada CPU RISC.
Kebanyakan arsitektur mainframe dan hampir semua desain PC hingga M68K dan intel 386 adalah CPU CISC mikrokode tradisional. Desain ini terbukti lebih lambat per-jam dan menggunakan lebih banyak gerbang daripada CPU RISC.
Mikrokode
Contoh arsitektur mikrokode (MOS 6502) dapat dilihat dalam persaingan di sini . Mikrokode dapat dilihat di bagian atas gambar.
Mikrokode mengontrol aliran data dan tindakan yang diaktifkan dalam CPU untuk menjalankan instruksi. Dengan mengulangi langkah-langkah dalam mikrokode Anda dapat mengaktifkan bagian-bagian dari CPU, memindahkan data melalui ALU atau melakukan langkah-langkah lain. Komponen yang dapat digunakan kembali dalam CPU dapat dikoordinasikan melalui beberapa siklus clock untuk menjalankan instruksi. Dalam kasus 6502 beberapa tindakan pipelined juga dapat dieksekusi oleh mikrokode.
Desain mikrokodekan menggunakan lebih sedikit silikon daripada chip berkabel dengan mengorbankan kemungkinan mengambil beberapa siklus clock untuk menyelesaikan instruksi. Tergantung pada desainnya, CPU ini akan memakan waktu yang bervariasi untuk setiap instruksi.
Arsitektur bawaan
Desain bawaan (tidak harus saling eksklusif dengan mikrokode) melaksanakan instruksi secara serempak, atau mungkin memiliki koordinator sendiri untuk melakukan sesuatu melintasi beberapa siklus clock. Mereka biasanya lebih cepat dengan mengorbankan perangkat keras yang lebih berdedikasi dan karenanya lebih mahal untuk diimplementasikan daripada desain mikrokode dengan fungsi yang setara.
Sebuah contoh terkenal dari hal ini adalah CPU Amdahl 470/6 asli , yang merupakan pengganti drop-in untuk CPU pada model IBM System / 370 tertentu. CPU Amdahl adalah desain bawaan pada saat CPU 370 IBM banyak didasarkan pada mikrokode. CPU Amdahl sekitar 3 kali lebih cepat dari CPU IBM yang mereka gantikan.
Tidak perlu dikatakan, IBM tidak merasa geli dan ini mengakibatkan pertarungan pengadilan yang akhirnya memaksa IBM untuk membuka arsitektur mainframe mereka sampai keputusan persetujuan berakhir beberapa tahun yang lalu.
Biasanya, desain bawaan jenis ini masih tidak secepat jam-ke-jam seperti CPU RISC karena pengaturan waktu dan format instruksi yang berbeda tidak memungkinkan ruang lingkup untuk pemipaan seperti halnya desain RISC.
Desain berganda
Sebagian besar CPU modern adalah beberapa arsitektur masalah yang dapat memproses lebih dari satu instruksi pada satu waktu dalam satu utas. Chip dapat melakukan analisis ketergantungan dinamis pada aliran instruksi yang masuk dan mengeluarkan instruksi secara paralel di mana tidak ada ketergantungan pada hasil perhitungan sebelumnya.
Throughput chip ini tergantung pada seberapa banyak paralelisme dapat dicapai dalam kode tetapi kebanyakan CPU modern akan rata-rata beberapa instruksi per siklus pada sebagian besar kode.
Intel modern dan CPU x86 / X64 ISA lainnya memiliki lapisan yang menginterpretasikan instruksi CISC sekolah lama yang diatur ke dalam instruksi mikro yang dapat diumpankan melalui inti masalah multi-gaya RISC yang telah dipaketkan. Ini menambahkan beberapa overhead yang tidak ada pada CPU dengan ISA yang dirancang untuk pipelining (yaitu arsitektur RISC seperti ARM atau PowerPC).
Desain VLIW
Desain VLIW, di mana Intel Itanium mungkin yang paling terkenal, tidak pernah lepas landas sebagai arsitektur utama, tetapi IIRC ada sejumlah arsitektur DSP yang menggunakan jenis desain ini. Desain VLIW membuat multi-isu eksplisit dengan kata instruksi yang berisi lebih dari satu instruksi yang dikeluarkan secara paralel.
Ini tergantung pada kompiler optimisasi yang baik, yang mengidentifikasi dependensi dan peluang untuk paralelisme, menjatuhkan instruksi ke dalam banyak slot yang tersedia pada setiap kata instruksi.
Arsitektur VLIW bekerja cukup baik untuk aplikasi numerik karena operasi matriks / array cenderung menawarkan peluang untuk paralelisme yang luas. Itanium memiliki ceruk pasar dalam aplikasi superkomputer untuk sementara waktu, dan setidaknya ada satu arsitektur superkomputer - Multiflow TRACE - diproduksi menggunakan ISA jenis ini.
Memori dan caching
CPU modern jauh, jauh lebih cepat daripada memori, sehingga pembacaan langsung dari memori dapat menghasilkan ratusan status tunggu yang memblokir CPU hingga akses memori selesai. Caching, sekarang dilakukan dalam beberapa lapisan, menyimpan lokasi memori yang paling baru digunakan dalam cache. Karena CPU biasanya menghabiskan sebagian besar waktu mengeksekusi kode dalam loop ini berarti Anda mendapatkan tingkat hit yang baik menggunakan kembali lokasi memori yang telah Anda gunakan baru-baru ini. Properti ini disebut 'lokalitas referensi.'
Di mana Anda mendapatkan referensi lokalitas, CPU dapat beroperasi dengan kecepatan optimal. Tembolok merindukan ke tingkat berikutnya menimbulkan sejumlah status tunggu; cache hilang hingga memori utama dapat menyebabkan ratusan.
Dengan demikian, throughput aktual dari chip CPU dapat sangat bergantung pada efisiensi pola akses memori. Seluruh buku telah ditulis tentang mengoptimalkan kode untuk ini, dan ini adalah topik yang kompleks.