NEC SX

**SXシリーズ**は、日本電気 (NEC) が開発・提供しているスーパーコンピュータのシリーズで、主戦力級のベクトル型スーパーコンピュータとして、世界で唯一生き残っているシリーズである。2019年現在の最新モデルはSX-Aurora TSUBASA（続き番号としてはSX-11に相当）である。

1983年にSX-2と下位モデルのSX-1を発表、1985年に出荷したのがシリーズのはじまりである。さらに廉価版のSX-0もラインナップされた。その後は主力機の新世代ごとに、末尾の数字を1つずつ増やしていた。サフィックスの数字や英字は、サブモデルや改良版（SX-2A、SX-3Rなど）やサーバモデル（SX-4B、SX-5S）や小型モデル（SX-6i、SX-8i）等を示す。

TOP500首位で話題となった地球シミュレータの初代システムは本シリーズのSX-5、2代目システムはSX-9/E、3代目はSX-ACE、4代目の現行機はSX-Aurora TSUBASAがベースである。

## シリーズ
### SX-2, SX-1
1983年（昭和58年）4月発表。SXシリーズで最初に登場したのはSX-2である（1985年出荷）。SX-2の下位モデルとして、SX-1,SX-0が提供された。改良版として、SX-2A等が開発・出荷された。SX-2は世界で最初にGFLOPSを越えたスーパーコンピュータで、Cray-2に抜かれるまでのひとときであったが世界最高速であった。

### SX-3
1989年（平成元年）4月発表。OSを、ACOS-4（メインフレーム用）ベースのSX-OSから、UnixベースのSUPER-UXに切り替えたモデルである。その後、1990年に低価格モデル、1992年1月に改良型モデル(SX-3 R)を発表。最大4つのAPが構成できる。メモリを共有して動作する。CPも2つ構成できる。ベクトルレジスタの容量、パイプラインの本数、とAPの台数によって、1Lから44まで、10個のサブモデルがあった。

### SX-4
1994年（平成6年）11月発表。SX-3まではバイポーラ論理LSIを使っていたが、SX-4ではCMOS論理LSIを使うようになった。このためサイクルタイムはSX-3Rの2.5nsから8nsに遅くなったが、消費電力と発熱の低下による空冷化と、CPUモジュール1個のチップ数37、面積38.6cm x 45.7cmという高い実装密度により、コストパフォーマンスは向上している。

計算性能は、ノードあたり64GFLOPS、システムあたり最大1024GFLOPSとなった。SX-3同様ノード単位でメモリを共有するが、ノード間では分散したシステム間で協調動作を行う。コンパクトモデル、シングルノードモデル、マルチノードモデルがあった。（1ノードは1つの処理単位、言い替えればオペレーティングシステム (OS) が動作する単位である）

### SX-5

1998年（平成10年）6月発表。シングルノードの最大CPU数は16個(128GFLOPS)、最大共有メモリ容量は128GB、主記憶転送速度は1024GB/sであった。

SX-4と同様にCMOSを採用、集積化を進めチップの処理速度向上施策と共に排熱設計/多層配線などにより全体の処理速度の向上を図ったモデルがSX-5であり、クロックが4ns(250MHz)、ベクトル命令パイプラインが16本と、SX-4に比べCPUモジュール1個あたりの性能が4倍の8GFLOPSとなった。この32チップで構成されたCPUモジュールを1チップLSI化したのが初代地球シミュレータのCPUである。

1999年5月に、ベクトルパイプラインが半分の8本のサーバモデルSX-5Sを発表。2000年6月クロックを約3.2nsに向上させた1CPUモジュール10GFLOPSのモデルを発表。このCPU演算性能強化モデルではシングルノードの最大演算性能は160GFLOPSと向上したが主記憶転送速度は640GB/sに低下した。

