SPARC

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
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(スパーク、Scalable Processor Architecture)は、サン・マイクロシステムズが開発・製造した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用に設計したOS)と結びつけて考えられている。ただし、SPARCプロセッサにはNEXTSTEPLinuxFreeBSDOpenBSDNetBSDのようなオペレーティング・システムも使用できる。

アーキテクチャは何回か改訂されていて、最近のものがバージョン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アーキテクチャと様々な面で類似している。その他、初期のRISCからSPARCが影響を受けた点として分岐遅延スロットがある。

SPARCプロセッサは通常128本もの汎用レジスタを持つ。任意の時点でソフトウェアから見えるのは128本のうちの32本だけである。そのうち8本は汎用レジスタだが、g0レジスタは常に内容がゼロなので、実質的な汎用レジスタは7本で、常に同じ内容が見える。他の24本はコールスタックの一部をレジスタ化したものである。 これら24本のレジスタは、いわゆるレジスタ・ウィンドウを形成する。そして、関数呼出しとリターンの際に、このウィンドウがレジスタスタック上を上下に移動する。各ウィンドウは8本のローカルレジスタを持ち、8本のレジスタを上下の隣接ウィンドウのレジスタと共有する。共有されたレジスタは関数のパラメータ渡しと結果の値を戻すために使われ、ローカルレジスタは、各関数でのローカルな値を保持するために使われる。SPARCの名称の由来にある「Scalable」とは、SPARC仕様では組み込み用途からサーバ用途まで同じ仕様を実装し、非特権命令に関しては完全に互換を維持することを意味している。アーキテクチャ上用途に合わせて規模を変更できる点は、実装するレジスタ・ウィンドウの個数である。仕様では3個から32個までのウィンドウ実装を許していて、実装者は32個を実装して関数コール性能を向上させるか、3個だけ実装してコンテキスト切り替え性能を向上させるか、あるいはその中間を選択できる。このため、SPARCのアーキテクチャはC言語など構造化プログラミング言語に向けて最適化されているとも言われる。同様なレジスタ・ウィンドウを持つアーキテクチャとして、Intel i960AMD 29000がある。

SPARCバージョン8(1987年)では、浮動小数点レジスタファイルは16本の倍精度レジスタを持つ。各レジスタは2本の単精度レジスタとしても使用でき、全部で32本の単精度レジスタとなる。2本の倍精度レジスタを四倍精度レジスタとして使用することもでき、全体で8本の四倍精度レジスタとなる。SPARCバージョン9(1995年)ではさらに16本の倍精度レジスタを追加したが、これらは単精度レジスタとしては使用できない(四倍精度レジスタ8本としては使用可能)。

タグ付き加減算命令はLSBの2ビットを無視して加減算を行う。これは、MLLISPなどのタグ付きの整数フォーマットを使うような言語の実装に有効と思われる。

歴史[編集]

アーキテクチャは何回か改訂されている。ハードウェアによる乗算と除算がバージョン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 CPU95CPU2000ベンチマークの基準システムとして使われている。

