Fitur Arsitektur SPARC

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 beberapa fitur atau op-kode mungkin dan bertujuan untuk jalankan instruksi dengan laju hampir satu instruksi per siklus clock. Ini membuat mereka mirip dengan arsitektur MIPS dalam banyak hal, termasuk kurangnya instruksi seperti mengalikan atau membagi.

Fitur lain dari SPARC yang dipengaruhi oleh gerakan RISC awal ini adalah slot delay cabang.

Prosesor SPARC

Prosesor SPARC biasanya berisi sebanyak 160 register tujuan umum. Menurut spesifikasi “Oracle SPARC Architecture 2015” suatu implementasi “mungkin berisi dari 72 hingga 640 64-bit register” tujuan umum.

Pada titik mana pun, hanya 32 di antaranya yang langsung terlihat oleh perangkat lunak – 8 adalah satu set register global (salah satunya, g0, terprogram ke nol, sehingga hanya tujuh di antaranya yang dapat digunakan sebagai register) dan 24 lainnya adalah dari tumpukan register. 24 register ini membentuk apa yang disebut jendela register, dan pada function call / return, jendela ini digerakkan naik turun tumpukan register.

Setiap jendela memiliki 8 register lokal dan berbagi 8 register dengan masing-masing jendela yang berdekatan. Register bersama digunakan untuk melewati parameter fungsi dan nilai yang dikembalikan, dan register lokal digunakan untuk mempertahankan nilai lokal di seluruh panggilan fungsi.

“Scalable” dalam SPARC berasal dari kenyataan bahwa spesifikasi SPARC memungkinkan implementasi untuk meningkatkan dari prosesor yang tertanam ke atas melalui prosesor server besar, semua berbagi set instruksi inti (non-istimewa) yang sama.

Salah satu parameter arsitektur yang dapat menskala adalah jumlah jendela register yang diterapkan; spesifikasi memungkinkan dari tiga hingga 32 jendela untuk diimplementasikan, sehingga implementasi dapat memilih untuk menerapkan semua 32 untuk memberikan efisiensi panggilan tumpukan maksimum, atau untuk menerapkan hanya tiga untuk mengurangi biaya dan kompleksitas desain, atau untuk mengimplementasikan beberapa nomor di antara mereka.

Arsitektur lain yang menyertakan fitur file register serupa termasuk Intel i960, IA-64, dan AMD 29000.

Arsitekturnya telah melalui beberapa revisi. Itu memperoleh multiply perangkat keras dan membagi fungsionalitas di Versi 8. 64-bit (pengalamatan dan data) ditambahkan ke spesifikasi SPARC versi 9 yang diterbitkan pada tahun 1994.

Fitur SPARC Versi 8

Dalam SPARC Versi 8, file register titik apung memiliki 16 register presisi ganda. Masing-masing dapat digunakan sebagai dua register presisi tunggal, menyediakan total 32 register presisi tunggal. Pasangan nomor ganjil dari register presisi ganda dapat digunakan sebagai register presisi-quad, sehingga memungkinkan register presisi 8 quad.

Fitur SPARC Versi 9

SPARC Versi 9 menambahkan 16 register presisi ganda (yang juga dapat diakses sebagai register presisi 8 quad), tetapi register tambahan ini tidak dapat diakses sebagai register presisi tunggal. Tidak ada SPARC CPU yang mengimplementasikan operasi quad-precision dalam perangkat keras pada 2004.

Instruksi tagged add and subtract melakukan penambahan dan pengurangan nilai yang memeriksa bahwa dua bit terbawah dari kedua operan adalah 0 dan melaporkan kelebihan jika tidak. Ini dapat berguna dalam implementasi run time untuk ML, Lisp, dan bahasa serupa yang mungkin menggunakan format integer yang ditandai.

Endianness dari arsitektur 32-bit SPARC V8 adalah murni big-endian. Arsitektur SPARC V9 64-bit menggunakan instruksi big-endian, tetapi dapat mengakses data dalam urutan byte big-endian atau little-endian, dipilih pada level instruksi aplikasi (load-store) atau pada level halaman memori (melalui Pengaturan MMU). Yang terakhir ini sering digunakan untuk mengakses data dari perangkat inheren little-endian, seperti yang ada di bus PCI.