Jumat, 04 Desember 2009

pipelining & superscalar











Pengertian Superscalar dan Pipeline

Ada beberapa pendapat yang menguraikan tentang pengertian dari superscalar, antara lain:

1. Superscalar adalah sebuah inti prosesor yang mengeksekusi dua kali/lebih operasi scalar dalam bentuk paralel. Superscalar ini merupakan salah satu rancangan untuk meningkatkan kecepatan CPU.

2. Superscalar adalah sebuah prosesor yang memungkinkan eksekusi yang bersamaan dari instruksi yang banyak pada tahap pipeline yang sama sebaik tahap pipeline yang lain.

3. Superscalar adalah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalam bentuk paralel.

Adapun pengertian dari pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersamaan tapi dalam tahap yang berbeda yang dialirkan secara continue / berkelanjutan pada unit pemrosesan.

Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan brach prediction dan speculative execution tentunya membutuhkan ekstra transistor.




PIPELINING


Telah lama diketahui bahwa membaca instruksi dari memori merupakan hambatan utama dalam hal kecepatan untuk menjalankan suatu instruksi. Untuk mengatasi masalah ini, komputer-komputer generasi IBM Stretch (1959) telah memiliki kemampuan untuk mengambil terlebih dahulu instruksi-instruksi dari memori sehingga instruksi-instruksi tersebut akan selalu siap ketika mereka dibutuhkan. Instruksi-instruksi ini disimpan dalam sekumpulan register yang disebut penyangga prabaca. Dengan cara ini, ketika sebuah instruksi dibutuhkan, instruksi tersebut biasanya dapat segera diambil dari penyangga prabaca daripada menunggu sebuah memori membaca hingga selesai. Oleh karena itu, sistem prabaca membagi pelaksanaan instruksi menjadi bagian: membaca dan pelaksanaan aktual. Konsep pipeline menjelaskan strategi lebih jauh. Pelaksanaan instruksi sering dibagi ke dalam banyak bagian dan bukan hanya ke dalam dua bagian saja, di mana masing-masing bagian ditangani oleh seperangkat hardware khusus, dan keseluruhan bagian tersebut dapat beroperasi secara paralel.

Teknologi pipeline yang digunakan pada komputer bertujuan untuk meningkatkan kinerja dari komputer. Atau secara sederhana, pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersamaan tetapi dalam tahap yang berbeda yang dialirkan secara kontiniu pada unit pemrosesan. Dengan cara ini, maka unit pemroses selalu bekerja.

Cara kerja masing-masing unit pada pipeline

1 mengambil instruksi dari memori dan menempatkan instruksi tersebut dalam sebuah penyangga sampai instruksi itu dibutuhkan.
2 mendekodekan instruksi tersebut, menentukan jenisnya dan operand apa yang dibutuhkan instruksi tersebut.
3 melokasi dan mengambil operand-operand, baik itu dari register-register ataupun dari memori.
4 sebenarnya melaksanakan pekerjaan menjalankan instruksi tersebut, terutama dengan menjalankan operand-operand melalui jalur data.
5 menulis hasilnya kembali ke register yang sesuai.

Kita dapat melihat bagaimana pipeline tersebut beroperasi sebagai suatu fungsi waktu. Selama siklus jam (waktu) 1, Sl sedang menangani instruksi 1, dengan mengambilnya dari memori. Selama siklus 2, tahap S2 mendekodekan instruksi 1, sedangkan tahap Sl mengambil instruksi 2. Selama siklus 3, tahap S3 mengambil operand-operand dari instruksi 1, tahap S2 mendekodekan instruksi 2, dan tahap Sl mengambil instruksi ketiga. Selama siklus 4, tahap S4 menjalankan instruksi 1, S3 mengambil operand-operand untuk instruksi 2, S2 mendekodekan instruksi 3, dan Sl mengambil instruksi 4. Terakhir, selama siklus 5, S5 menulis kembali hasil instruksi 1, sementara tahap-tahap lainnya menangani instruksi-instruksi berikutnya.

