SPARC (Scalable Processor Architecture, artinya Arsitektur Prosesor yang Dapat Diskalakan) adalah arsitektur set instruksi komputer yang disederhanakan (RISC) yang awalnya dikembangkan oleh Sun Microsystems. Desainnya sangat dipengaruhi oleh sistem RISC Berkeley eksperimental yang dikembangkan pada awal 1980-an. Pertama kali dikembangkan pada tahun 1986 dan dirilis pada tahun 1987,
SPARC adalah salah satu sistem RISC komersial awal yang paling sukses, dan keberhasilannya menyebabkan pengenalan desain RISC serupa dari banyak vendor melalui tahun 1980-an dan 1990-an.
Desainnya diserahkan kepada kelompok perdagangan Internasional
SPARC pada tahun 1989, dan sejak itu arsitekturnya telah dikembangkan oleh para anggotanya.
SPARC International juga bertanggung jawab untuk melisensikan dan mempromosikan arsitektur
SPARC, mengelola merek dagang
SPARC (termasuk
SPARC, yang dimilikinya), dan menyediakan pengujian kesesuaian.
SPARC International dimaksudkan untuk menumbuhkan arsitektur
SPARC untuk menciptakan ekosistem yang lebih besar;
SPARC telah dilisensikan ke beberapa produsen, termasuk Atmel, Bipolar Integrated Technology, Cypress Semiconductor, Fujitsu, Matsushita, dan Texas Instruments. Karena
SPARC International,
SPARC sepenuhnya terbuka, tidak berpemilik dan bebas royalti.
Implementasi pertama dari arsitektur 32-bit asli (
SPARC V7) digunakan di komputer stasiun kerja Sun-4 dan sistem peladen, menggantikan sistem Sun-3 sebelumnya yang didasarkan pada prosesor seri Motorola 68000.
SPARC V8 menambahkan sejumlah peningkatan yang merupakan bagian dari seri prosesor SuperSPARC yang dirilis pada tahun 1992.
SPARC V9, dirilis pada tahun 1993, memperkenalkan arsitektur 64-bit dan pertama kali dirilis pada prosesor UltraSPARC pada tahun 1995. Kemudian, prosesor
SPARC digunakan dalam peladen multiprosesor simetris (SMP) dan akses memori yang tidak seragam (CC-NUMA) yang diproduksi oleh Sun, Solbourne, dan Fujitsu, antara lain.
Mulai September 2017, prosesor
SPARC komersial kelas atas terbaru adalah SPARC64 XII Fujitsu (diperkenalkan pada 2017 untuk peladen
SPARC M12-nya) dan
SPARC M8 Oracle yang diperkenalkan pada September 2017 untuk peladen kelas atas.
Pada hari Jumat, 1 September 2017, setelah putaran PHK yang dimulai di Oracle Labs pada November 2016, Oracle menghentikan desain
SPARC setelah menyelesaikan M8. Sebagian besar grup pengembangan inti prosesor di Austin, Texas, diberhentikan, begitu pula tim di Santa Clara, California, dan Burlington, Massachusetts.
Fujitsu juga akan menghentikan produksi
SPARC mereka (telah beralih memproduksi CPU berbasis ARM mereka sendiri), setelah dua versi "disempurnakan" dari server
SPARC M12 Fujitsu yang lebih tua pada tahun 2020–22 (sebelumnya direncanakan untuk tahun 2021) dan lagi pada tahun 2026–27, akhir penjualan pada tahun 2029, server UNIX dan setahun kemudian untuk komputer bingkai utama dan akhir dukungan mereka pada tahun 2034 "untuk mempromosikan modernisasi pelanggan".
Fitur
Arsitektur
SPARC sangat dipengaruhi oleh desain RISC sebelumnya, termasuk RISC I dan II dari University of California, Berkeley dan IBM 801. Desain RISC asli ini minimalis, termasuk sesedikit mungkin fitur atau kode operasi dan bertujuan untuk mengeksekusi instruksi dengan kecepatan hampir satu instruksi per siklus jam. Ini membuat mereka mirip dengan arsitektur MIPS dalam banyak hal, termasuk kurangnya instruksi seperti perkalian atau pembagian. Fitur lain dari
SPARC yang dipengaruhi oleh gerakan RISC awal ini adalah slot penundaan cabang.
Prosesor
SPARC biasanya berisi sebanyak 160 register tujuan umum. Menurut spesifikasi "Oracle
SPARC Architecture 2015", sebuah "implementasi dapat berisi 72 hingga 640 register 64-bit tujuan umum". Pada titik mana pun, hanya 32 dari mereka yang langsung terlihat oleh perangkat lunak — 8 adalah satu set register global (salah satunya, g0, terprogram ke nol, jadi hanya tujuh dari mereka yang dapat digunakan sebagai register) dan 24 lainnya adalah dari tumpukan register. Ke-24 register ini membentuk apa yang disebut jendela register, dan pada panggilan/pengembalian fungsi, jendela ini dipindahkan ke atas dan ke bawah tumpukan register. Setiap jendela memiliki 8 register lokal dan berbagi 8 register dengan masing-masing jendela yang berdekatan. Register bersama digunakan untuk meneruskan parameter fungsi dan mengembalikan nilai, dan register lokal digunakan untuk mempertahankan nilai lokal di seluruh panggilan fungsi.
"Scalable" di
SPARC berasal dari fakta bahwa spesifikasi
SPARC memungkinkan implementasi untuk menskalakan dari prosesor tertanam hingga prosesor server besar, semuanya berbagi set instruksi inti (tanpa hak istimewa) yang sama. Salah satu parameter arsitektur yang dapat diukur adalah jumlah jendela register yang diimplementasikan; spesifikasi memungkinkan dari tiga hingga 32 jendela untuk diimplementasikan, sehingga implementasi dapat memilih untuk mengimplementasikan semua 32 untuk memberikan efisiensi tumpukan panggilan maksimum, atau untuk menerapkan hanya tiga untuk mengurangi biaya dan kompleksitas desain, atau untuk mengimplementasikan beberapa nomor di antaranya. Arsitektur lain yang menyertakan fitur berkas register serupa termasuk Intel i960, IA-64, dan AMD 29000.
Arsitektur ini telah melalui beberapa revisi. Ini memperoleh fungsionalitas perkalian dan pembagian perangkat keras di Versi 8. 64-bit (pengalamatan dan data) ditambahkan ke spesifikasi
SPARC versi 9 yang diterbitkan pada tahun 1994.
Dalam
SPARC Versi 8, berkas register titik kambang memiliki 16 register presisi ganda. Masing-masing dapat digunakan sebagai dua register presisi tunggal, menyediakan total 32 register presisi tunggal. Sepasang register presisi ganda ganjil genap dapat digunakan sebagai register presisi quad, sehingga memungkinkan 8 register presisi quad.
SPARC Versi 9 menambahkan 16 register presisi ganda (yang juga dapat diakses sebagai 8 register presisi quad), tetapi register tambahan ini tidak dapat diakses sebagai register presisi tunggal. Tidak ada CPU
SPARC yang mengimplementasikan operasi quad-presisi dalam perangkat keras pada tahun 2004.
Instruksi penambahan dan pengurangan yang ditandai melakukan penambahan dan pengurangan pada nilai dengan memeriksa bahwa dua bit terbawah dari kedua operan adalah 0 dan melaporkan overflow jika tidak. Ini dapat berguna dalam implementasi waktu nyata untuk ML, Lisp, dan bahasa serupa yang mungkin menggunakan format integer yang diberi tag.
Endian arsitektur
SPARC V8 32-bit adalah murni endian besar. Arsitektur
SPARC V9 64-bit menggunakan instruksi endian besar, tetapi dapat mengakses data dalam urutan bita endian besar atau endian kecil, dipilih baik pada level instruksi aplikasi (muat-simpan) atau pada level halaman memori (melalui pengaturan MMU). Yang terakhir ini sering digunakan untuk mengakses data dari perangkat endian kecil, seperti yang ada di bus PCI.
Referensi
Pranala luar
SPARC International, Inc.
Oracle
SPARC Processor Documentation
Hypervisor/Sun4v Reference Materials
SPARC di Curlie (dari DMOZ)