SPARC

SPARC（スパーク、Scalable Processor Architecture）は、サン・マイクロシステムズが開発・製造したRISCベースのマイクロプロセッサであり、その命令セットアーキテクチャの名称である。

現在はSPARCインターナショナルの登録商標であり、複数のメーカーがこのアーキテクチャに基づいたプロセッサを製造している。
オープンソース版がある。

 歴史の概要 
SPARCはサン・マイクロシステムズにより、1985年に最初に開発された。

SPARCはRISCベースで、特に浮動小数点演算とバイナリレベルの互換性に注意が払われている。サン・マイクロシステムズは当初、自社のワークステーションに、モトローラの68000シリーズのMPUを利用していたが、後にカリフォルニア大学バークレー校のをモデルに自社開発に着手。Sun4のSPARC搭載モデルを発表した。

SPARCは、完全ビッグエンディアンのRISCアーキテクチャで、SPARCインターナショナル (SPARC International, Inc.) の登録商標である。SPARCインターナショナルは、SPARCアーキテクチャの普及と規格検定テストの実施を目的として1989年に設立された組織であり、SPARCアーキテクチャをオープンにすることで寿命を延ばすことを目的としている。テキサス・インスツルメンツ、サイプレス・セミコンダクタ、富士通、サン・マイクロシステムズなどの製造業者がSPARCのライセンス供与を受けている。結果として、SPARCアーキテクチャは完全にオープンとなっており、GPLの下にオープンソースとして実装されたも存在する。

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は正統なUNIXが動く信頼性の高いCPUとして長らく幅広いシステムで用いられてきたが、2010年代のクラウドコンピューティングの普及と運用実績の蓄積に伴い、大多数のシステムが汎用的なハードウェアでx86仮想化を用いてソフトウェア的に定義して構築されるようになった結果、SPARCは特に性能要求の厳しい極一部のシステムにのみ用いられるようになった。

 特徴 
SPARCアーキテクチャはカリフォルニア大学バークレー校のRISC I & II（）の設計に大きな影響を受けている。本来の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などのタグ付きの整数フォーマットを使うような言語の実装に有効と思われる。

 仕様の履歴 
アーキテクチャは何回か改訂されている。ハードウェアによる乗算と除算がバージョン8で追加されている。バージョン9ではかなり大幅な改訂が加えられ、64ビット化されたSPARC仕様が完成している。

さらにSPARC Joint Programming Specification (JPS1) では、MMU等のバージョン9では未定義とされた部分の仕様が規定されている。

サン・マイクロシステムズ固有のアーキテクチャ仕様であるUltraSPARC Architecture 2005では、命令とレジスタが追加され、超特権 (hyperprivileged) モードも追加された。この仕様はUltraSPARC T1から始まる新たなUltraSPARCシリーズで実装される。T1はCPUコアを8個備え、全体で32スレッドを実行できる。UltraSPARC Architecture 2005にはサンの標準拡張が含まれるが、それ以外はSPARC V9 Level 1仕様に完全準拠している。このアーキテクチャは1987年のSPARC V7からのアプリケーションのバイナリ互換性を維持している。

2005年12月にサン・マイクロシステムズはUltraSPARC T1の実装をオープンソース化した（OpenSPARC参照）。

SPARCの様々な実装の中で、サン・マイクロシステムズのSuperSPARCとUltraSPARC-1は非常に人気があったことから、SPEC CPU95とCPU2000ベンチマークの基準システムとして使われている。