Mari kita lihat sebuah contoh untuk lebih memperjelas konsep pipeline. Bayangkan sebuah pabrik kue di mana proses pembakaran dan pengemasan kue-kue untuk pengiriman dilakukan secara terpisah. Misalkan bahwa departemen pengiriman memiliki sebuah ban berjalan pembawa panjang dengan lima pekerja (satuansatuan pemrosesan) yang berdiri berjejer sepanjang ban berjalan tersebut. Setiap 10 detik (siklus jam), pekerja 1 menempatkan sebuah kotak kue kosong pada ban tersebut. Kotak tersebut dibawa ke pekerja 2, yang memasukkan sebuah kue ke dalam kotak itu. Sesaat kemudian, kotak tersebut sampai di pos kerja pekerja 3, yang kemudian menutup dan menyegel kotak tersebut. Selanjutnya kotak tersebut diteruskan ke pekerja 4, yang memasang sebuah label pada kotak kue itu. Terakhir, pekerja 5 memindahkan kotak tersebut dari ban dan memasukkannya dalam sebuah kontainer besar untuk kemudian dikirim ke beberapa supermarket. Pada dasarnya, cara kerja seperti ini juga berlaku pada pipelining komputer: Setiap instruksi (kue) melalui beberapa langkah pemrosesansebelum mencapai hasil sempurna pada akhir proses.

Kembali ke pipeline, misalkan bahwa masing-masing tahapan siklus waktu mesin ini adalah 2 nsec. Maka sebuah instruksi membutuhkan siklus waktu 10 nsec untuk menempuh lima tahap pipeline. Sepintas, dengan dibutuhkannya waktu 10 nsec untuk sebuah instruksi, kelihatan bahwa mesin tersebut dapat menjalankan 100 MIPS. Namun sebenarnya mesin tersebut dapat menjalankan instruksi yang lebih besar dari jumlah ini. Pada setiap tahap siklus waktu (2 nsec), satu instruksi baru diselesaikan, sehingga jumlah pemrosesan instruksi yang sebenarnya adalah 500 MIPS, bukan 100 MIPS.

Pipelining memungkinkan terjadinya perimbangan antara latensi (berapa lama waktu yang dibutuhkan untuk menjalankan sebuah instruksi), dan lebar pita processor (berapa banyak MIPS yang dimiliki CPU). Dengan siklus waktu Tnsec, dan tahap-tahap n dalam pipeline, maka latensinya adalah nT nsec dan lebar pitanya adalah 1000/T MIPS (logikanya, karena kita sedang mengukur jumlah waktu dalam nanodetik, maka seharusnya kita mengukur lebar pita CPU dalam BIPS atau GIPS, tapi hal ini tidak dilakukan, jadi kita tidak memilih salah satu dari keduanya).

Teknik pipeline ini dapat diterapkan pada berbagai tingkatan dalam sistem komputer. Bisa pada level yang tinggi, misalnya program aplikasi, sampai pada tingkat yang rendah, seperti pada instruksi yang dijalankan oleh microprocessor.

A. Pipeline Pada Microprocessor

Teknik pipeline yang diterapkan pada microprocessor, dapat dikatakan sebuah arsitektur khusus. Ada perbedaan khusus antara model microprocessor yang tidak menggunakan arsitektur pipeline dengan microprocessor yang menerapkan teknik ini.

Pada microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai, baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam microprocessor yang menggunakan teknik pipeline, ketika satu instruksi sedangkan diproses, maka instruksi yang berikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi, instruksi yang diproses secara bersamaan ini, ada dalam tahap proses yang berbeda. Jadi, ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi.

Misalnya sebuah microprocessor menyelesaikan sebuah instruksi dalam 4 langkah. Ketika instruksi pertama masuk ke langkah 2, maka instruksi berikutnya diambil untuk diproses pada langkah 1 instruksi tersebut. Begitu seterusnya, ketika instruksi pertama masuk ke langkah 3, instruksi kedua masuk ke langkah 2 dan instruksi ketiga masuk ke langkah 1.

Dengan penerapan pipeline ini pada microprocessor akan didapatkan peningkatan dalam unjuk kerja microprocessor. Hal ini terjadi karena beberapa instruksi dapat dilakukan secara parallel dalam waktu yang bersamaan. Secara kasarnya diharapkan akan didapatkan peningkatan sebesar K kali dibandingkan dengan microprocessor yang tidak menggunakan pipeline, apabila tahapan yang ada dalam satu kali pemrosesan instruksi adalah K tahap.

Teknik pipeline ini menyebabkan ada sejumlah hal yang harus diperhatikan sehingga ketika diterapkan dapat berjalan dengan baik. Tiga kesulitan yang sering dihadapi ketika menggunakan teknik pipeline ini adalah : Terjadinya penggunaan resource yang bersamaan, Ketergantungan terhadap data, Pengaturan Jump ke suatu lokasi memori.

Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi tersebut sama-sama memerlukan resource yang sama, sehingga diperlukan adanya pengaturan yang tepat agar proses tetap berjalan dengan benar. Sedangkan ketergantungan terhadap data, bisa muncul, misalnya instruksi yang berurutan memerlukan data dari instruksi yang sebelumnya. Kasus Jump, juga perlu perhatian, karena ketika sebuah instruksi meminta untuk melompat ke suatu lokasi memori tertentu, akan terjadi perubahan program counter, sedangkan instruksi yang sedang berada dalam salah satu tahap proses yang berikutnya mungkin tidak mengharapkan terjadinya perubahan program counter.