SPARCマイクロプロセッサ仕様
モデル 周波数
[MHz]
アーキテクチャ
コア数×スレッド数=スレッド数合計 プロセス
[μm]
トランジスタ数
[百万]
ダイサイズ
[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 0.8 0.8 225 288 2.5 5 2 4 -- --
SuperSPARC I 33–60 V8 1991-1992 1/1 0.8 3.1 -- -- 14.3 5 16 20 0-2048 --
HyperSPARC A 40–90 V8 1993 1/1 0.5 -- -- -- -- 5? 0 8 128-256 --
microSPARC II 60–125 V8 1994 1/1 0.5 2.3 233 321 5 3.3 8 16 -- --
HyperSPARC B 90–125 V8 1994 1/1 0.4 -- -- -- -- 3.3 0 8 128-256 --
SuperSPARC II 75–90 V8 1994 1/1 0.8 3.1 299 -- 16 -- 16 20 1024-2048 --
HyperSPARC C 125–166 V8 1995 1/1 0.35 -- -- -- -- 3.3 0 8 512-1024 --
TurboSPARC 160–180 V8 1995 1/1 0.35 -- -- 416 7 3.5 16 16 512 --
UltraSPARC I 143–200 V9 1995 1/1 0.5 5.2 315 521 30 @167 MHz 3.3 16 16 512-1024 --
HyperSPARC D 180–200 V8 1996 1/1 0.35 -- -- -- -- 3.3 16 16 512 --
UltraSPARC IIs (Blackbird) 250–360 V9 1997 1/1 0.35 5.4 -- 521 25 @250 MHz 2.5 16 16 1024 or 4096 --
UltraSPARC IIs (Sapphire-Black) 360–480 V9 1999 1/1 0.25 5.4 156 521 21 @400 MHz 1.9 16 16 1024–8192 --
UltraSPARC IIi (Sabre) 270–360 V9 1997 1/1 0.35 5.4 148 587 21 1.9 16 16 256–2048 --
UltraSPARC IIi (Sapphire-Red) 333–480 V9 1998 1/1 0.25 5.4 -- 587 21 @440 MHz 1.9 16 16 2048 --
UltraSPARC IIe (Hummingbird) 400–600 V9 2000 1/1 0.18 Al -- -- 370 13 max @500 MHz 1.5-1.7 16 16 256 --
UltraSPARC IIi (IIe+) 550–650 V9 2002 1/1 0.18 Cu -- -- 370 17.6 1.7 16 16 512 --
UltraSPARC III 600–900 V9/JPS1 2001 1/1 0.13 Al 29 330 1368 53 1.6 64 32 8192 --
UltraSPARC IIIcu 1002–1200 V9/JPS1 2001 1/1 0.13 Cu 29 -- 1368 -- 1.6 64 32 8192 --
UltraSPARC IIIi 1064–1593 V9 2003 1/1 0.13 87.5 206 959 52 1.3 64 32 1024 --
UltraSPARC IV 1050–1350 V9 2004 2/1=2 0.13 66 356 1368 108 1.35 64 32 16384 --
UltraSPARC IV+ 1500 V9 2005 2/1=2 0.09 295 336 1368 90 1.1 64 64 2048 32768
UltraSPARC T1 1000–1400 V9/UA 2005 2005 8/4=32 0.09 300 340 1933 72 1.3 8 16 3072 --
UltraSPARC T2 1200–1400 V9/UA 2007 2007 8/8=64 0.065 503 342 1831 95 1.1-1.5 8 16 4096 --
SPARC T3 –1670 V9 2010 16/8=128 0.040 ??? 371 ???? 135 ???? 8 16 6144 --
SPARC T4 2850 - 3000 V9 2011 8/8=64 0.040 855 403 ???? 240 ???? 16 16 128 4096
SPARC64 101–118 V9 1995 1/1 0.4 -- -- -- -- -- 128 128 -- --
SPARC64 II 141–161 V9 1996 1/1 0.34 -- -- -- -- -- 128 128 -- --
SPARC64 GP 250–330 V9 1998 1/1 0.24 17.6 240 -- -- 2.5 64 64 8192 --
SPARC64 GP 400–810 V9 2000 1/1 0.18 Cu
0.15 Cu
30.2 217 -- -- 1.8 128 128 8192 --
SPARC64 V 1100–1350 V9/JPS1 2003 1/1 0.13 Cu 190 289 269 40 1.2 128 128 2048内蔵 --
SPARC64 V 1650–2160 V9/JPS1 2004 1/1 0.09 Cu 400 297 279 65 1 128 128 4096内蔵 --
SPARC64 VI 2150–2400 V9/JPS1 2007 2/2=4 VMT 0.09 Cu 540 421 -- 120 -- 128 128 6144内蔵 --
SPARC64 VII 2400–2520 V9/JPS1? 2008 4/2=8 SMT 0.065 Cu - 445 -- 135 -- 64 64 6144内蔵 --
SPARC64 VIIIfx[1] 2000 V9/JPS1/HPC-ACE 2009 8/1=8 0.045 Cu 760 513 1271 58 -- 32 32 5210内蔵 --
SPARC64 IXfx[2] 1848 V9/JPS1/HPC-ACE 2011 16/1=16 0.040 1870 484 1442 110 -- 32 32 12288内蔵 --
SPARC64 X[3] 3000+ V9/JPS1/HPC-ACE 2012 16x2=32 0.028
CMOS Cu
2950 587.5 1500 ? ? 64x16 64x16 24576 --
SPARC64 X+[4] 3500+ V9/JPS1/HPC-ACE 2013 16x2=32 0.028
CMOS Cu
2990 600 1500 ? ? 64x16 64x16 24576 --
SPARC T5 3600 V9 / OSA2011? 2013 8×16=128 0.028 ? ? ? ? ? 16x8 16x8 128x16 8192
SPARC M5 3600 V9 / OSA2011? 2013 8×6=48 0.028 ? ? ? ? ? 16x6 16x6 128x6 49152
モデル 周波数
[MHz]
アーキテクチャ
コア数×スレッド数=スレッド数合計 プロセス
[μm]
トランジスタ数
[百万]
ダイサイズ
[mm2]
ピン数 電力
[W]
電圧
[V]
L1 Dキャッシュ
[k]
L1 Iキャッシュ
[k]
L2 キャッシュ
[k]
L3 キャッシュ
[k]

SPARC64[編集]

SPARC64™ はHAL Computer Systemsならびに富士通が開発したプロセッサファミリであり、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月より出荷[5][6])に採用されている。

