SPARC

概要

SPARCはサン・マイクロシステムズにより、1985年に最初に開発された。
SPARCはRISCベースで、特に浮動小数点演算とバイナリレベルの互換性に注意が払われている。サン・マイクロシステムズは当初、自社のワークステーションに、モトローラの68000シリーズのMPUを利用していたが、後にカリフォルニア大学バークレー校のRISC Iをモデルに自社開発に着手。Sun4のSPARC搭載モデルを発表した。
SPARCは、完全ビッグエンディアンのRISCマイクロプロセッサ命令セットアーキテクチャで、SPARCインターナショナル (SPARC International, Inc.) の登録商標である。SPARCインターナショナルはSPARCアーキテクチャの普及と規格検定テストの実施を目的として1989年に設立された組織であり、SPARCアーキテクチャをオープンにすることで寿命を延ばすことを目的としている。テキサス・インスツルメンツ、サイプレス・セミコンダクタ、富士通、サン・マイクロシステムズなどの製造業者がSPARCのライセンス供与を受けている。結果として、SPARCアーキテクチャは完全にオープンとなっており、GPLの下にオープンソースとして実装されたLEONも存在する。
SPARCアーキテクチャの最初の実装はサン・マイクロシステムズのワークステーションで使われた。その後富士通などでも使われ始め、やがてさらに大きなSMPシステムやスーパーコンピュータや制御用としても使われるようになった。SPARCマシンは一般にSolarisオペレーティングシステム（サンがSPARC用に設計したオペレーティングシステム）と結びつけて考えられているが、NEXTSTEP、Linux、FreeBSD、OpenBSD、NetBSDなどのオペレーティングシステムも使用できる。
アーキテクチャは何回か改訂されていて、最も新しいものがバージョン8と9である。1999年10月、富士通とサン・マイクロシステムズはバージョン9をベースにハイエンドSPARCプロセッサの共通仕様（コモン プログラマ リファレンスモデル）を共同開発することを発表した。この共通仕様は、SPARC Joint Programming Specification (JPS1) - Commonalityとして公開されている。また2005年12月、サン・マイクロシステムズはUltraSPARC T1をオープンソース化することを発表した。

特徴

SPARCアーキテクチャはカリフォルニア大学バークレー校のRISC I & II（バークレーRISC、en:Berkeley RISC）の設計に大きな影響を受けている。本来のRISC設計は必要最小限のものであり、機能や命令の種類を可能な限り切り詰め、クロックサイクル毎に命令を実行することを目指した。このため、乗除算命令が無い、分岐遅延スロットが存在するなど、MIPSアーキテクチャと様々な面で類似している。
SPARCプロセッサは通常128本の汎用レジスタを持つ。ただし、任意の時点でソフトウェアから見えるのは128本のうちの32本だけである。そのうち8本は汎用レジスタだが、g0レジスタは常に内容がゼロであり、実質的な汎用レジスタは7本で、常に同じ内容が見える。他の24本はコールスタックの一部をレジスタ化したものである。
これら24本のレジスタは、いわゆるレジスタ・ウィンドウを形成し、関数呼出とリターンの際に、このウィンドウがレジスタスタック上を上下に移動する。各ウィンドウは8本のローカルレジスタを持ち、8本のレジスタを上下の隣接ウィンドウのレジスタと共有する。共有されたレジスタは関数のパラメータ渡しと結果の値を戻すために使われ、ローカルレジスタは、各関数でのローカルな値を保持するために使われる。
SPARCの名称の由来にある「Scalable」とは、組み込み用途からサーバ用途まで同じ仕様を実装し、非特権命令に関しては完全に互換を維持することを意味している。アーキテクチャ上、用途に合わせて規模を変更できる点は、実装するレジスタ・ウィンドウの個数である。仕様では3個から32個までのウィンドウ実装を許可していて、実装者は32個を実装して関数コール性能を向上させるか、3個だけ実装してコンテキスト切り替え性能を向上させるか、あるいはその中間を選択できる。このため、SPARCのアーキテクチャはC言語など構造化プログラミング言語に向けて最適化されているとも言われる。同様なレジスタ・ウィンドウを持つアーキテクチャとして、Intel i960、AMD 29000がある。
SPARCバージョン8（1987年）では、浮動小数点レジスタファイルは16本の倍精度レジスタを持つ。各レジスタは2本の単精度レジスタとしても使用でき、全部で32本の単精度レジスタとなる。2本の倍精度レジスタを四倍精度レジスタとして使用することもでき、全体で8本の四倍精度レジスタとなる。SPARCバージョン9（1995年）ではさらに16本の倍精度レジスタを追加したが、これらは単精度レジスタとしては使用できない（四倍精度レジスタ8本としては使用可能）。
タグ付き加減算命令はLSBの2ビットを無視して加減算を行う。これは、MLやLISPなどのタグ付きの整数フォーマットを使うような言語の実装に有効と思われる。