Dengan menerapkan teknik pipeline ini, akan ditemukan sejumlah perhatian yang khusus terhadap beberapa hal di atas, tetapi tetap akan menghasilkan peningkatan yang berarti dalam kinerja microprocessor. Ada kasus tertentu yang memang sangat tepat bila memanfaatkan pipeline ini, dan juga ada kasus lain yang mungkin tidak tepat bila menggunakan teknologi pipeline.

B. Arsitektur Superskalar

Derajat konkurensi yang lebih tinggi dapat dicapai jika banyak pipeline instruksi diterapkan pada prosesor. Hal ini berarti digunakannya banyak unit fungsional, menciptakan jalur paralel dimana berbagai instruksi yang berbeda dapat dieksekusi secara paralel. Dengan pengaturan tersebut, maka dimungkinkan untuk memulai beberapa instruksi pada tiap siklus clock. Mode operasi ini disebut eksekusi superscalar. Jika mode ini dapat bertahan dalam waktu yang lama selama eksekusi program, maka instruksi-instruksi yang dilakukan memory dapat dipercepat. Tentu saja, eksekusi paralel harus mempertahankan kebenaran logika program, sehingga hasil yang diperoleh harus sama dengan hasil dari eksekusi serial instruksi program. Banyak dari prosesor performa tinggi saat ini didesain untuk bekerja dengan cara tersebut.

Di sini suatu satuan membaca instruksi tunggal mengambil pasangan-pasangan dari instruksi-instruksi secara bersama dan memasukkan masing-masing pasangan ke dalam pipelinenya sendiri, lengkap dengan ALUnya sendiri bagi operasi paralel. Agar dapat beroperasi secara paralel, kedua instruksi tersebut tidak boleh berebutan dalam menggunakan sumber daya (contoh, register-register), dan salah satu instruksi tidak boleh bergantung pada hasil dari instruksi yang lain. Seperti halnya dengan sebuah pipeline tunggal, begitu pula kompiler harus menjamin situasi ini tetap terjaga (yaitu, hardware tidak memeriksa dan memberikan hasil-hasil yang salah jika instruksi-instruksi tidak sebanding), atau konflik-konflik dideteksi dan dihilangkan selama pelaksanaan dengan menggunakan hardware tambahan.

Meskipun pipeline-pipeline, tunggal atau ganda, sebagian besar digunakan pada mesin-mesin RISC (komputer 386 dan generasi-generasi pendahulunya tidak memiliki pipeline satupun), Intel 486 adalah yang pertama kali mulai memperkenalkan pipeline-pipeline ke dalam CPU-CPUnya. Intel 486 memiliki satu pipeline dan Pentium memiliki dua pipeline lima tahap, meskipun pembagian tugas sebenarnya antara tahap 2 dan tahap 3 (pada gambar di atas yang disebut decode1 dan decode2) sedikit berbeda dibanding dalam contoh kita.

Pipeline utama, yang disebut pipeline u, dapat menjalankan sebuah instruksi Pentium yang selalu berubah-ubah. Pipeline kedua, yang disebut pipeline v, dapat menjalankan hanya instruksi-instruksi integer sederhana (dan juga satu instruksi titik mengambang sederhanaFXCH). Peraturan-peraturan yang rumit menentukan apakah sepasang instruksi sebanding sehingga mereka dapat dijalankan secara paralel. Jika instruksi-instruksi yang berpasangan tidak cukup sederhana atau tidak sebanding, hanya pasangan pertama yang dijalankan (dalam pipeline u). Pasangan kedua kemudian disimpan dan dipasangkan dengan instruksi berikutnya. Instruksi-instruksi selalu dijalankan secara berurutan. Jadi kompiler-kompiler khusus Pentium yang memproduksi pasangan-pasangan instruksi yang sebanding dapat memproduksi program-program yang beroperasi lebih cepat dibanding kampiler-kompiler lama.