SPARX64 X は、富士通のUNIXサーバ SPARC M10(2013年4月10日提供開始[7])に採用されている。SPARX64 Xは、UNIXサーバ向けプロセッサとして初めて HPC-ACE を実装した。

SPARX64 X+ は、富士通のUNIXサーバ SPARC M10(2014年4月8日提供開始[8])に採用されている。SPARX64 X+のクロック周波数 3.0GHz に対し 3.7GHz に向上させ、暗号処理・十進浮動小数点数(IEEE 754形式とOracle NUMBER形式)・データベース処理をサポートする命令が追加された。また、従来不可能であったcall/returnを跨いだアウトオブオーダー処理を可能としている。

Rock[編集]

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

2010年1月27日、サン・マイクロシステムズはオラクルに吸収合併され、独立企業・法人としては消滅した。

参照[編集]

  1. ^ [http://img.jp.fujitsu.com/downloads/jp/jhpc/090825HotChips21.pdf SPARC64™ VIIIfx Fujitsu's New Generation Octo Core Processor for PETA Scale computing(ペタスケールコンピューティングに向けた富士通の新世代オクトコアプロセッサ)] - HOT CHIP 21 発表資料
  2. ^ White paperスーパーコンピュータ PRIMEHPC FX10 の先進技術
  3. ^ 丸山 拓巳 (2012年8月29日). “SPARC64™ X: Fujitsu’s New Generation 16 Core Processor for the next generation UNIX servers (pdf)”. 富士通. 2014年5月22日閲覧。
  4. ^ 吉田利雄 (2013年8月27日). “SPARC64™ X+: Fujitsu’s Next Generation Processor for UNIX servers (PDF)”. www.hotchips.org. 2014年7月29日閲覧。
  5. ^ PRIMEHPC FX10 : 富士通
  6. ^ 【PC Watch】 富士通、最大23.2PFLOPSを実現するスパコンを発売 ~京で用いた技術をさらに発展
  7. ^ 富士通とオラクル、新UNIXサーバ「Fujitsu M10」を全世界に提供開始”. 富士通 (2013年4月10日). 2014年5月22日閲覧。
  8. ^ 富士通株式会社とオラクル・コーポレーションは、動作周波数最大3.7GHz、16コアの新プロセッサ「SPARC64 X+」を搭載し、従来に比べ約30%性能を強化したUNIXサーバ「SPARC M10-1」、「SPARC M10-4」、「SPARC M10-4S」を4月8日に全世界で販売開始します。”. 富士通ホームページ. 2014年7月29日閲覧。
  9. ^ Sun、「Rock」を2008年にリリース
  10. ^ Sunがサーバー向けハイエンドプロセッサ「Rock」の概要を公表
  11. ^ Sun、Rockのリリースを2009年に延期
  12. ^ 「SunがサーバプロセッサRockの開発打ち切り」の報道
  13. ^ Sun Is Said to Cancel Big Chip Project - The New York Times

外部リンク[編集]

関連項目[編集]