CHAPTER 16
Apa itu superscalar?
• Salah satu jenis dari arsitektur, dimana superscalar adalah sebuah uniprocessor
• Suatu rancangan untuk meningkatkan kecepatan CPU
• Mengeksekusi intruksi umum (arithmetic, load/store, conditional branch) secara independen dan secara bersamaan dalam tahap pipeline yang berbeda
• Mengeksekusi dua kali atau lebih operasi scalar dalam bentuk paralel
• Dapat diterapkan untuk RISC dan CISC
Superscalar vs Superpipelined
• Superpipelined adalah pendekatan alternatif untuk mencapai kinerja yang lebih besar
• Perbedaannya, Superpipelining mengeksploitasi fakta bahwa banyak tahapan pipeline melakukan tugas-tugas yang membutuhkan waktu kurang dari setengah clock siklus.
Superscalar
v
Superpipeline
Keterbatasan
• Untuk meningkatkan instruksi level parallelism, perlu dilihat keterbatasan mendasarnya:
• 1. Kebenaran ketergantungan data (RAW)
• 2. Prosedural ketergantungan
• 3. Konflik sumber daya
• 4. (Output dependency) (WAW)
Kebenaran ketergantungan data
Read After Write
• ADD r1, r2 (r1 := r1+r2;)
• MOVE r3,r1 (r3 := r1;)
• Jika tidak ada ketergantungan, dua instruksi dapat diambil dan dieksekusi secara paralel
Prosedural ketergantungan
• Memiliki ketergantungan prosedural pada cabang dan tidak dapat dilaksanakan sampai cabang dieksekusi
Konflik sumber daya
• Kompetisi dari dua atau lebih instruksi untuk memperoleh sumber daya yang sama pada saat yang bersamaan
• Contoh sumber daya: memori, cache, bus, register-file, port, dan unit-unit fungsional lainnya
• Contoh konflik:
– Instruksi: 2 instruksi aritmetik
• Diatasi dengan duplikasi sumber daya
Dessign Issues
• 1. Instruction- Level Parallelism and Machine Parallelism
• Instruksi level parallelism
– Terjadi jika Instruksi bersifat independen (tidak saling berhubungan)
– Dieksekusi secara paralel dengan overlapping (tumpang tindih)
•
Contoh:
Kiri
|| Kanan
•
LOAD R1
R2
|| ADD R3
R3,”1”
•
ADD R3
R3,”1”
|| ADD R4
R3, R2
•
ADD R4
R2
|| STORE [R4]
R0
• Machine parallelism
– Kemampuan prosesor dalam memanfaatkan paralelisme tingkat instruksi
• 2. Instruksi isu kebijakan
• 3 hal penting:
– Urutan dimana instruksi diambil
– Urutan dimana instruksi dieksekusi
– Urutan dimana instruksi memperbarui isi dari register dan memori lokasi
• Secara umum kebijakan instruksi superscalar dapat digolongkan dalam 3 kategori berikut:
– In-order issue with in-order completion
– In-order issue with out-of-order completion
In-order issue with
In-order completion
• Isu instruksi mengeluarkan instruksi dalam urutan yang pasti yang akan didapatkan dengan eksekusi sekuensial order-issue) dan menulis hasilnya dalam urutan yang sama (in-order-completion)
• Tidak begitu efisien (sebagai dasar untuk membandingkan pendekatan yang lebih canggih)
In-Order Issue In-Order Completion
(Diagram)
In-Order Issue
Out-of-Order Completion
• Prosesor akan mendekode instruksi hingga dijumpai ketergantungan atau konflik.
• Contoh:
• Output dependency
– R3:= R3 + R5; (I1)
– R4:= R3 + 1; (I2)
– R3:= R5 + 1; (I3)
– Intruksi I2 tidak dapat dijalankan sebelum instruksi I1data dependency
Out-of-Order Issue
Out-of-Order Completion
• Decouple tahapan-tahapan dekode dan eksekusi pipeline
• Setelah selesai pendekodean instruksi disimpan di jendela instruksi
• Ketika buffer belum penuh, prosesor dapat terus mengambil dan mendecode instruksi hingga buffer penuh
Antidependency
• Write-write dependency
– R3:=R3 + R5; (I1)
– R4:=R3 + 1; (I2)
– R3:=R5 + 1; (I3)
– R7:=R3 + R4; (I4)
– I3 tidak bisa dikerjakan sebelum eksekusi I2 dimulai, dan I2 membutuhkan nilai R3 dari I1dan I3 mengubah R3
Register Renaming
• Digunakan untuk mengeliminasi WAW dan WAR
• WAW dan WAR muncul karen register tidak dapat lagi merefleksikan nilai-nilai dari aliran program
• Contoh:
• I1: R1R2/R3 pembagian membutuhkan waktu yang lama untuk penyelesaiannya
• I2: R4R1+R5 RAW dependency dengan I1
• I3: R5R6+R7 WAR dependency dengan I2
• I4: R1R8+R9 WAW dependency dengan I1
• Lalu direnaming
• I1: R32R2/R3 pembagian membutuhkan waktu yang lama untuk penyelesaiannya
• I2: R33R32+R5 masih RAW dependency dengan I1
• I3: R34R6+R7 tidak lagi WAR dependency dengan I2
Teknik dalam Superscalar
• Branch Prediction
• Program yang terdiri dari kelompok perintah bercabang sering digunakan dalam pemrograman.
• Pada CPU yang mendukung perintah pencabangan, CPU membutuhkan cukup banyak clock cycle
Cara kerja superscalar
• Superscalar dapat mengeksekusi instruksi 1 (I1) dan instruksi 2 (I2) secara pararel dengan syarat:
– Keduanya instruksi yang sederhana
– I1 tidak melakukan proses jump
– Tujuan (destination) dari I1 bukan sumber (source) dari I2
– Tujaun (destinition) dari I1 bukan tujuan (destination) dari I2
• Jika kondisi diatas tidak dapat dipenuhi
– I1 melakukan proses U-pipe
• Superscalar Implementation
• Proses fetch dari beberapa instruksi secara bersamaan
• Logika untuk menentukan ketergantungan sebenarnya yang meliputi nilai register
• Mekanisme untuk mengkomunikasikan nilai tersebut
• Mekanisme untuk menginisialisasi instruksi parallel
• Tersedianya sumber untuk ekseskusi parallel dari bebrapa instruksi
• Speculative Execution
• CPU akan 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
Pentium 4
• Meskipun konsep desain superscalar umumnya dikaitkan dengan arsitektur RISC, prinsip-prinsip superscalar yang sama dapat diterapkan pada mesin CISC
• Mungkin contoh yang paling penting dari hal ini adalah Pentium
• Pentium awal/ asli memiliki komponen superscalar sederhana, yang terdiri dari penggunaan dua unit eksekusi bilangan bulat terpisah
Pengoperasian pentium 4
• Prosesor mengambil instruksi dari memori dalam urutan program statis.
• Setiap instruksi diterjemahkan ke dalam satu atau lebih tetap-panjang instruksi RISC, dikenal sebagai mikro-operasi, atau micro-ops.
• Prosesor mengeksekusi mikro-ops pada organisasi pipeline superscalar , sehingga mikro-ops dapat dieksekusi tidak sesuai (tanpa berurutan)
• Prosesor menjalankan hasil setiap eksekusi micro-op ke prosesor register set dalam urutan aliran program asli.
• Penggabungan CISC (bagian terluar) dengan RISC (bagian terdalam).
• Pada pipeline RISC terdapat 20 tahapan.
• Beberapa micro-ops memerlukan banyak tahapan eksekusi.
• Pipeline terpanjang.
FRONT END
tahapan
•
Generation of micro operations
•
Trace Cache Next Instruction Pointer
•
Pada tahap ini trace cachenya pentium 4
mengambil logika untuk mendapatkan
pointer
ke
instruksi
selanjutnya.
Pentium
4
menggunakan
strategi
prediksi cabang dinamis
•
Trace Cache Fetch
•
Drive
•
Ini adalah tahap pertama dari dua tahap drive
pada pipelinenya pentium 4, masing-masing
ditujukan untuk menjalankan sinyal , dari satu
bagian prosesor kebagian selanjutnya
•
Karena pentium 4 jalannya sangat cepat maka
digunakan tahap pipeline agar sinyal-sinyal
tersebut menyebar di seluruh chip.
•
Allocate; Register Renaming
•
Pada tahap ini mengatur alokasi sumber daya
register microarchitectural
•
register
renaming
yang
berfungsi
untuk
mengurangi
konflik
yang
terjadi
dengan
•
Micro-Op Queueing
•
Dua antrian: antrian operasi memori (muatan
dan penyimpanan) dan antrian untuk micro-ops
yang tidak melibatkan referensi memori
•
micro-ops ditahan sampai ada ruang dalam
penjadwal. Setiap antrian mematuhi FIFO (First
In First Out)
•
Micro-Op Scheduling and Dispatching
•
Penjadwal bertanggung jawab untuk mengambil
micro-ops dari antrian dan mengirimnya untuk
dieksekusi
•
Register File
•
Setelah melakukan pengiriman, pada tahap
ini instruksi mengisi register file untuk
dieksekusi tahap selanjutnya.
•
Execute; Flags
•
Pada tahapan ini instruksi akan
benar-benar dieksekusi oleh unit mesin eksekusi
•
Contohnya jika terdapat instruksi ADD,
maka sejumlah angka akan dijumlahkan,dst
•
Sedangkan pada flags, jika hasil instruksi
•
Branch Check
•
Disini
tahap
dimana
pentium
4
memeriksa hasil dari cabang bersyarat
untuk melihat apakah ada siklus yang
terlewatkan.
Arm cortex-a8
•
Cortex-A8 dalam keluarga ARM prosesor
disebut sebagai prosesor aplikasi.
Instruction fetch unit
•
Instruction fetch unit memprediksi aliran
instruksi, mengambil instruksi dari instruksi L1
cache, dan menempatkan instruksi yang
diambil ke dalam buffer untuk dikonsumsi
oleh pipa decode.
Instruction decode unit
•
Unit instruksi decode dan sekuens semuanya
adalah instruksi
•
pencegahan bahaya RAW
•
Ini memiliki struktur pipa ganda, yang disebut
pipe0 dan pipe1, sehingga dua instruksi dapat
maju melalui unit pada suatu waktu
•
Semua instruksi yang dikeluarkan dalam urutan
Integer execute unit
•
Integer execution unit terdiri dari dua satuan
aritmatika logika simetris (ALU), pipelines,
generator
alamat
untuk
beban
dan
menyimpan instruksi, dan perkalian pipeline.
Simd and floating-point pipeline
•
Semua SIMD dan Floating-Point Pipeline
instruksi melewati pipa integer dan diproses