Beralih ke empat pipeline dapat dilakukan, namun bila hal ini dilakukan akan menduplikat terlalu banyak hardware. Bahkan, suatu pendekatan berbeda digunakan pada highend CPU. Ide dasarnya adalah untuk memiliki hanya satu pipeline tunggal namun pipeline tersebut memiliki berbagai macam satuan fungsi, seperti ditunjukkan pada Gambar 7.5. Contoh, Pentium III memiliki suatu struktur yang mirip dengan gambar. Istilah arsitektur superskalar ditetapkan bagi pendekatan ini pada 1987 (Agerwala dan Cocke, 1987). Namun sebenarnya pendekatan ini telah digunakan pada komputer CDC 6600 30 tahun sebelumnya. Komputer 6600 ini mengambil sebuah instruksi setiap 100 nsec dan membawa instruksi tersebut ke salah satu dari 10 satuan fungsional untuk dijalankan secara paralel sementara CPU beroperasi untuk mendapatkan instruksi baru.

Yang tersirat dalam ide mengenai prosesor superskalar adalah bahwa tahap S3 dapat mengeluarkan instruksi-instruksi lebih cepat daripada tahap S4 dalam menjalankan instruksi-instruksi tersebut. Jika tahap S3 mengeluarkan sebuah instruksi setiap 10 nsec dan seluruh satuan fungsional dapat melaksanakan tugas mereka dalam 10 nsec, maka tidak lebih dari satu satuan yang akan benar-benar sibuk, terlepas dari ide keseluruhan. Dalam kenyataanya, sebagian besar satuan Fungsional dalam tahap S4 membutuhkan kira-kira lebih dari satu siklus detak untuk menjalankan instruksi-instruksi, dan tentu saja satuan-satuan tersebut adalah satuan-satuan yang dapat mengakses memori atau mengoperasikan aritmetik. Seperti dapat dilihat dari gambar tersebut, ada kemungkinan untuk memiliki berbagai macam ALU pada tahap S4. Permintaan untuk komputer-komputer dengan kecepatan yang lebih tinggi tampaknya sulit dipenuhi. Para astronom ingin mensimulasi apa yang terjadi pada mikrodetik pertama setelah terjadi big bang (dentuman besar), para ahli ekonomi ingin memodelkan perekonomian dunia, dan para remaja ingin memainkan game-game multimedia interaktif 3D melalui internet dengan teman-teman virtualnya. Meskipun CPU-CPU semakin cepat, pada akhirnya mereka akan menemui masalah berkaitan dengan kecepatan cahaya, yang mungkin tetap pada 20 cm/nanodetik dalam kabel tembaga atau serat optik, terlepas dari seberapa pintarnya para insinyur Intel. Demikian pula halnya dengan chip-chip yang berkecepatan tinggi, akan menghasilkan lebih banyak panas; yang penyebaran panas itu sendiri justru merupakan suatu masalah.

Paralelisme instruk silevel sedikit membantu, tapi pipeline dan operasi superskalar jarang memperoleh hasil lebih dari suatu faktor lima atau sepuluh. Untuk memperoleh hasil 50, 100, atau lebih, satus-atunya cara adalah mendesain komputer dengan berbagai macam CPU, untuk itu sekarang kita akan melihat bagaimana sebagian dari CPU-CPU ini diorganisasikan.
SUPERSCALAR
Superscalar

From Test Dari Uji

Jump to: navigation , search Langsung ke: navigasi, cari
Image:Superscalarpipeline.png Gambar: Superscalarpipeline.png
Simple superscalar pipeline. Sederhana superscalar pipa. By fetching and dispatching two instructions at a time, a maximum of two instructions per cycle can be completed. Dengan mengambil dua dispatching dan petunjuk sekaligus, maksimal dua instruksi per siklus dapat diselesaikan.
Image:Processor board cray-2 hg.jpg Gambar: Processor papan cray-2 hg.jpg
Processor board of a CRAY T3e parallel computer with four superscalar Alpha processors Processor dewan yang CRAY T3e paralel komputer dengan empat superscalar Alpha prosesor
A superscalar CPU architecture implements a form of parallelism called Instruction-level parallelism within a single processor. A superscalar CPU arsitektur menerapkan suatu bentuk paralel dinamakan parallelism Instruksi-tingkat dalam satu prosesor. It thereby allows faster CPU throughput than would otherwise be possible at the same clock rate . Ia sehingga memungkinkan lebih cepat CPU Throughput daripada mungkin akan lain yang sama di tingkat jam. A superscalar processor executes more than one instruction during a clock cycle by simultaneously dispatching multiple instructions to redundant functional units on the processor. Sebuah prosesor superscalar melaksanakan lebih dari satu instruksi selama satu jam secara bersamaan dengan siklus dispatching beberapa petunjuk ke membazir fungsional unit pada prosesor. Each functional unit is not a separate CPU core but an execution resource within a single CPU such as an arithmetic logic unit , a bit shifter, or a multiplier . Setiap unit fungsional tidak terpisah CPU inti, tetapi sebuah sumber daya eksekusi dalam satu CPU seperti aritmetika logis unit, sedikit Shifter, atau kelipatan.
While a superscalar CPU is typically also pipelined , they are two different performance enhancement techniques. Sementara superscalar CPU biasanya juga pipelined, mereka adalah dua teknik peningkatan kinerja yang berbeda. It is theoretically possible to have a non-pipelined superscalar CPU or a pipelined non-superscalar CPU. Hal ini secara teoritis memungkinkan untuk mendapatkan non-pipelined superscalar CPU atau pipelined non-superscalar CPU.
The superscalar technique is traditionally associated with several identifying characteristics. Teknik superscalar yang secara tradisional terkait dengan mengidentifikasi beberapa karakteristik. Note these are applied within a given CPU core. Catatan ini diterapkan dalam suatu CPU inti.
• Instructions are issued from a sequential instruction stream Petunjuk adalah sebuah berurut dikeluarkan dari instruksi streaming
• CPU hardware dynamically checks for data dependencies between instructions at run time (versus software checking at compile time ) CPU hardware secara dinamis untuk memeriksa dependensi data antara petunjuk berjalan di waktu (versus perangkat lunak memeriksa di waktu kompilasi)
• Accepts multiple instructions per clock cycle Menerima petunjuk beberapa jam per siklus


