superscalar CPU arsitektur menerapkan suatu bentuk paralel disebut-tingkat instruksi paralel dalam satu prosesor. Ia sehingga memungkinkan lebih cepat CPU akan dibandingkan Throughput lain mungkin pada jam yang sama menilai. Sebuah prosesor superscalar melaksanakan lebih dari satu instruksi selama satu jam secara bersamaan dengan siklus dispatching beberapa petunjuk ke membazir fungsional unit pada prosesor. Setiap unit fungsional tidak terpisah CPU inti, tetapi sebuah sumber daya eksekusi dalam satu CPU seperti aritmetika logis unit, sedikit Shifter, atau kelipatan.
Sementara superscalar CPU biasanya juga pipelined, mereka adalah dua teknik peningkatan kinerja yang berbeda. Hal ini secara teoritis memungkinkan untuk mendapatkan non-pipelined superscalar CPU atau pipelined non-superscalar CPU.
Teknik superscalar yang secara tradisional terkait dengan mengidentifikasi beberapa karakteristik. Catatan ini diterapkan dalam suatu CPU inti.
• Instruksi yang dikeluarkan dari berurutan instruksi streaming
• CPU hardware secara dinamis untuk memeriksa dependensi data antara petunjuk berjalan di waktu (versus perangkat lunak memeriksa di waktu kompilasi)
• Terima petunjuk beberapa jam per siklus
Sederhana superscalar pipa. Dengan mengambil dua dispatching dan petunjuk sekaligus, maksimal dua instruksi per siklus dapat diselesaikan.
Processor papan yang CRAY T3e supercomputer dengan empat prosesor superscalar Alpha 21164
Sejarah
Seymour Cray's CDC 6600 dari 1965 sering disebut sebagai pertama superscalar desain. Intel i960CA (1988) dan seri AMD 29000-29050 (1990) mikro yang komersial pertama chip tunggal superscalar mikro. CPU RISC seperti ini membawa konsep superscalar untuk mikro komputer RISC karena hasil desain yang sederhana inti, agar mudah instruksi dispatch dan keterlibatan beberapa unit fungsional (seperti ALUs) pada satu CPU dalam rancangan peraturan yang terpaksa waktu. Ini adalah alasan yang RISC desain yang lebih cepat dari CISC desain melalui ke dalam tahun 1980-an dan 1990-an.
Kecuali untuk digunakan dalam beberapa CPU-daya baterai perangkat, pada dasarnya semua tujuan-CPU umum dikembangkan sejak 1998 adalah superscalar. Diawali dengan "P6" (Pentium Pro dan Pentium II) pelaksanaan, Intel x86 arsitektur mikro yang telah menerapkan CISC pada set instruksi RISC superscalar mikro. Kompleks petunjuk yang diterjemahkan secara internal ke-RISC seperti "micro-ops" set instruksi RISC, prosesor yang memungkinkan untuk mengambil keuntungan dari performa yang lebih tinggi-prosesor yang melandasi tetap kompatibel dengan prosesor Intel sebelumnya.
Dari skalar untuk superscalar
Prosesor yang paling sederhana adalah skalar prosesor. Setiap instruksi dijalankan oleh prosesor skalar manipulates biasanya satu atau dua item data sekaligus. Sebaliknya, setiap instruksi yang dijalankan oleh prosesor vector beroperasi secara simultan pada banyak data item. Sebuah analogi adalah perbedaan antara skalar dan vector aritmatika. Sebuah prosesor superscalar adalah jenis campuran ke dua. Setiap instruksi proses data satu item, namun ada beberapa fungsional berlebihan dalam setiap unit CPU sehingga beberapa petunjuk dapat memproses data terpisah item serentak.
Superscalar desain CPU menekankan peningkatan instruksi memberangkatkan akurasi, dan mengoperasikannya menyimpan beberapa unit fungsional digunakan setiap waktu. Hal ini menjadi semakin penting ketika jumlah unit meningkat. Sementara awal superscalar CPU akan memiliki dua ALUs dan satu fpu, desain yang modern seperti PowerPC 970 mencakup empat ALUs, dua FPUs, dan dua unit SIMD. Jika memberangkatkan adalah menjaga tidak efektif di semua unit bosan dengan petunjuk, kinerja sistem akan menderita.
A superscalar prosesor biasanya sustains yang menilai pelaksanaan melebihi satu instruksi per siklus mesin. Tetapi hanya memproses beberapa instruksi serentak tidak membuat sebuah arsitektur superscalar, sejak pipelined, multiprocessor atau multi-inti yang mencapai arsitektur juga, tetapi dengan metode yang berbeda.
Dalam superscalar CPU yang memberangkatkan bacaan instruksi dari memori dan memutuskan mana yang dapat dijalankan secara paralel, dispatching mereka ke membazir unit fungsional yang terdapat di dalam satu CPU. Oleh karena itu prosesor superscalar dapat envisioned memiliki beberapa pipa paralel, yang masing-masing adalah instruksi pemrosesan secara simultan dari sebuah instruksi benang.
Keterbatasan
Tersedia dari peningkatan kinerja superscalar teknik dibatasi oleh dua bidang utama:
• Tingkat dari hakiki paralel dalam instruksi streaming, yakni terbatasnya jumlah instruksi level parallelism, dan
• Kompleksitas waktu dan biaya yang terkait memberangkatkan dan ketergantungan memeriksa logika.
Binari yang ada telah dijalankan program tahap hakiki paralel. Dalam beberapa kasus petunjuk tidak tergantung pada satu sama lain dan dapat dijalankan secara bersamaan. Dalam kasus lain mereka yang antar-tergantung: satu instruksi dampak baik sumber daya atau hasil lainnya. Petunjuk yang = b + c; d = e + f dapat berjalan secara bersamaan karena tidak ada yang bergantung pada hasil perhitungan lain. Namun, petunjuk yang = b + c; d = a + f mungkin tidak akan runnable secara paralel, tergantung pada urutan petunjuk yang lengkap saat mereka bergerak melalui unit.
Bila jumlah yang dikeluarkan secara simultan petunjuk meningkat, biaya memeriksa dependensi meningkat sangat pesat. Hal ini diperparah oleh kebutuhan untuk memeriksa dependensi di waktu dan menjalankan di CPU jam menilai. Ini termasuk biaya tambahan gerbang logika diperlukan untuk melaksanakan pemeriksaan, dan waktu tunda yang melalui pintu. Penelitian menunjukkan pintu gerbang biaya dalam beberapa kasus dapat NK pintu, dan biaya keterlambatan k2logn, dimana n adalah jumlah instruksi pada prosesor's set instruksi, dan k adalah jumlah bersamaan menurunkan petunjuk. Dalam matematika, ini disebut sebagai combinatoric masalah melibatkan permutations.
Meski mungkin berisi instruksi streaming tidak antar-instruksi dependensi, superscalar CPU yang sebenarnya harus memeriksa bahwa kemungkinan, karena tidak ada jaminan lain dan kegagalan untuk mendeteksi suatu dependensi akan menghasilkan hasil yang salah.
Tidak peduli bagaimana lanjutan proses yang semikonduktor atau cara cepat kecepatan yang berpindah, ini tempat yang praktis membatasi berapa petunjuk dapat menurunkan secara bersamaan. Meskipun proses kemajuan akan mengijinkan pernah lebih besar jumlah unit fungsional (misalnya, ALUs), beban instruksi memeriksa dependensi sehingga tumbuh pesat yang dicapai superscalar dispatch batas relatif kecil. - Kemungkinan pada urutan lima hingga enam secara bersamaan menurunkan petunjuk.
Namun akhirnya tak terhingga cepat memeriksa ketergantungan pada logika konvensional yang lain superscalar CPU, jika instruksi streaming itu sendiri memiliki banyak dependensi, ini juga akan membatasi speedup mungkin. Dengan demikian tingkat hakiki paralel dalam kode streaming bentuk kedua keterbatasan.
Alternatif
Secara kolektif, kedua batas berkendara investigasi ke alternatif arsitektur meningkatkan kinerja seperti Long Sangat Instruksi Word (VLIW), secara paralel Instruksi Computing (EPIC), serentak multithreading (SMT), dan multi-core.
Dengan VLIW, tugas yang memberatkan ketergantungan memeriksa hardware dengan logika berjalan di waktu akan dihapus dan didelegasikan kepada compiler. Instruksi secara paralel Computing (EPIC) adalah seperti VLIW, dengan tambahan cache prefetching petunjuk.
Serentak multithreading, sering disingkat sebagai SMT, adalah teknik untuk meningkatkan efisiensi superscalar CPU. SMT izin dari beberapa rangkaian independen untuk pelaksanaan lebih baik memanfaatkan sumber daya yang disediakan oleh prosesor arsitektur modern.
Superscalar berbeda dari prosesor multi-core yang berlebihan di unit fungsional tidak seluruh prosesor. Satu prosesor terdiri dari halus-halus unit fungsional seperti ALU, kelipatan bulat, bulat Shifter, floating point unit, dll Mungkin ada beberapa versi dari masing-masing unit fungsional untuk memungkinkan pelaksanaan banyak instruksi secara paralel. Ini berbeda dari multicore CPU yang serentak proses instruksi dari beberapa rangkaian, satu per benang inti. Ia juga berbeda dari pipelined CPU, dimana beberapa instruksi dapat dilakukan serentak di berbagai tahapan pelaksanaan, assembly-line mode.