+ SPARCマイクロプロセッサ仕様モデル周波数[MHz]アーキテクチャ版年コア数×スレッド数=スレッド数合計プロセス[nm]トランジスタ数[百万]ダイサイズ[mm2]ピン数電力[W]電圧[V]L1 Dキャッシュ[k]L1 Iキャッシュ[k]L2キャッシュ[k]L3キャッシュ[k]SF9010/MB86900 (or L64801)14.28–25V71988?1/1CYC7C60125–40V71989?1/1microSPARC I40–50V819921/1800 0.82252882.5524----SuperSPARC I33–60V81991-19921/18003.1----14.3516200-2048--HyperSPARC A40–90V819931/1500--------5?08128-256--microSPARC II60–125V819941/15002.323332153.3816----HyperSPARC B90–125V819941/1400--------3.308128-256--SuperSPARC II75–90V819941/18003.1299--16--16201024-2048--HyperSPARC C125–166V819951/1350--------3.308512-1024--TurboSPARC160–180V819951/1350----41673.51616512--UltraSPARC I143–200V919951/15005.231552130 @167 MHz3.31616512-1024--HyperSPARC D180–200V819961/1350--------3.31616512--UltraSPARC IIs (Blackbird)250–360V919971/13505.4--52125 @250 MHz2.516161024 or 4096--UltraSPARC IIs (Sapphire-Black)360–480V919991/12505.415652121 @400 MHz1.916161024–8192--UltraSPARC IIi (Sabre)270–360V919971/13505.4148587211.91616256–2048--UltraSPARC IIi (Sapphire-Red)333–480V919981/12505.4--58721 @440 MHz1.916162048--UltraSPARC IIe (Hummingbird)400–600V920001/1180 Al----37013 max @500 MHz1.5-1.71616256--UltraSPARC IIi (IIe+)550–650V920021/1180 Cu----37017.61.71616512--UltraSPARC III600–900V9/JPS120011/1130 Al293301368531.664328192--UltraSPARC IIIcu1002–1200V9/JPS120011/1130 Cu29--1368--1.664328192--Ultra SPARC IIIi1064–1593V920031/113087.5206959521.364321024--UltraSPARC IV1050–1350V920042/1=21306635613681081.35643216384--UltraSPARC IV+1500V920052/1=2902953361368901.16464204832768UltraSPARC T11000–1400V9/UA 200520058/4=32903003401933721.38163072--UltraSPARC T21200–1400V9/UA 200720078/8=64655033421831951.1-1.58164096--SPARC T3–1670V9201016/8=12840???371????135????8166144--SPARC T42850 - 3000V920118/8=6440855403????240????16161284096SPARC64101–118V919951/1400----------128128----SPARC64 II141–161V919961/1340----------128128----SPARC64 GP250–330V919981/124017.6240----2.564648192--SPARC64 GP400–810V920001/1180 Cu150 Cu30.2217----1.81281288192--SPARC64 V1100–1350V9/JPS120031/1130 Cu190289269401.21281282048内蔵--SPARC64 V1650–2160V9/JPS120041/190 Cu4002972796511281284096内蔵--SPARC64 VI2150–2400V9/JPS120072/2=4 VMT90 Cu540421--120--1281286144内蔵--SPARC64 VII2400–2520V9/JPS1?20084/2=8 SMT65 Cu-445--135--64646144内蔵--SPARC64 VIIIfx - HOT CHIP 21 発表資料2000V9/JPS1/HPC-ACE20098/1=845 Cu760513127158--32325210内蔵--SPARC64 IXfxWhite paperスーパーコンピュータ PRIMEHPC FX10 の先進技術1848V9/JPS1/HPC-ACE201116/1=164018704841442110--323212288内蔵--SPARC64 X3000+V9/JPS1/HPC-ACE201216x2=3228 CuCMOS2950587.51500??64x1664x1624576--SPARC T53600V9 / OSA2011?20138×16=12828?????16x816x8128x168192SPARC M53600V9 / OSA2011?20138×6=4828?????16x616x6128x649152SPARC M63600OSA201120138×12=9628?????16×1216×12128×1249152SPARC64 X+ (Athena+)SPARC64™ X: Fujitsu’s New Generation 16 Core Processor for the next generation UNIX servers3200–3700OSA2011 / HPC-ACE20142×16=322829906001500392?64×1664×1624MnoneSPARC64 XIfxSPARC64™ XIfx: Fujitsu’s Next Generation Processor for HPC2200OSA2011 / HPC-ACE22015?1×(32+2)=34203750?1001??64×3464×3412M×2noneSPARC M7M7: Next Generation SPARC. Hotchips 26 – August 12, 2014. Stephen PhillipsOracle's SPARC T7 and SPARC M7 Server Architecture. October 20154133OSA201520158×32=25620>10,000????16×3216×32256×2465536SPARC S7SPARC S7 プロセッサ データシート Oracle4270OSA201520168×8=6420>10,000????16×816×8256Dx4256Ix216384SPARC64 XIISPARC64™ XII: Fujitsu’s latest 12 Core Processor for Mission Critical Servers COOL Chips 20 講演資料、富士通 20174250(>4350)SPARC-V9/JPS HPC-ACE VM / SWoC201712×8=96205,4507951860 ?32×9664×9651232MSPARC M8SPARC M8 プロセッサ データシート Oracle5000OSA2015201732×8=25620>10,000????16×3232×32128Dx32256Ix865536モデル周波数[MHz]アーキテクチャ版年コア数×スレッド数=スレッド数合計プロセス[nm]トランジスタ数[百万]ダイサイズ[mm2]ピン数電力[W]電圧[V]L1 Dキャッシュ[k]L1 Iキャッシュ[k]L2キャッシュ[k]L3キャッシュ[k]

 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リスト首位を獲得したスーパーコンピュータの「京」に採用されている馬場敬信『コンピュータアーキテクチャ 改定4版』、オーム社、平成28年11月15日 改定4版 第1刷 発行、80ページ。