SEJARAH

Seymour Cray 's CDC 6600 from 1965 is often mentioned as the first superscalar design. Seymour Cray 's CDC 6600 dari 1965 sering disebut sebagai pertama superscalar desain. The Intel i960 CA (1988) and the AMD 29000 -series 29050 (1990) microprocessors were the first commercial single chip superscalar microprocessors. RISC CPUs like these brought the superscalar concept to micro computers because the RISC design results in a simple core, allowing straightforward instruction dispatch and the inclusion of multiple functional units (such as ALUs) on a single CPU in the constrained design rules of the time. Intel i960 CA (1988) dan AMD 29000-seri 29050 (1990) mikro yang komersial pertama chip tunggal superscalar mikro. RISC CPU 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. This was the reason that RISC designs were faster than CISC designs through the 1980s and into the 1990s. Ini adalah alasan yang RISC desain yang lebih cepat dari CISC desain melalui ke dalam tahun 1980-an dan 1990-an.
Except for CPUs used in some battery -powered devices, essentially all general-purpose CPUs developed since about 1998 are superscalar. Kecuali untuk CPU yang digunakan dalam beberapa baterai-daya dari perangkat, pada dasarnya semua tujuan-CPU umum dikembangkan sejak 1998 adalah superscalar. Beginning with the " P6 " ( Pentium Pro and Pentium II ) implementation, Intel 's x86 architecture microprocessors have implemented a CISC instruction set on a superscalar RISC microarchitecture . Diawali dengan "P6" (Pentium Pro dan Pentium II) pelaksanaan, Intel 's arsitektur x86 mikro yang telah menerapkan CISC pada set instruksi RISC superscalar mikro. Complex instructions are internally translated to a RISC-like "micro-ops" RISC instruction set, allowing the processor to take advantage of the higher-performance underlying processor while remaining compatible with earlier Intel processors. 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.


FROM SCALAR to SUPERSCALAR