### SX-6
2001年（平成13年）10月発表。シングルノードの最大CPU数は8個(64GFLOPS)、最大共有メモリ容量は64GB、主記憶転送速度は256GB/sであった。地球シミュレータのシングルノードを改良(メモリ容量が2倍)したものを用いている。従来はスカラー部とベクトル部は同期動作だったが、地球シミュレータ同様にベクトル部がスカラー部の倍速で動作するように改良された。クロック2ns(500MHz）で動作するスカラ演算ユニットと、クロックが1ns(1GHz)で動作する8本のベクトルパイプラインを持つ、1チップベクトルプロセッサから構成されている。0.15μmCMOSプロセスを採用している。

2001年11月にデスクサイドモデルSX-6i（1CPU、メモリ最大搭載量8GB）を発表。

2003年9月に9GFLOPS CPUとシングルノード当たりの最大メモリ容量が2倍(128GB,主記憶転送速度289GB/s)の機種を発表。

### SX-7
2002年（平成14年）10月発表。シングルノードの最大CPU数は32個(282GFLOPS)、最大共有メモリ容量は256GB、主記憶転送速度は1131GB/sである。基本的にはSX-6のシングルノード内のCPU数と最大共有メモリ量を拡張したモデル。0.15μmCMOSプロセスを採用。

### SX-8
2004年（平成16年）10月発表。シングルノードの最大CPU数は8個(128GFLOPS)、最大共有メモリ容量は64GB(FCRAM)/128GB(DDR2-SDRAM)、主記憶転送速度は512GB/sである。1ノード1モジュールを達成しCPUとメモリモジュール間にSX-6/7まで有った同軸布線20,000本を廃しカード化（ケーブルレス化）を高密度実装(15インチUXGAディスプレイの画素と同じ密度の外部接続ピン密度）を用いて実現した。90nmCMOSプロセスを採用。クロックが SX-6比2倍、スカラ演算ユニット1ns(1GHz), ベクトル演算ユニット0.5ns(2GHz)となり1CPUあたり16GFLOPSを達成。SXシリーズとしては初のSQRT命令のハードウェアサポートを実現。

2005年9月、SX-6iの後継相当のデスクサイドモデルSX-8i発表。SX-6iで不評だった最大搭載メモリ量を32GBと大幅に拡大し、主記憶転送速度は64GB/s。

### SX-8R
2006年（平成18年）10月発表。ベクトルプロセッサ(CPU)の中枢機能であるベクトル加算器と乗算器を倍増し、CPU当たりの性能を従来機に比べ2倍以上の35.2GFLOPS(従来は16GFLOPS)に向上した。同時に、1CPU(シングルコア)当たりの最大ベクトル性能で100GFLOPSを超える1チップベクトルプロセッサを搭載した次期ベクトルスーパーコンピュータを開発中であることを表明した。

### SX-9
2007年（平成19年）10月発表。ペタフロップス時代を視野に入れ開発された。当初の予定通り1チップベクトルプロセッサを採用し、プロセッサ当たりの性能は100GFLOPSを越える。(発表時点ではシングルプロセッサとして世界最高性能)これに伴い、性能当たりの電力効率を大幅に向上させている。65nm CMOSプロセス、11層銅配線採用。最大で8192台のCPUを接続できる。ノード間の接続速度も見直され、回線交換方式からパケット交換方式に変更。最大で256GB/S(128GB/S×2)となった。オペレーティングシステムはSUPER-UXを継続採用している。

### SX-ACE

2011年（平成23年）11月に開発開始を発表。SX-9と比較し、性能当たりの消費電力を1/10に、設置面積を1/5に、CPUコア性能を64GFLOPSに、データ転送速度をCPUコア当たり64GB/sにする事を目指すとしていた。SXシリーズとして初めて複数のCPUコアを1チップ上に集積するマルチCPUコアのLSIを採用した。

名称については、2013年4月のCool Chips 16では決まっていないとのことでNGVと呼んでいたが、筐体の写真にはSX-Xとあった（なお、SX-Xという仮称はSX-3の開発中などで使っている例がある）。発売時にSX-ACEとして発表された。

2013年11月発売、SC13で展示もおこなわれた。「SX-10」は商標登録されており使えなかったため変えたとのことである。。ACEの名は16進法などで10に使う記号であるAを意識している。

### SX-Aurora TSUBASA

#### VE-10
2017年10月25日に、発売予定を発表した。演算器周辺は前世代までと同様のパイプライン演算器だが、ノードをPCIeカードに実装し、それを1枚使用するデスクサイドマシン形態の最小構成から、多数使用するラック実装のスーパコンピュータセンタ向けまでを揃えている。そしてPCIe化にともない、管理側のシステムが変更され、ハードウェアの面では管理側（NECでは、演算側の「ベクトルエンジン」に対し「ベクトルホスト」と呼んでいる）が独自の専用アーキテクチャからx86機ベースに、ソフトウェアの面ではOSはSUPER-UXから、Unix系である点は同じだがLinuxに更新された。8コアのベクトルエンジンは、SX-ACEと比較し、性能当たりの消費電力を1/5に、設置面積を1/10に、CPUコア性能を307GFLOPSに、データ転送速度をCPUコア当たり150GB/sとした。

#### VE-10E
2019年12月、VE-10AEを搭載したSX-Aurora TSUBASA A412-8発表、大学共同利用機関法人 自然科学研究機構 核融合科学研究所のプラズマシミュレータ雷神に搭載。

#### VE-20
2020年6月、VE-20を搭載したSX-Aurora TSUBASA B401-8発表、第4世代地球シミュレータ、東北大学サイバーサイエンスセンターのAOBA-Aに搭載。

#### VE-30
2022年10月8日に、VE-30を搭載したSX-Aurora TSUBASA C401-8発表。

## アーキテクチャ

アーキテクチャはSX-3以前(SX-2まで)とそれ以降は多少差はあるが、ここでは全体的な特徴について説明する。大きく分けて2つのユニットから構成されている、非対称密結合マルチプロセッサ構成をとっている。また同時期に開発された他系統の機種と比較すると、日立のもの（HITAC S-810）と対照的で、S-810は既存メインフレームの拡張という形態であるのに対し、SXシリーズでは制御部のメインフレームとは分離独立した形態をとった。

また、モデル毎に高速化をはかる機能が追加されてきている。たとえば、パイプラインの増加、命令セットの強化(8バイト演算命令の追加など)、データのロード/ストア用のバスの分離や強化などがあげられる。

### 制御プロセッサ(CP)
#### SX-2までのアーキテクチャ
いわゆる汎用コンピュータ的な仕事をする所である。オペレーティングシステム (OS) はこのプロセッサ上で実行される。データの入出力、プログラムの編集やコンパイル作業などを行う。SX-2まではACOS-4系の汎用コンピュータである。CPはさらに、通常の演算を行うEPUとシステム制御部(SCU)から構成される。入出力を行うIOPもSCUから接続される。
#### SX-3以降のアーキテクチャ
SX-3以降はUP4800等のUNIXサーバとなった。CP単独で処理をする、というようなイメージではなくなった。APの制御、入出力処理の制御を行うためのプロセッサという役割になった。

### 演算プロセッサ(AP)
数値演算のプログラムを実行するだけのプロセッサである。アーキテクチャはSXシリーズ用に新たに開発された。RISC形式風の命令セットであり、1命令は4バイトまたは8バイトである。基本的に64ビットマシンである。大きく分けてスカラ演算ユニット(SU)、ベクトル演算ユニット(VU)とインターフェースユニット(IU)から構成される。

APはSX-2,SX-1,SX-0は1システムに1ユニットであるが、SX-3以降は1システムに複数ユニット構成できるようになった。そのため、各APは共有メモリ型マルチプロセッサを構成している。

数値演算を高速に行うために、ベクトル演算機能が用意されている。スカラ演算は、RISC風のため、SX-2シリーズにおいては、同社で当時最新の汎用コンピュータ S1000の3.5倍以上を目標に設計されていた。ベクトル演算機能とスカラ演算機能(汎用レジスタ)は独立しているため、並列に動作可能である。キャッシュメモリは、命令キャッシュとオペランドキャッシュが独立している。

データを高速に処理するための工夫が用意されている。たとえば、SX-2,1においては、メモリは512ウェイインターレース(最大)構成をとっていて、6nsクロックのスピードと共に、最大11Gバイト/sのデータ転送能力(SX-2において)、1.3G FLOPS(SX-2)の性能を誇る。クロックはSX-3Rで2.5nsまで高速化されたが、SX-4ではデバイスがCMOSになったため、8nsまで遅くなった。

#### レジスタ
SX-2のレジスタはおおよそ以下のとおりである。なお、SX-1ではベクトル関係のレジスタはSX-2の半分になる。SX-3以降も基本的にはこの構成をとっている。
* スカラレジスタ(64ビット×128個)
* ベクトルレジスタ(256語×40個:80Kバイト)
* ベクトルマスク(256ビット×8個)
* その他(カウンタ類)
##### ベクトル演算機能
ベクトル演算機能は4つのパイプライン(SX-3まで、SX-4は最大8つ、モデルによって本数は変わる)を持っている。そのため、1サイクルで複数の演算を同時に行うことが出来る。また、ベクトル演算機能は、加算、乗算、論理演算、シフト演算の4つの演算機能が別々に用意されている。そのため、それぞれの演算を独立して行うことが出来る。たとえば、

```fortran
DO 100 I = 1, 100
     C(I) = A(I) + B(I)
 100 CONTINUE
```

というようなDOループはベクトル演算命令の1マシン命令にコンパイルされ、実行される(ベクトル化。詳しくはベクトル化のページを参照のこと)。もちろん、浮動小数点数だけではなく整数に対してもベクトル処理が可能である。

また、ベクトルマスク機能を使い、ベクトル内で演算対象のものだけをふるい分けたり、ベクトルをマスクの価によって圧縮、伸張するような演算を行うことが出来る。そのため、より高速な演算が可能である。この機能は、DOループ内にあるIF文内のベクトル演算(条件付き演算)を高速に行うために用意されている。

そのほか、累和を高速に求める機能や、浮動小数点数の0.5倍/2倍を高速に行う機能も用意されている。
##### スカラ演算機能
スカラ演算機能もパイプライン化で高速化されている。

さらに、SX-3では、命令のアウト・オブ・オーダー実行機能が加わった。

SX-4ではスーパースカラー化されている。同時に2命令のデコード、フェッチと分岐を含め、最大4命令が同時に実行可能である。固定小数点数演算用の演算器が2つ、浮動小数点数演算用の演算器が1つ、乗算器が1つある。固定小数点数演算は1マシンサイクル、浮動小数点数演算も2マシンサイクルで実行可能であり、極めて高速な演算が可能になっている。

#### 命令セット
命令セットは3オペランド形式である。演算はすべてレジスタで行なわれる。RISC風のため、演算命令とロード/ストア命令が分かれている(メモリ上のデータをレジスタ上の値と演算を行う命令はない)。

スカラ演算用の命令とベクトル演算用の命令が分かれている。スカラ演算用の命令(RX型)は1命令1ワード(4バイト)または2ワード（8バイト）である。1バイトのオペコードの後に、3つのオペランドが続く。オペランドはレジスタ、インデックスレジスタ、あるいは即値である。

ベクトル演算用の命令(RR型/RV型)も、1バイトのオペコードの後に3つのオペランドが続く。主な命令は
* ベクトルのロード/ストア
* 四則演算
* 論理演算/シフト演算
* 整数←→浮動小数点数変換
* マスク制御/マスク演算
などが用意されている。演算は、ベクトルとベクトルの演算だけではなく、ベクトルとスカラーの演算なども用意されている。このため、ベクトルに特定の価を足したり掛けたりするようなDOループが、ハードウェア的な1命令で実行できる。

また、数値演算専用のプロセッサのため、いわゆる10進演算等の命令は用意されていない。基本的にワード(64ビット)単位の処理であるが、ロード/ストア命令についてはバイト/16ビット単位のものが用意されている。

SX-3では、64ビット整数演算命令、最大値/最小値検索命令等が追加されている。

SX-4では、浮動小数点演算に、IBM形式、CRAY形式の他に、IEEE形式もサポートするようになった。

ベクトル命令は、複数のオペランドを持つが、1つのベクトルのオペランドを全て処理してから次のベクトル命令を実行すると処理が遅くなる。SXシリーズでは、1つのベクトルのオペランドが演算を終えた後、次のベクトル命令の処理を開始する機能がハードウェアによって用意されている。このため、ベクトル命令の高速化が可能である。

## 実装
### 筐体形状
SX-2(SX-1を含む)では、配線を最適化するために、APとメモリ部分がY型になっている。APの先に、CPやIOPが接続される。冷却機構は別筐体である。水冷のため、SX-2本体はそばによっても熱を感じず、ひんやりとして、音も静かであるが、冷却機構の空気吹き出し口(機構の上部)は猛烈に熱い風が吹き上げている。

SX-3では各筐体が平行に並び、その装置間をインタフェースユニットが接続している。

SX-4では、1つのユニットの筐体が人の形に似た、非常に特徴のある形状になっている。
### 水冷方式
SX-2以降、AP、CPとも主要部分は水冷方式となっている。SX-2では複数のICを集積したICモジュールに10cm四方の水冷ユニットが取り付けられている。
SX-3では、APのみLCM（リキッドクーリングモジュール）と呼ばれる30×20cm程度のモジュールが採用され複数の集積回路と水冷機構が一体となっている。CPはUNIXサーバとなったため空冷化となり、外部に設置する設備の大幅な縮小が可能となった。

SX-4ではチップがCMOSになったため、空冷になっている。

## ソフトウェア
### OS
#### SX-2までのOS
SX-2、SX-1は、ACOS-4をベースとしたSX-OSというオペレーティングシステム (OS)で動作している。
ACOS-4系で提供されている機能がほとんどすべて動作可能である。また、ACOS-4/MVP XE と疎結合マルチプロセッサ構成をとることが出来る(ディスクの共有)。

さらに、チェックポイントリスタート機能を有している。この機能を使うことで、長期間処理を行うジョブを分割して実行したり、出力制限値を越えてしまってアボートしたジョブのリスタートも可能になる。長い数値計算を行う処理には便利である。
#### SX-3以降のOS
SX-3以降は、メインフレームベースのオペレーティングシステム (OS) をやめ、UNIXベース（System Vベース）のOS、SUPER-UXとなった。ベースは System V ではあるが、4.3BSDの機能を取り入れ、ネットワーク関係等が強化されているTCP/IPだけではなく、OSIへの対応もなされている。そのほかの特徴は以下のとおり。
; マルチプロセッサ対応
: カーネルのマルチスレッド化を行なっている。
; 2つのページサイズ
: 32Kバイトと1Mバイトのページサイズを提供している。UNIXコマンドのような小さなプログラムは32Kバイト、科学技術計算には1Mバイトのページサイズを割り当てている。どちらを使うかは、実行可能バイナリファイルに設定されている。
; オーバレイ機能
: メモリを効率的に使うため、サブルーチン単位にオーバレイ機能を使うことが出来る。この機能はソースプログラムを変更することなく実行可能である。
; スケジューリング機能の大幅な変更
: 通常の処理(UNIXコマンドによる対話的な処理)と、数値演算のようなバッチ的な処理のスケジューリングを適切に行うために、ドメイン、スケジューリンググループという機能を用意している。
:; ドメイン
:: 会話処理ドメインとバッチ処理ドメインが用意されている。それぞれに対して、CPU配分、メモリ配分を設定できる。
:; スケジューリンググループ
:: ユーザ毎にスケジュール方法を設定できる。従来のUNIX風のスケジュール方法の他に、固定的にスケジュールを設定する機能も、バッチ的な処理のために用意されている。
:; ファイルシステムの改良
:: ファイルシステムはs5fs（System V固有のファイルシステム）をベースに改良したSFS (Supercomputing File System) である。このファイルシステムは、基本的なUNIXのファイルシステムをベースに、大量の入出力 (I/O) に対応するように改良されている。たとえば、I/O単位がブロックをまとめたクラスタ単位である、カーネルのバッファを使わず、直接ユーザアプリケーションとI/Oを行う、仮想ボリューム機能を用いて、ディスク容量より大きなファイルを作成できるなどである。
:; NQS機能
:: バッチ処理を効率的に行うために、NQS(Network Queuing System)というジョブ管理システムが提供されている。

SX-4対応のOSでは、SVR4.2MP (System V Release 4.2 MP) 対応になった。また、並列処理も、SX-3ではタスクライブラリというFortran指向のライブラリを用意していたが、SX-4ではPOSIXスレッドを使えるようになった。また、より並列度が上がるように、粒度を向上したり、アトミック命令が追加されている。

### コンパイラ
#### SX-2まで
SX-2、SX-1では、AP上で実行するバイナリを生成する FORTRAN77/SXと、CP上で実行可能なバイナリを生成するFORTRAN77が提供されている。CP上では、FORTRAN77以外にもCOBOLやPL/Iなど、他の言語もコンパイル、実行可能である。しかし、AP上で処理可能な高水準言語は、FORTRAN77しかない。

CP上実行可能なFORTRANは、デバッグ用途である。また、FORTRANのソースコードを整形するBEAUTIFIERや、動作を解析する(動的/静的)ANALIZER/SX、対話的にベクトル化を推進するVECTRIZER/SXも用意されている。
#### SX-3以降
SX-3以降のSUPER-UX向けには、新しいハードウェアに対応して、コンパイラも機能強化されている。たとえば、8バイト整数、ベクトルレジスタの容量拡大対応などである。機能的にも、外部手続きをインラインで展開したり、行列演算を認識して、関数呼び出しに変えたり、ループ数を減らして、ループ内演算を増やして(ループアンローリング)、メモリアクセスの軽減、ベクトルレジスタの効率的な利用をはかるように改良されている。

さらに、APが複数あることを利用し、並列実行を行う機能が用意されている。並列実行は、サブルーチンレベルで並列化を行う、マクロタスク機能、ループ内演算を並列化する、マイクロタスク機能がある。マクロタスク機能はソースコードレベルでの修正が必要だが、マイクロタスク機能機能では自動的に並列化が行なわれる。さらに、より高度な並列化を行うために、並列化を指示するような命令や、並列実行のための補助的な命令も追加されている。

また、SUPER-UXでベースとなっているオペレーティングシステム (OS) がUNIXであるので、UNIXに関係が深いC言語もサポートしている。C言語でもFORTRANと同様、ベクトル化機能を有効に使えるようなコード生成を行なえるようになっている。

性能向上のためのツールは、新たに、ANALIZER-P/SXと、PARALLELIZER/SXが提供されている。

SX-4からはFORTRAN90が提供されている。
また、SX-4用のコンパイラは、SX-4で新たに追加された命令や、高速化のためのアーキテクチャの改良を取り込んで最適化を行なっている。さらに、マルチノードにも対応している。

## アメリカによるダンピング課税問題
SXシリーズは、アメリカ合衆国 (米国) においてダンピングを行っていると大幅に課税されたことがある。これは、当時、米国社製のスーパーコンピュータに比べ、SX-3等の価格が安かった為でもある。当時、米国にはSX-3は殆ど輸出されておらず、専ら米国国外でSX-3の出荷が順調に進み、米国社製のスーパーコンピュータの販売がしにくくなった為でもある。

米国などのスーパーコンピュータメーカでは制御系を専用マシンで補わなければならないためこの製作が高額であった。これに対し日本メーカーは自社の汎用マシンで補い、さらに、SX-3等では小型汎用サーバに置き換える事により大幅な価格差が生じる結果となった。

米国では軍事産業保護の観点からスーパーコンピュータも保護すべき対象となっていた為、安価であった日本のスーパーコンピュータの導入は一向に進まなかった。
後に、米国国内でも安価なスーパーコンピュータが使えない事に抗議の声が上がり、この問題は消え去ることとなった。2001年2月28日に、日本電気 (NEC) はクレイ社にSXシリーズをOEMすることで合意している。なお、詳しい経緯については日米スパコン貿易摩擦を参照されたい。

## SX シリーズ システム
SX-4, SXシリーズ以降のスーパーコンピュータは二重並列構成である。複数のCPUは並列ベクトル処理ノードに配置される。
これらのノードは標準的なSMP構成である。

## 参考文献
* SXシステムの開発背景、NEC技報,Vol39 No1/1986
* SXシステムの概要、NEC技報,Vol39 No1/1986
* SXシステムの科学演算処理装置、NEC技報,Vol39 No1/1986
* SXシステムの制御プログラム、NEC技報,Vol39 No1/1986
* SX-3シリーズの開発背景と概要、NEC技報,Vol45 No2/1992
* SX-3シリーズのハードウェア構成、NEC技報,Vol45 No2/1992
* オペレーティングシステム SUPER-UX NEC技報,Vol45 No2/1992
* SX-3シリーズの言語プロセッサと開発支援ツール、NEC技報,Vol45 No2/1992
* SX-4シリーズの開発背景と概要 NEC技報,Vol48 No11/1995
* SX-4シリーズのハードウェア構成 NEC技報,Vol48 No11/1995
* オペレーティングシステム SUPER-UX NEC技報,Vol48 No11/1992
* SX-4シリーズの言語プロセッサと開発支援ツール、NEC技報,Vol48 No11/1992

## 脚注

## 外部リンク
* NECのSXシリーズのページ