2011年に発表されたSPARC64 IXfxはSPARC64 VIIIfxと同じくHPC向け製品である。クロック周波数が2GHzから1.848GHzに低下したものの、コア数は8コアから16コアに倍増し、メモリ帯域も64GB/sから85GB/sと向上している。

SPARC64 IXfxは、富士通のスーパーコンピュータPRIMEHPC FX10（2011年11月7日に販売開始、2012年1月より出荷PRIMEHPC FX10 : 富士通【PC Watch】 富士通、最大23.2PFLOPSを実現するスパコンを発売 ～京で用いた技術をさらに発展）に採用されている。

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を跨いだアウトオブオーダー処理を可能としている。

2019年8月、富士通は「京」の後継となるスーパーコンピューター「富岳」にSPARCとは異なるARMアーキテクチャを使用するA64FXを開発したことを発表した。

2022年2月、富士通はメインフレーム及びUNIXサーバーの開発・販売を2030年までに終了する方針を発表した。SPARC64ファミリ搭載製品はSPARC64 XIIを搭載したUNIXサーバー「SPARC M12」が最後となる予定。

 Rock 
Rockはサン・マイクロシステムズがかつて自社開発していた、ハイエンド用のマルチコアSPARCモデルの開発コード名である。次期UltraSPARCとも呼ばれた。2007年1月の発表では、最大で16コアを搭載するとされ、2008年後半に提供予定とされたSun、「Rock」を2008年にリリース。2008年2月のISSCC 2008では、16コアで最大32スレッドを並行実行し、アウト・オブ・オーダーを採用し、動作周波数2.3GHzを実現するとされたが、提供時期は最適化のために2009年以降へ延期が発表されたSunがサーバー向けハイエンドプロセッサ「Rock」の概要を公表Sun、Rockのリリースを2009年に延期。更に2009年6月には、2008年の提供が延期されたのは社内で欠陥が発見されたためであり、開発中止が決定されたと報道された「SunがサーバプロセッサRockの開発打ち切り」の報道Sun Is Said to Cancel Big Chip Project - The New York Times。

2010年1月27日、サン・マイクロシステムズはオラクルに吸収合併され、独立企業・法人としては消滅したがその後もSPARCの開発は人員を補強して続けられた。

 参照 

 関連項目 
 CPU
 マイクロプロセッサ
 RISC
 京 (スーパーコンピュータ)

 外部リンク 

 SPARC International, inc.（日本語ページあり）
 米国Sun Microsystems（英文であるが一部日本のページもある）
 サン・マイクロシステムズ
 富士通、（SPARC64V 仕様書）、（ホワイトペーパー）

Category:コンピュータアーキテクチャ
*
Category:サン・マイクロシステムズのマイクロプロセッサ
Category:富士通のマイクロプロセッサ
Category:命令セットアーキテクチャ