The simplest processors are scalar processor s. Mudah prosesor adalah prosesor skalar s. Each instruction executed by a scalar processor typically manipulates one or two data items at a time. Setiap instruksi dijalankan oleh prosesor skalar manipulates biasanya satu atau dua item data sekaligus. By contrast, each instruction executed by a vector processor operates simultaneously on many data items. Sebaliknya, setiap instruksi yang dijalankan oleh prosesor vector beroperasi secara simultan pada banyak data item. An analogy is the difference between scalar and vector arithmetic. Sebuah analogi adalah perbedaan antara skalar dan vector aritmatika. A superscalar processor is sort of a mixture of the two. Sebuah prosesor superscalar adalah jenis campuran ke dua. Each instruction processes one data item, but there are multiple redundant functional units within each CPU thus multiple instructions can be processing separate data items concurrently. 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 CPU design emphasizes improving the instruction dispatcher accuracy, and allowing it to keep the multiple functional units in use at all times. Superscalar desain CPU menekankan peningkatan instruksi memberangkatkan akurasi, dan mengoperasikannya menyimpan beberapa unit fungsional digunakan setiap waktu. This has become increasingly important when the number of units increased. Hal ini menjadi semakin penting ketika jumlah unit meningkat. While early superscalar CPUs would have two ALU s and a single FPU , a modern design such as the PowerPC 970 includes four ALUs, two FPUs, and two SIMD units. Sementara awal superscalar CPU akan memiliki dua ALU s dan satu fpu, desain yang modern seperti PowerPC 970 mencakup empat ALUs, dua FPUs, dan dua SIMD unit. If the dispatcher is ineffective at keeping all of these units fed with instructions, the performance of the system will suffer. Jika memberangkatkan adalah menjaga tidak efektif di semua unit bosan dengan petunjuk, kinerja sistem akan menderita.
A superscalar processor usually sustains an execution rate in excess of one instruction per machine cycle . A superscalar prosesor biasanya sustains yang menilai pelaksanaan melebihi satu instruksi per siklus mesin. But merely processing multiple instructions concurrently does not make an architecture superscalar, since pipelined , multiprocessor or multi-core architectures also achieve that, but with different methods. 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.
In a superscalar CPU the dispatcher reads instructions from memory and decides which ones can be run in parallel, dispatching them to redundant functional units contained inside a single CPU. 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. Therefore a superscalar processor can be envisioned having multiple parallel pipelines, each of which is processing instructions simultaneously from a single instruction thread. Oleh karena itu prosesor superscalar dapat envisioned memiliki beberapa pipa paralel, yang masing-masing adalah instruksi pemrosesan secara simultan dari sebuah instruksi benang.


LIMOTIONS BATASAN

Available performance improvement from superscalar techniques is limited by two key areas: Tersedia dari peningkatan kinerja superscalar teknik dibatasi oleh dua bidang utama:
1. The degree of intrinsic parallelism in the instruction stream, ie limited amount of instruction-level parallelism, and Tingkat dasar paralel dalam instruksi streaming, yakni terbatasnya jumlah instruksi level parallelism, dan
2. The complexity and time cost of the dispatcher and associated dependency checking logic. Kompleksitas waktu dan biaya yang terkait memberangkatkan dan ketergantungan memeriksa logika.
Existing binary executable programs have varying degrees of intrinsic parallelism. Binari yang ada telah dijalankan program tahap hakiki paralel. In some cases instructions are not dependent on each other and can be executed simultaneously. Dalam beberapa kasus petunjuk tidak tergantung pada satu sama lain dan dapat dijalankan secara bersamaan. In other cases they are inter-dependent: one instruction impacts either resources or results of the other. Dalam kasus lain mereka yang antar-tergantung: satu instruksi dampak baik sumber daya atau hasil lainnya. The instructions a = b + c; d = e + f can be run in parallel because none of the results depend on other calculations. Petunjuk a = b + c; d = e + f dapat berjalan secara bersamaan karena tidak ada yang bergantung pada hasil perhitungan lain. However, the instructions a = b + c; d = a + f might not be runnable in parallel, depending on the order in which the instructions complete while they move through the units. Namun, petunjuk a = b + c; d = a + f mungkin tidak akan runnable secara paralel, tergantung pada urutan petunjuk yang lengkap saat mereka bergerak melalui unit.
When the number of simultaneously issued instructions increases, the cost of dependency checking increases extremely rapidly. Bila jumlah yang dikeluarkan secara simultan petunjuk meningkat, biaya memeriksa dependensi meningkat sangat pesat. This is exacerbated by the need to check dependencies at run time and at the CPU's clock rate. Hal ini diperparah oleh kebutuhan untuk memeriksa dependensi di waktu dan menjalankan di CPU jam menilai. This cost includes additional logic gates required to implement the checks, and time delays through those gates. Ini termasuk biaya tambahan gerbang logika diperlukan untuk melaksanakan pemeriksaan, dan waktu tunda yang melalui pintu. Research shows the gate cost in some cases may be n^k gates, and the delay cost k^2 \log n, where n is the number of instructions in the processor's instruction set, and k is the number of simultaneously dispatched instructions. Penelitian menunjukkan pintu gerbang biaya dalam beberapa kasus dapat n ^ k pintu, dan biaya keterlambatan k ^ 2 \ log n , dimana n adalah jumlah instruksi pada prosesor's set instruksi, dan k adalah jumlah bersamaan menurunkan petunjuk. In mathematics, this is called a combinatoric problem involving permutation s. Dalam matematika, ini disebut sebagai combinatoric masalah melibatkan urutan s.
Even though the instruction stream may contain no inter-instruction dependencies, a superscalar CPU must nonetheless check for that possibility, since there is no assurance otherwise and failure to detect a dependency would produce incorrect results. 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.
No matter how advanced the semiconductor process or how fast the switching speed, this places a practical limit on how many instructions can be simultaneously dispatched. Tidak peduli bagaimana lanjutan proses yang semikonduktor atau cara cepat kecepatan yang berpindah, ini tempat yang praktis membatasi berapa petunjuk dapat menurunkan secara bersamaan. While process advances will allow ever greater numbers of functional units (eg, ALUs), the burden of checking instruction dependencies grows so rapidly that the achievable superscalar dispatch limit is fairly small. 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. -- likely on the order of five to six simultaneously dispatched instructions. - Kemungkinan pada urutan lima hingga enam secara bersamaan menurunkan petunjuk.
However even given infinitely fast dependency checking logic on an otherwise conventional superscalar CPU, if the instruction stream itself has many dependencies, this would also limit the possible speedup. 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. Thus the degree of intrinsic parallelism in the code stream forms a second limitation. Dengan demikian tingkat hakiki paralel dalam kode streaming bentuk kedua keterbatasan.


