Coba jelasin Fitur dari SPARC dong

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.