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