ALTERNATIVE

Collectively, these two limits drive investigation into alternative architectural performance increases such as Very Long Instruction Word (VLIW), Explicitly Parallel Instruction Computing (EPIC), simultaneous multithreading (SMT), and multi-core processors . 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.
With VLIW, the burdensome task of dependency checking by hardware logic at run time is removed and delegated to the compiler . Explicitly Parallel Instruction Computing (EPIC) is like VLIW, with extra cache prefetching instructions. Dengan VLIW, tugas yang memberatkan ketergantungan memeriksa hardware dengan logika berjalan di waktu akan dihapus dan didelegasikan kepada compiler. Paralel secara eksplisit Instruksi Computing (EPIC) adalah seperti VLIW, dengan tambahan cache prefetching petunjuk.
Simultaneous multithreading, often abbreviated as SMT, is a technique for improving the overall efficiency of superscalar CPUs. Serentak multithreading, sering disingkat sebagai SMT, adalah teknik untuk meningkatkan efisiensi superscalar CPU. SMT permits multiple independent threads of execution to better utilize the resources provided by modern processor architectures. SMT izin dari beberapa rangkaian independen untuk pelaksanaan lebih baik memanfaatkan sumber daya yang disediakan oleh prosesor arsitektur modern.
Superscalar processors differ from multi-core processors in that the redundant functional units are not entire processors. Superscalar berbeda dari prosesor multi-core yang berlebihan di unit fungsional tidak seluruh prosesor. A single processor is composed of finer-grained functional units such as the ALU , integer multiplier , integer shifter, floating point unit , etc. There may be multiple versions of each functional unit to enable execution of many instructions in parallel. Satu prosesor terdiri dari halus-halus unit fungsional seperti ALU, bulat kelipatan, Shifter integer, floating point unit, dll Mungkin ada beberapa versi dari masing-masing unit fungsional untuk memungkinkan pelaksanaan banyak instruksi secara paralel. This differs from a multicore CPU that concurrently processes instructions from multiple threads, one thread per core. Ini berbeda dari multicore CPU yang serentak proses instruksi dari beberapa rangkaian, satu per benang inti. It also differs from a pipelined CPU , where the multiple instructions can concurrently be in various stages of execution, assembly-line fashion. Ia juga berbeda dari pipelined CPU, dimana beberapa instruksi dapat dilakukan serentak di berbagai tahapan pelaksanaan, assembly-line mode.
The various alternative techniques are not mutually exclusive—they can be (and frequently are) combined in a single processor. Berbagai alternatif teknik tidak saling eksklusif-mereka dapat (dan sering adalah) digabungkan dalam satu prosesor. Thus a multicore CPU is possible where each core is an independent processor containing multiple parallel pipelines, each pipeline being superscalar. Dengan demikian yang multicore CPU dapat di mana masing-masing inti adalah independen prosesor berisi beberapa pipa paralel, masing-masing pipa yang superscalar. Some processors also include vector capability. Beberapa prosesor juga termasuk vector kemampuan.






***** pengertian pipeline ******


Pipeline adalah jalur yang dilewati oleh istruksi set. Analogi yang dapat diambil adalah misal kita melihat kebakaran dan kita mengambil air dengan ember, jika kita seorang maka akan lama memadamkannya, tetapi jika kita terdiri dari beberapa orang dan tiap orang membawa ember dan berusaha memadamkannya, akan lebih cepat padam apinya, pipeline disini dianalogikan sebagai ember, semakin ember banyak maka akan semakin cepat api padam.



