SPARC 開発者
サン・マイクロシステムズ ビット数
64ビット (32 → 64) 発表
1985年 バージョン
V9(1993年) デザイン
RISC タイプ
Register-Register エンコード
Fixed ブランチ
Condition code エンディアン
Bi (Big → Bi) ページサイズ
8 KiB 拡張
VIS 1.0, 2.0, 3.0 オープン
Yes レジスタ 汎用
31 (G0 = 0; non-global registers use レジスタ・ウィンドウ ) 浮動小数点
32
UltraSPARC IIマイクロプロセッサ
SuperSPARC TMX390Z50GF H359403658C
SPARC (スパーク、S calable P rocessor Arc hitecture )は、サン・マイクロシステムズ が開発・製造したRISC ベースのマイクロプロセッサ であり、その命令セットアーキテクチャ の名称である。
現在は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は正統なUNIX が動く信頼性の高いCPU として長らく幅広いシステムで用いられてきたが、2010年代 のクラウドコンピューティング の普及と運用実績の蓄積に伴い、大多数のシステムが汎用的なハードウェアでx86仮想化 を用いてソフトウェア的に定義して構築されるようになった結果、SPARCは特に性能要求の厳しい極一部のシステムにのみ用いられるようになった[ 1] 。
特徴
SPARCアーキテクチャはカリフォルニア大学バークレー校 のRISC I & II(バークレー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 などのタグ付きの整数フォーマットを使うような言語の実装に有効と思われる。
仕様の履歴
アーキテクチャは何回か改訂されている。ハードウェアによる乗算と除算がバージョン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–25
V7
1988?
1/1
CYC7C601
25–40
V7
1989?
1/1
microSPARC I
40–50
V8
1992
1/1
800
0.8
225
288
2.5
5
2
4
--
--
SuperSPARC I
33–60
V8
1991-1992
1/1
800
3.1
--
--
14.3
5
16
20
0-2048
--
HyperSPARC A
40–90
V8
1993
1/1
500
--
--
--
--
5?
0
8
128-256
--
microSPARC II
60–125
V8
1994
1/1
500
2.3
233
321
5
3.3
8
16
--
--
HyperSPARC B
90–125
V8
1994
1/1
400
--
--
--
--
3.3
0
8
128-256
--
SuperSPARC II
75–90
V8
1994
1/1
800
3.1
299
--
16
--
16
20
1024-2048
--
HyperSPARC C
125–166
V8
1995
1/1
350
--
--
--
--
3.3
0
8
512-1024
--
TurboSPARC
160–180
V8
1995
1/1
350
--
--
416
7
3.5
16
16
512
--
UltraSPARC I
143–200
V9
1995
1/1
500
5.2
315
521
30 @167 MHz
3.3
16
16
512-1024
--
HyperSPARC D
180–200
V8
1996
1/1
350
--
--
--
--
3.3
16
16
512
--
UltraSPARC IIs (Blackbird)
250–360
V9
1997
1/1
350
5.4
--
521
25 @250 MHz
2.5
16
16
1024 or 4096
--
UltraSPARC IIs (Sapphire-Black)
360–480
V9
1999
1/1
250
5.4
156
521
21 @400 MHz
1.9
16
16
1024–8192
--
UltraSPARC IIi (Sabre)
270–360
V9
1997
1/1
350
5.4
148
587
21
1.9
16
16
256–2048
--
UltraSPARC IIi (Sapphire-Red)
333–480
V9
1998
1/1
250
5.4
--
587
21 @440 MHz
1.9
16
16
2048
--
UltraSPARC IIe (Hummingbird)
400–600
V9
2000
1/1
180 Al
--
--
370
13 max @500 MHz
1.5-1.7
16
16
256
--
UltraSPARC IIi (IIe+)
550–650
V9
2002
1/1
180 Cu
--
--
370
17.6
1.7
16
16
512
--
UltraSPARC III
600–900
V9/JPS1
2001
1/1
130 Al
29
330
1368
53
1.6
64
32
8192
--
UltraSPARC IIIcu
1002–1200
V9/JPS1
2001
1/1
130 Cu
29
--
1368
--
1.6
64
32
8192
--
Ultra SPARC IIIi
1064–1593
V9
2003
1/1
130
87.5
206
959
52
1.3
64
32
1024
--
UltraSPARC IV
1050–1350
V9
2004
2/1=2
130
66
356
1368
108
1.35
64
32
16384
--
UltraSPARC IV+
1500
V9
2005
2/1=2
90
295
336
1368
90
1.1
64
64
2048
32768
UltraSPARC T1
1000–1400
V9/UA 2005
2005
8/4=32
90
300
340
1933
72
1.3
8
16
3072
--
UltraSPARC T2
1200–1400
V9/UA 2007
2007
8/8=64
65
503
342
1831
95
1.1-1.5
8
16
4096
--
SPARC T3
–1670
V9
2010
16/8=128
40
???
371
????
135
????
8
16
6144
--
SPARC T4
2850 - 3000
V9
2011
8/8=64
40
855
403
????
240
????
16
16
128
4096
SPARC64
101–118
V9
1995
1/1
400
--
--
--
--
--
128
128
--
--
SPARC64 II
141–161
V9
1996
1/1
340
--
--
--
--
--
128
128
--
--
SPARC64 GP
250–330
V9
1998
1/1
240
17.6
240
--
--
2.5
64
64
8192
--
SPARC64 GP
400–810
V9
2000
1/1
180 Cu 150 Cu
30.2
217
--
--
1.8
128
128
8192
--
SPARC64 V
1100–1350
V9/JPS1
2003
1/1
130 Cu
190
289
269
40
1.2
128
128
2048内蔵
--
SPARC64 V
1650–2160
V9/JPS1
2004
1/1
90 Cu
400
297
279
65
1
128
128
4096内蔵
--
SPARC64 VI
2150–2400
V9/JPS1
2007
2/2=4 VMT
90 Cu
540
421
--
120
--
128
128
6144内蔵
--
SPARC64 VII
2400–2520
V9/JPS1?
2008
4/2=8 SMT
65 Cu
-
445
--
135
--
64
64
6144内蔵
--
SPARC64 VIIIfx[ 2]
2000
V9/JPS1/HPC-ACE
2009
8/1=8
45 Cu
760
513
1271
58
--
32
32
5210内蔵
--
SPARC64 IXfx[ 3]
1848
V9/JPS1/HPC-ACE
2011
16/1=16
40
1870
484
1442
110
--
32
32
12288内蔵
--
SPARC64 X[ 4]
3000+
V9/JPS1/HPC-ACE
2012
16x2=32
28 Cu CMOS
2950
587.5
1500
?
?
64x16
64x16
24576
--
SPARC T5
3600
V9 / OSA2011?
2013
8×16=128
28
?
?
?
?
?
16x8
16x8
128x16
8192
SPARC M5
3600
V9 / OSA2011?
2013
8×6=48
28
?
?
?
?
?
16x6
16x6
128x6
49152
SPARC M6
3600
OSA2011
2013
8×12=96
28
?
?
?
?
?
16×12
16×12
128×12
49152
SPARC64 X+ (Athena+)[ 5]
3200–3700
OSA2011 / HPC-ACE
2014
2×16=32
28
2990
600
1500
392
?
64×16
64×16
24M
none
SPARC64 XIfx[ 6]
2200
OSA2011 / HPC-ACE2
2015?
1×(32+2)=34
20
3750
?
1001
?
?
64×34
64×34
12M×2
none
SPARC M7[ 7] [ 8]
4133
OSA2015
2015
8×32=256
20
>10,000
?
?
?
?
16×32
16×32
256×24
65536
SPARC S7[ 9]
4270
OSA2015
2016
8×8=64
20
>10,000
?
?
?
?
16×8
16×8
256Dx4 256Ix2
16384
SPARC64 XII[ 10]
4250(>4350)
SPARC-V9/JPS HPC-ACE VM / SWoC
2017
12×8=96
20
5,450
795
1860
?
32×96
64×96
512
32M
SPARC M8[ 11]
5000
OSA2015
2017
32×8=256
20
>10,000
?
?
?
?
16×32
32×32
128Dx32 256Ix8
65536
モデル
周波数 [MHz]
アーキテクチャ 版
年
コア数×スレッド数=スレッド数合計
プロセス [nm]
トランジスタ数 [百万]
ダイサイズ [mm2]
ピン数
電力 [W]
電圧 [V]
L1 Dキャッシュ [k]
L1 Iキャッシュ [k]
L2キャッシュ [k]
L3キャッシュ [k]
SPARC64
「京」のSPARC64 VIIIfx(大阪市立科学館 )
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 リスト首位を獲得したスーパーコンピュータ の「京 」に採用されている[ 12] 。
2011年 に発表されたSPARC64 IXfx はSPARC64 VIIIfxと同じくHPC向け製品である。クロック周波数が2GHzから1.848GHzに低下したものの、コア数は8コアから16コアに倍増し、メモリ帯域も64GB/sから85GB/sと向上している。
SPARC64 IXfxは、富士通のスーパーコンピュータPRIMEHPC FX10 (2011年 11月7日 に販売開始、2012年 1月 より出荷[ 13] [ 14] )に採用されている。
SPARC64 X は、UNIXサーバ向けプロセッサとして初めてHPC-ACEを実装し、富士通のUNIXサーバSPARC M10(2013年4月10日提供開始[ 15] )に採用された。
SPARC64 X+ は、富士通のUNIXサーバSPARC M10(2014年4月8日提供開始[ 16] )に採用されている。SPARC64 Xのクロック周波数が3.0GHzであるのに対し、SPARC64 X+はそれを3.7GHzに向上させたうえで、暗号処理・十進浮動小数点数(IEEE 754 形式とOracle NUMBER形式)・データベース処理をサポートする命令が追加された。また、従来不可能であったcall/returnを跨いだアウトオブオーダー処理を可能としている。
2019年8月、富士通は「京」の後継となるスーパーコンピューター「富岳 」にSPARCとは異なるARMアーキテクチャ を使用するA64FX を開発したことを発表した[ 17] 。
2022年2月、富士通はメインフレーム及びUNIXサーバーの開発・販売を2030年までに終了する方針を発表した[ 18] 。SPARC64ファミリ搭載製品はSPARC64 XIIを搭載したUNIXサーバー「SPARC M12」が最後となる予定。
Rock
Rockはサン・マイクロシステムズがかつて自社開発していた、ハイエンド用のマルチコアSPARCモデルの開発コード名である。次期UltraSPARCとも呼ばれた。2007年1月の発表では、最大で16コアを搭載するとされ、2008年後半に提供予定とされた[ 19] 。2008年2月のISSCC 2008では、16コアで最大32スレッドを並行実行し、アウト・オブ・オーダー を採用し、動作周波数2.3GHzを実現するとされたが、提供時期は最適化のために2009年以降へ延期が発表された[ 20] [ 21] 。更に2009年6月には、2008年の提供が延期されたのは社内で欠陥が発見されたためであり、開発中止が決定されたと報道された[ 22] [ 23] 。
2010年 1月27日 、サン・マイクロシステムズはオラクル に吸収合併され、独立企業・法人としては消滅したがその後もSPARCの開発は人員を補強して続けられた[ 24] 。
参照
関連項目
外部リンク
同社はオラクル により2010年に買収された。 人物 ハードウェア
ワークステーション、 サーバ プロセッサ ネットワーク コンピュータ その他
ソフトウェア HPC 研究 教育 コミュニティ
カテゴリ