SPARC64

SPARC64ᵀᴹは、HALコンピュータシステムならびに富士通が開発したプロセッサファミリであり、SPARCシリーズのハイエンドのプロセッサとなっている。
SPARC64 Vは富士通のPRIMEPOWERサーバシリーズで、SPARC64 VIおよびSPARC64 VIIは同社とサン・マイクロシステムズのSPARC Enterprise M3000からM9000に使用された。
富士通のメインフレーム用プロセッサと同じ開発者が設計・開発しているため、メインフレーム用プロセッサのRAS（信頼性、可用性、保守性）技術をすべて継承している。キャッシュメモリ、演算器、レジスタ等、どの回路でエラーが発生しても必ず検出できるよう、ECC、パリティで保護している。エラーが発生すると、ECC、ハードウェア命令リトライにより訂正を行う。
万一、訂正不可能なエラーが発生しても、正常なコア、キャッシュメモリだけで動作し続けることができる。プロセッサの動作を記録する機能も持ち、エラー発生時の原因特定に役立つ。
また、スーパースケーラ、アウト・オブ・オーダー実行、ノンブロッキングキャッシュ制御、ハードウェア・プリフェッチ等の高速化技術を採用している。
SPARC64 VIおよびSPARC64 VIIでは、マルチコア・マルチスレッド対応がなされている。
2009年に発表されたSPARC64 VIIIfxはHPC向け製品である。2-Way SMTからシングルスレッドになったが、コア数は4コアから8コアに増えた。また、メモリーコントローラがプロセッサに統合され、新規に開発されたHPC向け命令拡張「HPC-ACE (High Performance Computing - Arithmetic Computational Extensions)」が実装され、レジスタ本数が増加し、SIMD命令が強化された。
SPARC64 VIIIfxは、2011年6月、同年11月と2期連続でTOP500リスト首位を獲得したスーパーコンピュータの「京」に採用されている。
2011年に発表されたSPARC64 IXfxはSPARC64 VIIIfxと同じくHPC向け製品である。クロック周波数が2GHzから1.848GHzに低下したものの、コア数は8コアから16コアに倍増し、メモリ帯域も64GB/sから85GB/sと向上している。
SPARC64 IXfxは、富士通のスーパーコンピュータPRIMEHPC FX10（2011年11月7日に販売開始、2012年1月より出荷）に採用されている。
SPARC64 Xは、UNIXサーバ向けプロセッサとして初めてHPC-ACEを実装し、富士通のUNIXサーバSPARC M10（2013年4月10日提供開始）に採用された。
SPARC64 X+は、富士通のUNIXサーバSPARC M10（2014年4月8日提供開始）に採用されている。SPARC64 Xのクロック周波数が3.0GHzであるのに対し、SPARC64 X+はそれを3.7GHzに向上させたうえで、暗号処理・十進浮動小数点数（IEEE 754形式とOracle NUMBER形式）・データベース処理をサポートする命令が追加された。また、従来不可能であったcall/returnを跨いだアウトオブオーダー処理を可能としている。

Rock

Rockはサン・マイクロシステムズがかつて自社開発していた、ハイエンド用のマルチコアSPARCモデルの開発コード名である。次期UltraSPARCとも呼ばれた。2007年1月の発表では、最大で16コアを搭載するとされ、2008年後半に提供予定とされた。2008年2月のISSCC 2008では、16コアで最大32スレッドを並行実行し、アウト・オブ・オーダーを採用し、動作周波数2.3GHzを実現するとされたが、提供時期は最適化のために2009年以降へ延期が発表された。更に2009年6月には、2008年の提供が延期されたのは社内で欠陥が発見されたためであり、開発中止が決定されたと報道された。
2010年1月27日、サン・マイクロシステムズはオラクルに吸収合併され、独立企業・法人としては消滅した。