Prosesor saat ini menggunkan pipeline yang panjang guna meningkatkan kecepatannya, tetapi semakin panjang akan semakin berat jika terjadi crash ditengah jalan sehingga pipeline akan dikosongkan dan diulang kembali. Ini merupakan perbedaan yang paling mencolok pada Intel dan AMD, AMD memiliki pipeline yang lebih pendek dan dapat bekerja dengan baik pada rentang kecepatan 2000Mhz, sedang pipeline Intel lebih panjang sehingga dapat mecapai rentang kecepatan 3000Mhz, tetapi Intel memiliki kesulitan dalam pergantian atara tugas yang dibawanya, jadi sebenarnya Intel lebih lambat dibanding dengan AMD.




Arti istilah superscalar dianggap berkaitan erat dengan pengertian berikut



Salah satu jenis dari arsitektur, dimana superscalar adalah sebuah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalm bentuk paralel. Merupakan salah satu rancangan untuk meningkatkan kecepatan CPU. Kebanyakan dari komputer saat ini menggunakan mekanisme superscalar ini. Standar pipeline yang digunakan adalah untuk pengolahan bilangan matematika integer (bilangan bulat, bilangan yang tidak memiliki pecahan), kebanyakan CPU juga memiliki kemampuan untuk pengolahan untuk data floating point (bilangan berkoma). Pipeline yang mengolah integer dapat juga digunakan untuk mengolah data bertipe floating point ini, namun untuk aplikasi tertentu, terutama untuk aplikasi keperluan ilmiah CPU yang memiliki kemampuan pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis. Peristiwa menarik yang bisa dilakukan dengan metoda superscalar ini adalah dalam hal memperkirakan pencabangan instruksi (brach prediction) serta perkiraan eksekusi perintah (speculative execution). Peristiwa ini sangat menguntungkan buat program yang membutuhkan pencabangan dari kelompok intruksi yang dijalankankannya. Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman. Contohnya dalam menentukan aktifitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya, katakanlah jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut, anggaplah seseorang tersebut dianggap telah dewasa, sedangkan untuk kondisi lainnya dianggap belum dewasa. Tentu perlakuannya akan dibedakan sesuai dengan sistem yang sedang dijalankan. Lalu apa yang dilakukan oleh CPU untuk hal ini? Komputer akan membandingkan nilai umur data yang diperolehnya dengan 18 tahun sehingga komputer dapat menentukan langkah dan sikap yang harus diambilnya berdasarkan hasil perbandingan tersebut. Sikap yang diambil tentu akan diambil berdasarkan pencabangan yang ada. Pada CPU yang mendukung perintah pencabangan ini, CPU membutuhkan lumayan banyak clock cycle, mengingat CPU menempatkan semuanya pada pipeline dan menemukan perintah berikutnya yang akan dieksekusinya. Sirkuit untuk branch prediction melakukan pekerjaan ini bekerja sama dengan pipeline, yang dilakukan sebelum proses di ALU dilaksanakan, dan memperkirakan hasil dari pencabangan tersebut. Jika CPU berfikir bahwa branch akan menuju suatu cabang, biasanya berdasarkan pekerjaan sebelumnya, maka perintah berikutnya sudah dipersiapkan untuk dieksekusi berikut data-datanya, bahkan dengan adanya pipeline ini, bila tidak diperlukan suatu referensi dari instruksi terakhir, maka bisa dilaksanakan dengan segera, karena data dan instruksi yang dibutuhkan telah dipersiapkan sebelumnya.. Dalam hal speculative execution, artinya CPU akan menggunakan melakukan perhitungan pada pipeline yang berbeda berdasarkan kemungkinan yang diperkirakan oleh komputer. Jika kemungkinan yang dilakukan oleh komputer tepat, maka hasilnya sudah bisa diambil langsung dan tinggal melanjutkan perintah berikutnya, sedangkan jika kemungkinan yang diperkirakan oleh komputer tidak tepat, maka akan dilaksanakan kemungkinan lain sesuai dengan logika instruksi tersebut. Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan branch prediction dan speculative execution tentunya membutuhkan ekstra transistor yang tidak sedikit untuk hal tersebut. Sebagai perbandingan, komputer yang membangkitkan pemrosesan pada PC pertama yang dikeluarkan oleh IBM pada mesin 8088 memiliki sekitar 29.000 transistor. Sedangkan pada mesin Pentium III, dengan teknologi superscalar dan superpipeline, mendukung branch prediction, speculative execution serta berbagai kemampuan lainnya memiliki sekitar 7,5 juta transistor. Beberapa CPU terkini lainnya seperti HP 8500 memiliki sekitar 140 juta transistor.

Tidak ada komentar: