Pipeline FPU terdiri dari 4 tingkat

advertisement
Matakuliah
Tahun
Versi
: H0162/ Mikroprosesor
: 2006
: 1/0
Pertemuan 12
SUN SPARC
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan
mahasiswa akan mampu:
• menerangkan arsitektur mikroprosesor
keluarga SUN SPARC (C2)
2
Outline Materi
•
•
•
•
•
•
Register Set
Format Data
Addressing Mode
Instruction Set
Integer Pipeline
Floating Point Pipeline
3
4
Sun SPARC
• Arsitektur SPARC dimulai oleh Sun Microsystem
Inc yang berlokasi di Mountain View, California.
Sebelum mengumumkan SPARC, Sun
Microsystems memproduksi keluar Sun
Workstation yang terkenal berbasis M68000. Salah
satu hal yang membedakan SPARC dari sistem
RISC adalah Sun tidak memiiki sejarah dalam
dunia permikroprosesoran (baik CISC maupun
RISC) sebelumnya, sehingga ia tidak memiliki
kekuatiran akan kompabilitas piranti lunak
(software). Para perancang SPARC dapat memulai
merancang dari dasar yang bersih.
5
• Hal lain yang memembedakan Sun dari pembuat
mikroprosesor RISC adalah Sun tidak
memproduksi mikropsrosesornya, Sun hanya
merancangnya saja. Sun Microsystems merancang
arsitektur SPARC, dan memproduksi workstation
yang mengimplementasikan mikroprosesor SPARC
(SPARCStation adalah paling terkenal dan
populer). Produksi mikroprosesor-mikroprosesor
yang mengimplementasikan arsitektur SPARC
adalah dengan melisensikan keluar pada para
pembuat mikroprosesor di Amerika Serikat, Eropa
dan Jepang.
6
• Malah yang pertama kali dipasarkan adalah
implementasi SPARC yang diproduksi oleh Fujitsu
Microelectronics Inc dari Jepang. Implementasi
SPARC level paling atas adalah SuperSPARC,
sebuah join ventura dari Sun Microsystems dan
Texas Intruments (TI) di Houston, Texas.
• Nama SPARC adalah kepanjangan dari Scalable
Processor ARChitecture. Konsep skalabilitasnya,
seperti yang dilihat oleh para perancang SPARC,
adalah spektrum yang luas dari implementasi
harga dibanding unjuk kerja (Price/Performance),
dimulai dari mikrokomputer sampai
SuperKomputer. Skalabilitas dari SPARC juga
dapat diartikan dalam jumlah Register dalam CPU
yang dapat digunakan pada beragam versi produk
yang mengimplementasikan arsitektur SPARC.
7
• Arsitektur SPARC mengikuti filosofi rancangan
RISC dari Berkeley dengan menekankan
pentingnya file register CPU yang relatif besar
dan mengimplementasikan fitur jendela register
yang sama (similar register window).
8
9
10
11
12
UltraSPARC T1
• Sun Microsystems
Chief Executive Scott
McNealy holds his
company's new
UltraSPARC T1
processor, unveiled
on November 14,
2005.
• The processor was
previously code
named Niagara.
13
UltraSPARC T1 Die Photo
• 300 juta
transistor
14
UltraSPARC T1
15
16
17
Register Set
• Fitur arsitektur SPARC memiliki file register yang besar,
lebih dari 100 register. Seperti pada RISC Berkeley,
suatu prosedur yang berjalan pada SPARC dapat
mengakses hanya 32 regiter, yaitu r0 sampai r31. 8 dari
register (r0 sampai r7) adalah bersifat global, dapat
diakses dari semua prosedur. Ke-24 register lainnya
adalah register jendela (window registers), yang
diberikan pada tiap prosedur, dengan adanya 8 register
tumpang tindih (overlap) antar prosedur. Ke 24 register
jendela tersebut dibagi menjadi 3 group dari masingmasing 8 register, seperti yang terlihat pada Gambar
16.1, untuk sebuah urutan dari 3 prosedur yang
bertingkat (nested procedures).
18
Register
19
• r31 sampai r24 adalah ins, berisi
parameter input yang dilewatkan ke
prosedur dari prosedur pemanggil.
• r23 sampai r16 adalah locals, berisi
parameter lokal dari prosedur.
• r15 sampai r8 adalah outs, berisi
parameter keluaran yang akan dilewatkan
kepada prosedur selanjutnya
20
• Seperti yang terlihat pada Gambar 16.1, register
outs dari prosedur pemanggil adalah secara fisik
adalah register ins dari prosedur yang dipanggil.
Prosedur pemanggil melewatkan parameter
kepada prosedur yang dipanggil melalui register
outs-nya, yang merupakan register ins dari
prosedur yang dipanggil.
• Jendela register dari prosedur yang saat ini
berjalan, disebut seapgai Active Window, yang
ditunjukkan oleh Pointer Jendela Aktif (Current
Window Pointer, CWP) pada Register Status
Prosesor (Processor Status Register, PSR).
21
• Jumlah jendela (NWINDOWS) dapat digunakan
pada versi SPARC yang berbeda berkisar dari 2
sampai 32 jendela, ini akan menjadi Register IU
(Integer Unit) yang bersifat umum (general
purpose, termasuk yang 8 register global)
berkisar dari 48 sampai 548 register.
Mikroprosesor implementasi SPARC yang
terakhir menggunakan 8 jendela dengan 136
register. Jendela tersebut diberi nomor 0 sampai
NWINDOWS-1 secara berurutan. Gambar 16.2
menunjukkan contoh dari sebuah implementasi
8 jendela, di mana jendela-jendela tersebut
secara sirkular terhubung.
22
23
• CPU memiliki sebuah Register Control yang
lebarnya 32 bit yang disebut Window Invalid
Mask (WIM). Setiap bit pada WIM, wi
(i=0,1,..,31), berkorespondensi 1 dari antara 32
jendela yang memungkinkan (terjadi bila
diimplementasikan kurang dari 32 jendela). Jika
wi=1, jendela i dianggap sebagai invalid, dan
kondisi trap terjadi.
• Program Counter (PC) pada CPU adalah
register yang terpisah, tidak termasuk di dalam
file register bersifat umum. Implementasiimplementasi SPARC memungkinkan memiliki
lebih dari satu PC yang berisi alamat-alamat
instruksi yang berurutan.
24
• Beberapa dari Register IU (Integer Unit) SPARC
memiliki fungsi khusus. r0 adalah hardwired
pada nilai 0, seperti pada sistem type RISC
lainnya. Sebuah insruksi CALL menulis
alamatnya lompatannya sendiri pada register
outs r15. CWP (Current Window Pointer) adakan
dikurangi satu dengan instruksi SAVE pada
pemanggilan prosedur dan dinaikkan satu
dengan instruksi RESTORE ketika kembali dari
prosedur. Prosedur-prosedur dapat dipanggil
tanpa mengganti jendela.
25
• Bayangkan bahwa suatu kasus NWINDOWS
bernilai 8 (lihat Gambar 16.2), window 0 adalah
jendela aktif yang saat ini berjalan. Dalam kasus
tersebut, CWP = 0. Karena window 0 adalah
jendela bebas yang terakhir, ketika prosedur,
menggunakan window 0 menggunakan
prosedur lainnya, sebuah window overflow
terjadi. Sebuah jendela register baru muncul
menimpa dareah yang sebelumnnya digunakan
oleh window 7, yang isinya harus disimpan ke
dalam memory oleh program. Setelah kembali,
dan ketika file register telah keluar dari jendelajendela, maka kita memiliki window underflow.
Program harus mengembalikan jendela register
yang sebelumnya digunakan dalam kasus ini.
26
• Window Overflow Trap ditimbulkan oleh
terjadinya overflow. Overflow Trap Handler
menggunakan locals dari jendela 7 untuk
menunjuk pada alamat memory dimana window
overflow disimpan. Window 7 dinyatakan invalid
selama penanganan trap dengan menset bit w7
pada register WIM.
27
Format Data
Arsitektur SPARC mengenali type data sebagai
berikut:
• Integer
–
–
–
–
Signed, unsigned byte 8 bits
Signed, unsigned halfword 16 bits
Signed, unsigned word 32 bits
Doubleword 64 bits
• Halfword adalah dialign pada batasan alamat 2byte (alamat genap), Word pada batasan 4-byte
(alamat yang dapat dibagi habis dengan 4), dan
DoubleWord pada batasan 8-byte. Urutan byte
yang digunakan adalah Big Endian.
28
Integer
29
• Floating-point (IEEE 754-1985 standard)
– Single-precision 32 bits
– Double-precision 64 bits
– Quad-precision exponent: 15 bits, mantissa:
63 bits
30
Floating Point
31
Addressing Mode
• Selain mode pengalamatan standar
seperti Register Direct dan Immediate,
hanya ada 3 mode pengalamatan untuk
mengakses memory:
– Register Indirect with Displacement; Register
+ signed konstanta 13-bit
– Register Indirect Indexed; Register1 +
Register2
– PC-Relative; digunakan pada instruksi CALL
dengan displacement 30-bit.
32
Instruction Format
• Format Instruksi SPARC dapat dilihat
pada Gambar 16.5. Terdapat 3 dasar
format instruksi yaitu:
– CALL
– Instruksi Bercabang (Branch)
– Instruksi operasi (Register-to-Register)
33
34
• Seperti yang terlihat pada Gambar 16.5,
instruksi operasi mengimplementasikan
pengalamatan 3-operand. Semua
instruksi berformat single word
panjangnya (32 bits).
• Field-field pada instruksi memiliki
pengaturan sebagai berikut:
– op bit 31 dan 30 pada semua format,
diinterpretasikan:
35
– Bicc = Branch on integer condition codes
– FBfcc = Branch on floating-point condition
codes
– CBccc = Branch on coprocessor condition
codes
– SETHI = Set High 22 bits of r register
36
• op2 bit 24 sampai 22 dalam format 2.
Memilih instruksi sebagai berikut:
37
– rd
bit 29 sampai 25 pada format 2 dan 3.
Memilih register sumber untuk instruksi store
dan register tujuan untuk semua instruksi
lainnya.
–a
bit 29 pada format 2. Annul bit.
Merubah tindakan instruksi yang ditemuinya
segera setelah terjadi lompatan (control
transfer).
– cond
bit 28 sampai 25 pada format 2.
Memilih condition code untuk lompatan
bersyarat.
38
– imm22 bit 21 sampai 0 pada format 2. Nilai
konstanta 22 bits digunakan pada instruksi
SETHI.
– disp22 bit 21 sampai 0 pada dormat 2.
Displacement sign-extended word 22 bits
untuk instruksi bercabang (branch).
– disp30 bit 29 sampai 0 pada format 1.
Displacement sign-extended word 30 bits
untuk instruksi PC relative CALL.
39
• op3
bit 24 sampai 19 in format 3.
Ektensi opcode.
–i
bit 13 pada format 3. Memilih operand
kedua pada ALU pada instruksi operasi nonfloating-point.
• i = 0: operand kedua adalah register rs2.
• i = 1: operasi kedua adalah sign-extended
simm13.
– asi
bit 12 sampai 5 pada format 3.
Sebuah 8 bit address space indentifier yang
dihasilkan dengan instruksi load dan store.
40
– rs1
bit 18 sampai 14 pada format 3.
Memilih register operand sumber pertama.
– rs2
bit 4 sampai 0 pada format 3. Memilih
register operand sumber kedua.
– simm13 bit 12 sampai 0 pada format 3.
Sebuah nilai sign-extended 13-bit immediate.
– opf
bit 13 sampai 5 pada format 3.
Mengenali instruksi operasi floating point.
41
Instruction Set
• Fitur Arsitektur SPARC memiliki jenis
instruksi sebagai berikut:
– Load/ Store
– Arithmetic/ Logical/ Shift
– Control Transfer
– Read/ Write Control Registers
– Floating-point operate
– Coprocessor operate
42
• Set instruksi SPARC disarikan pada tabel
16.1 berikut:
43
• Contoh:
– LDSB addr, rd
; Load signed byte dari
memory pada alamat addr pada register rd
– LD
addr, rd
; Load word dari addr
pada register rd.
– ADD rs1, rs2, rd ; (rs1) + (rs2) --> rd, tidak
ada icc modification.
44
• Ada 5 jenis Instruksi Transfer Kontrol:
– Conditional Branch (Bicc, FBfcc, CBccc)
– Jump dan Link
– Call (CALL)
– Trap (Ticc)
– Return from trap (RETT)
45
SuperSPARC
• SuperSPARC merupakan microprocessor 3.1juta transistor, dengan teknologi 0.8 micron, 3layer metal BiCMOS, dengan 293 ceramic pin
grid array (PGA) yang dibuat oleh Texas
Instruments bekerja sama dengan Sun
Microsystems. Processor nya memiliki IU, FPU,
MMU dan dua cache (disebut juga Dual Cache:
20 KB untuk instruksi, 16 KB untuk data, total 36
KB). Prosesor SuperSPARC juga dapat
mendukung external Level-1 cache ke-dua
sebesar 1MB.
46
47
• SuperSPARC adalah three-issue
superscalar system, sehingga dia dapat
mengeluarkan dan menjalankan 3
instruksi per siklus dan mengikuti
ketentuan sebagai berikut:
– Maximum 2 hasil perhitungan integer
– Maximum 1 referensi memory tentang data
– Maximum 1 instruksi aritmatik floating-point
– Terminate kelompok instruksi segera setelah
setiap transfer kontrol.
48
• Ketergantungan data di SuperSPARC diatasi
dengan:
• Menyusun Instruksi-instruksi yang saling
bergantung pada group yang sama.
• Mengirimkan instruksi-instruksi yang saling
bergantung pada group yang saling berurutan.
Blok diagram 16.6 memperlihatkan detil struktur
dari integer unit, terdapat 4 ALU dan sebuah
SHIFTER. ALU yang paling kiri bawah,
digunakan untuk perhitungan alamat, dan
outputnya dikeluarkan ke MMU dan data-cache.
Ketiga ALU lainnya digunakan untuk
pemrosesan data.
49
• Jika kita memiliki 2 instruksi integer, yang saling
bergantung pada data, instruksi pertama akan
dilaksanakan pada salah satu ALU di atas,
mengirimkan hasilnya dan operand lainnya pada
ALU yang di bawah. menyelesaikan kedua
komputasi tersebut dalam satu cycle. Setelah itu
kedua hasilnya akan disimpan ke dalam register
file IU (Integer Unit).
50
Integer Pipeline
• Pipeline Integer SuperSPARC berisi 4 tingkat/cycle,
setiap cycle memiliki 2 fase:
– 1. F0: mengakses instruction Cache (icache) dan
TLB Lookup.
– 2. F1: Deteksi kecocockan icache. 4 instruksi
dikirimkan ke instruction queue (iqueue).
– 3. D0: Mengeluarkan 1, 2 atau 3 instruksi.
Memilih nomor register untuk instruksi
Load/Store.
– 4. D1: Membaca file register untuk instruksi
Load/Store. Alokasi sumberdaya untuk instruksiinstruksi ALU. Mengevaluasi alamat target
51
lompatan.
– 5. D2: Membaca file register untuk operandoperand ALU. Mengkalkulasikan EA (Effective
Address) untuk instruksi Load/Store
– 6. E0: Tahap pertama ALU. Mengakses Data
Cache (dcache) dan TLB Lookup.
Mengeluarkan instruksi Floating-Point.
– 7. E1: Tahap dua ALU. Deteksi kecocokan
dcache. Data yang akan diload tersedia.
Menyelesaikan eksepsi.
– 8. WB: (Write Back) Menulis hasil ke file
register. Menyimpan store ke buffer store.
52
• SuperSPARC mengimplementasikan model
eksepsi yang sangat presisi. Pada setiap saat,
akan selalu ada 9 instruksi pada pipeline IU dan
4 lagi berada pada antrian floating-point.
Eksepsi dan instruksi-instruksi tersebut akan
menyebabkan mereka melewati pipeline IU.
Mereka akan diselesaikan pada tahap
pelaksanaan, sebelum hasil mereka dapat
merubah status yang terlihat pada file register,
register kontrol atau memory.
53
Floating Point Pipeline
• FPU (Floating Point Unit) berisi sebuah
Floating Point Controller (FPC), 2 buah
pipeline yang independen yaitu FADD dan
FMUL, sebuah antrian floating point dan file
register yang terdiri dari 32 buah register FP
yang masing-masing lebarnya 32 bit.
• Pipeline FPU terdiri dari 4 tingkat:
– 1. FRD: Decode and Read
– 2. FM/FA: Execute Multiply atau Addition
– 3. FN/FR: Normalisasi dan Rounding
(pembulatan)
– 4. FWB: Write Back ke file register FP.
54
Download