1. RISC dan CISC merupakan dua filosofi desain arsitektur komputer yang berbeda dimana RISC menekankan pada set instruksi yang sederhana sedangkan CISC menyertakan instruksi yang lebih kompleks.
2. Beberapa karakteristik RISC antara lain menggunakan satu instruksi per siklus, operasi register ke register, format instruksi sederhana, dan desain bawaan tanpa mikrokode.
3. Optimasi pipelining se
2. Kemajuan Besar dalam Komputer(1)
• Konsep keluarga
—IBM System/360 1964
—DEC PDP-8
—Memisahkan arsitektur dari implementasi
• Unit kontrol yang diprogram mikro
—Idea by Wilkes 1951
—Produced by IBM S/360 1964
• Cache memory
—IBM S/360 model 85 1969
3. Kemajuan Besar dalam Komputer(2)
• Solid State RAM
—(See memory notes)
• Microprocessors
—Intel 4004 1971
• Pipelining
—Memperkenalkan paralelisme ke dalam siklus
eksekusi pengambilan
• Beberapa prosesor
4. Langkah Selanjutnya - RISC
• Reduced Instruction Set Computer
(Komputer Set Instruksi yang Dikurangi)
• Fitur utama
—Sejumlah besar register tujuan umum
—atau penggunaan teknologi kompiler untuk
mengoptimalkan penggunaan register
—Set instruksi terbatas dan sederhana
—Penekanan pada pengoptimalan jalur instruksi
6. Kekuatan pendorong untuk CISC
• Biaya perangkat lunak jauh melebihi biaya
perangkat keras
• Bahasa tingkat tinggi yang semakin
kompleks
• Kesenjangan semantik
• Mengarah ke:
—Set instruksi besar
—Lebih banyak mode pengalamatan
—Implementasi perangkat keras dari
pernyataan HLL
– e.g. CASE (switch) pada VAX
7. Niat CISC
• Kemudahan penulisan kompiler
• Tingkatkan efisiensi eksekusi
—Operasi kompleks dalam mikrokode
• Mendukung HLL yang lebih kompleks
8. Karakteristik Eksekusi
• Operasi yang dilakukan
• Operand yang digunakan
• Urutan eksekusi
• Studi telah dilakukan berdasarkan
program yang ditulis dalam HLL
• Studi dinamis diukur selama pelaksanaan
program
9. Operasi
• Assignment (Penugasan)
—Pergerakan data
• Conditional statements (IF, LOOP)
—Sequence control
• Prosedur Call-Return sangat memakan
waktu
• Beberapa instruksi HLL menyebabkan
banyak operasi kode mesin
10. Frekuensi Dinamis Relatif Tertimbang dari Operasi
HLL [PATT82a] (CISC)
Kejadian
Dinamis(Frekuensi
relatif terjadinya)
Mesin-Instruksi
Tertimbang(Ukuran
pengganti dari waktu
aktual yang dihabiskan
untuk mengeksekusi)
Memori-Referensi
Tertimbang(Ukuran
pengganti aktual waktu
yang dihabiskan untuk
referensi memori)
Pascal C Pascal C Pascal C
ASSIGN 45% 38% 13% 13% 14% 15%
LOOP 5% 3% 42% 32% 33% 26%
CALL 15% 12% 31% 33% 44% 45%
IF 29% 43% 11% 21% 7% 13%
GOTO — 3% — — — —
OTHER 6% 1% 3% 1% 2% 1%
11. Operand (Persentase Dinamis Referensi
Operand)
• Terutama variabel skalar lokal
• Pengoptimalan harus berkonsentrasi pada
mengakses variabel lokal
Pascal C Average
Integer Constant 16% 23% 20%
Scalar Variable
(80% Local Variables)
58% 53% 55%
Array/Structure
(+ a reference to an index
or a pointer @ item)
26% 24% 25%
12. Pemanggilan Prosedur
• Sangat memakan waktu
• Tergantung pada jumlah parameter yang
dilewati
• Tergantung pada tingkat nested
• Sebagian besar program tidak melakukan
banyak panggilan diikuti dengan banyak
pengembalian
• Sebagian besar variabel bersifat lokal
• (c.f. lokalitas referensi)
13. Implikasi
• Dukungan terbaik diberikan dengan
mengoptimalkan fitur yang paling sering
digunakan dan paling memakan waktu
• Banyaknya register
—Referensi operand
• Desain pipeline yang cermat
—Prediksi pencabangan dll.
• Set instruksi yang disederhanakan
(dikurangi)
14. Register File Besar
• Solusi perangkat lunak
—Memerlukan kompiler untuk mengalokasikan
register
—Alokasikan berdasarkan variabel yang paling
sering digunakan dalam waktu tertentu
—Memerlukan analisis program yang canggih
• Solusi Hardware
—Miliki lebih banyak register
—Jadi lebih banyak variabel akan ada di register
15. Register untuk Variabel Lokal
• Simpan variabel skalar lokal di register
• Mengurangi akses memori
• Setiap prosedur (fungsi) panggilan
mengubah lokalitas
• Parameter harus dilewati
• Hasil harus dikembalikan
• Variabel dari panggilan program harus
dipulihkan
16. Register Windows
• Hanya beberapa parameter
• Batas Jangkauan panggilan terbatas
• Gunakan beberapa set register kecil
• Panggilan beralih ke set register yang
berbeda
• Mengembalikan switch kembali ke set
register yang digunakan sebelumnya
17. Register Windows cont.
• Tiga area dalam satu set register
—Register parameter
—Register lokal
—Register sementara
—Register sementara dari satu set register
parameter tumpang tindih dari yang
berikutnya
—Ini memungkinkan parameter lewat tanpa
memindahkan data
20. Pengoperasian Penyangga Melingkar
• Saat panggilan dibuat, penunjuk jendela
saat ini dipindahkan untuk menunjukkan
jendela register yang sedang aktif
• Jika semua jendela sedang digunakan,
interupsi dihasilkan dan jendela tertua
(yang terjauh di belakang panggilan
bersarang) disimpan ke memori
• Penunjuk jendela yang disimpan
menunjukkan di mana jendela yang
disimpan berikutnya harus dikembalikan
ke
22. Registers v Cache
Large Register File Cache
All local scalars Recently-used local scalars
Individual variables Blocks of memory
Compiler-assigned global variables Recently-used global variables
Save/Restore based on procedure nesting depth Save/Restore based on cache replacement
algorithm
Register addressing Memory addressing
25. Optimasi Register Berbasis Kompilator
• Asumsikan sejumlah kecil register (16-32)
• Mengoptimalkan penggunaan terserah kompiler
• Program HLL tidak memiliki referensi eksplisit ke
register
—biasanya - pikirkan tentang C - register int
• Tetapkan register simbolis atau virtual untuk
setiap variabel kandidat
• Petakan register simbolik (tidak terbatas) ke
register nyata
• Register simbolik yang tidak tumpang tindih
dapat berbagi register nyata
• Jika Anda kehabisan register nyata, beberapa
variabel menggunakan memori
26. Pewarnaan Grafik
• Diberikan grafik simpul dan sisi
• Tetapkan warna untuk setiap simpul/node
• Node yang berdekatan memiliki warna yang
berbeda
• Gunakan jumlah minimum warna
• Node adalah simbolis register
• Dua register yang hidup dalam fragmen program
yang sama digabungkan oleh sebuah edge
• Cobalah untuk mewarnai grafik dengan n warna,
di mana n adalah jumlah register nyata
• Node yang tidak dapat diwarnai ditempatkan di
memori
28. Mengapa CISC (1)?
• Penyederhanaan kompiler?
—Disengketakan…
—Instruksi mesin yang rumit lebih sulit untuk
dieksploitasi
—Optimasi lebih sulit
• Program yang lebih kecil?
—Program membutuhkan lebih sedikit memori
tetapi…
—Memori sekarang murah
—Mungkin tidak menempati lebih sedikit, hanya
terlihat lebih pendek dalam bentuk simbolis
– Lebih banyak instruksi membutuhkan kode operasi
yang lebih panjang
– Referensi register membutuhkan lebih sedikit bit
29. Mengapa CISC (2)?
• Program lebih cepat?
—Bias terhadap penggunaan instruksi yang lebih
sederhana
—Unit kontrol yang lebih kompleks
—kontrol program mikro penyimpanan lebih
besar
—sehingga instruksi sederhana membutuhkan
waktu lebih lama untuk dieksekusi
• Masih jauh dari jelas bahwa CISC adalah
solusi yang tepat
30. Karakteristik RISC
• Satu instruksi per siklus
• Operasi Register ke register
• Beberapa, mode pengalamatan sederhana
• Beberapa, format instruksi sederhana
• Desain bawaan (tanpa mikrokode)
• Format instruksi tetap
• Lebih banyak waktu/usaha kompilasi
31. RISC v CISC
• Tidak jelas
• Banyak desain meminjam dari kedua
filosofi
• misalnya PowerPC dan Pentium II
32. Pemipaan RISC
• Sebagian besar instruksi adalah Register
ke Register
• Dua fase eksekusi
—I: Instruction fetch
—E: Execute
– Operasi ALU dengan input dan output register
• Untuk memuat dan menyimpan
—I: Instruction fetch
—E: Execute
– Hitung alamat memori
—D: Memory
– Register ke memory atau memory ke register
Operasi
34. Optimalisasi Pipelining
• Delay branch
—Tidak berlaku sampai setelah eksekusi instruksi berikut
—Instruksi berikut ini adalah slot penundaan
• Delay Load
—Register menjadi target dikunci oleh prosesor
—Lanjutkan eksekusi aliran instruksi sampai register
diperlukan
—Menganggur hingga pemuatan selesai
—Mengatur ulang instruksi dapat memungkinkan
pekerjaan yang bermanfaat saat memuat
• Pembukaan Loop
—Replikasi body of loop beberapa kali
—pengulangan Loop lebih sedikit
—Mengurangi loop overhead
—Meningkatkan paralelisme instruksi
—Peningkatan register, cache data, atau lokalitas TLB
35. Loop Unrolling Dua Kali
Contoh
do i=2, n-1
a[i] = a[i] + a[i-1] * a[i+l]
end do
Becomes
do i=2, n-2, 2
a[i] = a[i] + a[i-1] * a[i+i]
a[i+l] = a[i+l] + a[i] * a[i+2]
end do
if (mod(n-2,2) = i) then
a[n-1] = a[n-1] + a[n-2] * a[n]
end if
36. Cabang Normal dan Tertunda
Address Normal Branch Delayed Branch Optimized
Delayed Branch
100 LOAD X, rA LOAD X, rA LOAD X, rA
101 ADD 1, rA ADD 1, rA JUMP 105
102 JUMP 105 JUMP 106 ADD 1, rA
103 ADD rA, rB NOOP ADD rA, rB
104 SUB rC, rB ADD rA, rB SUB rC, rB
105 STORE rA, Z SUB rC, rB STORE rA, Z
106 STORE rA, Z
38. Kontroversi
• Kuantitatif
—bandingkan ukuran program dan kecepatan eksekusi
• Kualitatif
—memeriksa masalah dukungan bahasa tingkat tinggi
dan penggunaan real estat VLSI
• Problem
—Tidak ada pasangan RISC dan CISC yang dapat
dibandingkan secara langsung
—Tidak ada set program pengujian yang pasti
—Sulit untuk memisahkan efek perangkat keras dari efek
kompiler
—Kebanyakan perbandingan dilakukan pada "mainan"
daripada mesin produksi
—Sebagian besar perangkat komersial adalah campuran