• Tidak ada hasil yang ditemukan

CHAPTER 16 INSTRUCTION-LEVEL PARALLELISM AND SUPERSCALAR PROCESSORS

N/A
N/A
Protected

Academic year: 2018

Membagikan "CHAPTER 16 INSTRUCTION-LEVEL PARALLELISM AND SUPERSCALAR PROCESSORS"

Copied!
51
0
0

Teks penuh

(1)

CHAPTER 16

(2)

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

(3)
(4)

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.

(5)

Superscalar

v

Superpipeline

(6)

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)

(7)

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

(8)

Prosedural ketergantungan

• Memiliki ketergantungan prosedural pada cabang dan tidak dapat dilaksanakan sampai cabang dieksekusi

(9)

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

(10)
(11)

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)

(12)

Contoh:

Kiri

|| Kanan

LOAD R1

R2

|| ADD R3

R3,”1”

ADD R3

R3,”1”

|| ADD R4

R3, R2

ADD R4

R2

|| STORE [R4]

R0

(13)

• Machine parallelism

– Kemampuan prosesor dalam memanfaatkan paralelisme tingkat instruksi

(14)

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

(15)

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)

(16)

In-Order Issue In-Order Completion

(Diagram)

(17)

In-Order Issue

Out-of-Order Completion

• Prosesor akan mendekode instruksi hingga dijumpai ketergantungan atau konflik.

(18)

• Contoh:

• Output dependency

– R3:= R3 + R5; (I1)

– R4:= R3 + 1; (I2)

– R3:= R5 + 1; (I3)

– Intruksi I2 tidak dapat dijalankan sebelum instruksi I1data dependency

(19)
(20)

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

(21)
(22)

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

(23)

Register Renaming

• Digunakan untuk mengeliminasi WAW dan WAR

• WAW dan WAR muncul karen register tidak dapat lagi merefleksikan nilai-nilai dari aliran program

(24)

• Contoh:

• I1: R1R2/R3 pembagian membutuhkan waktu yang lama untuk penyelesaiannya

• I2: R4R1+R5 RAW dependency dengan I1

• I3: R5R6+R7 WAR dependency dengan I2

• I4: R1R8+R9 WAW dependency dengan I1

Lalu direnaming

• I1: R32R2/R3 pembagian membutuhkan waktu yang lama untuk penyelesaiannya

• I2: R33R32+R5 masih RAW dependency dengan I1

• I3: R34R6+R7 tidak lagi WAR dependency dengan I2

(25)
(26)

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

(27)
(28)

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

(29)

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

(30)

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

(31)

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

(32)

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.

(33)
(34)
(35)

FRONT END

(36)
(37)
(38)

tahapan

Generation of micro operations

(39)

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

(40)

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

(41)

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

(42)

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

(43)

Branch Check

Disini

tahap

dimana

pentium

4

memeriksa hasil dari cabang bersyarat

untuk melihat apakah ada siklus yang

terlewatkan.

(44)

Arm cortex-a8

Cortex-A8 dalam keluarga ARM prosesor

disebut sebagai prosesor aplikasi.

(45)
(46)

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.

(47)

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

(48)

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.

(49)

Simd and floating-point pipeline

Semua SIMD dan Floating-Point Pipeline

instruksi melewati pipa integer dan diproses

dalam pipeline 10-tahap yang terpisah

(50)
(51)

Referensi

Dokumen terkait