湯淺 太一

京都大学大学院情報学研究科 教授

yuasa@kuis.kyoto-u.ac.jp

当時：豊橋技術科学大学工学部 助教授

アの開発を並行して行った．ハードウェアは 1992 年 11月に完成し，シミュレータを使って並行開発していたソフトウェアを実機に移行し，システム全体が完成し1990 年から 1992 年にかけて，筆者が豊橋技術科学大たのが 1993 年春であった．

学に在籍していたときに開発した SIMD（Single-Instruction, Multiple-Data）型並列計算機である 1），2）．計算機の性能を飛躍的に向上させるための技術として，SIMDSM-1 のハードウェア構成を型並列計算機が注目されていた時代であり，いくつか-1 に示す．並列計算をの商用機も存在した．筆者らのグループでも，これら行う実体が PE（Processing Element）である．各 PE は，の商用機を使って，SIMD 計算のさまざまな実験をした

8 ビット演算を行う ALU，128 バイトの大容量汎用レジいと考えていたが，高価であるうえに，詳細を調べてスタ，柔軟な SIMD 計算機能を提供するさまざまな専用

いくうちに，プログラミング上の制約が厳しいことがレジスタなどから構成されている．実装上は，4 台の PE分かってきた．そこで，価格的にも仕様的にも手軽にが 1 チップに収められ，約 1 メートル四方のボード 1 枚

SIMD 計算の実験・研究ができるマシンを開発しようとに 16 枚のチップが乗り，全部で 16 枚のボードが，約いうことになった．

1 メートル四方の立方体の筐体に収められている（-2）．

開発にあたっては，住友金属工業から全面的な協力

計 1,024 台の PE が並列に動作する．各 PE チップにはをいただいた．マシン名の「SM」は，SIMD マシンの S

4MB の DRAM が付随しており，PE あたり 1MB の局所と M をとったものであると同時に，住友金属工業の英メモリとして使われる．SM-1 全体では，1GB の大容量語名 Sumitomo Metal の頭文字でもある．マシン名を決である．

めたのは，開発作業がかなり進んだ後だった．寝食を並列計算部を制御するフロントエンドには，SUN 4を忘れて作業をしていたので，サドマドの意味もなくは使用した．当時の SPARC チップには，コプロセッサイない．開発チームのメイリングリストの名前は，sm-ンタフェースを 2 つ備えているものがあった．片方は外clubであった．

付けの FPU のために使用されていたが，もう片方は未ハードウェアの基本設計は，1990 年 4 月に開始した．

使用であった．SPARC の命令セットには，両方のコプ竹岡尚三氏（現在（株）アックス社長）と松田元彦氏（現ロセッサのためのスペースが用意されていたが，通常在，住友金属工業（株）総合研究所）と筆者の 3 人が技科は未使用のコプロセッサ命令を発行することはない．

大の 1 室に閉じこもって，ホワイトボードに書き込んだ

そこで，専用のコプロセッサを空いている方のインタ設計図を毎日のように書き換えていった．同年 8 月に設フェースに接続し，これに対して発行された命令を計がほぼ完了し，ホワイトボードのコピーをとって，SIMD 計算命令と解釈して，並列計算部に送るように改VLSI チップの設計，マイクロ・コード作成，シミュレ造した．

ータ開発などの分担作業を開始した．ハードウェアのSIMD 計算命令は一種のマクロ命令であり，これを受詳細設計と製作はプロに任せて，大学ではソフトウェ

け取ったシーケンサが，対応するマイクロ命令列に置

43巻2号 情報処理 2002年2月−1−

フロントエンド(SUN4)
FPU

SPARC
コプロセッサ命令
専用コプロセッサ
マクロ命令

並列計算部

シーケンサ
マイクロ命令-2 SM-1

PEPEPEPEPE

PE

PE

PE

DRAM

ネットワーク的に指定するものである．「並 C」のコンパイラは，Gnu
C コンパイラを改造した本格的なものであり，開発したソフトウェアの中で，最も時間と労力を要した．

DRAM

前述のように，SM-1 のソフトウェアは，ハードウェ
アの開発と並行して行った．これを可能にしたのが，-1 ELIS-8100

基本設計の完成直後に開発したシミュレータである．
これは，並列実行部の動作を機械語レベルで模擬実行
き換えて，マイクロ命令を 1 つずつ全 PE に送り，これし，実機のフロントエンドに使ったのと同じモデルのを全 PE が並列に実行する．マイクロコードを入れ換え

SUN 4 の上で動作した．SIMD 命令が発行されるとトラることによって，多様な並列計算機として動作するが，ップをかけ，命令に従って，全 PE の状態を変化させて標準的なマイクロコードセットでは，フロントエンドリターンする，という簡単な仕組みであったが，実機の SPARC と類似の 32 ビットのマクロ命令セットを提供とほとんど同様に動作した．このために，シミュレーした．たとえば，並列計算のための加算命令はタから実機への移行は，意外なほどあっけなく終わっ

add %p1, %p2, %p3てしまった．と記述する．ここで %p1 等は，各 PE の持っている汎用レジスタの指定である．
試作機は 2 台製作した．1 台は技科大で画像処理や素因数分解，Kyoto Common Lisp を拡張した並列 Lisp を並列計算部は，フロントエンドから見れば単なるコ使った数式処理などの実験に用いられた．もう 1 台は慶プロセッサなので，OS を開発する必要がなかった．既

應義塾大学の安村通晃氏のグループが並列 Fortran を開存の SUN 4 の Unix OS をまったく変更することなく，発するために利用された．

並列計算機システムが構築できたのである．Unix が提SM-1 は，整数演算や記号処理の分野では当初の目標供するリンカ，実行時環境，ライブラリなどもそのまに近い性能を発揮した．たとえば 32 ビットの加算なら，ま利用できた．基本的なシステムソフトウェアで開発PE ごとに毎秒 860K 回の演算が可能であり，システム全を要したのは，専用アセンブラおよび高級言語の処理体では毎秒 860M 回となる．当時の計算機としてはかな系だけである．

りの性能である．しかし，浮動小数点演算は専用の演専用アセンブラは，通常の SPARC 命令と SIMD 命令算装置を持たず，マイクロコードで実装されていたたとを分別し，SIMD 命令であればコプロセッサ用のマクめに，性能が低かった．開発当初は，SM-1 を商品化す

ロ 命 令 に 変 換 す る ． S PA R C の R I S C 特 性 の た め に ，ることも考えていたが，主要なベンチマークテストでSPARC 命令は，単純な変換テーブルを用意すれば簡単

は，浮動小数点演算の性能のために，汎用 CPU に追いに変換できる．専用アセンブラは簡単にできてしまつけず，商品化は断念した．

った．
次に必要だったのが，比較的低水準の高級言語である．この言語は，プログラム記述言語であると同時に，他のプログラミング言語処理系のターゲットとしても使われる．となると，ぼぼ必然的に C 言語がベースにな

1）松田元彦, 湯淺太一: SIMD 型超並列計算機 SM-1（仮称）の概要, 情報処理学会計算機アーキテクチャ研究会95-17, pp.127-137 (1992).
2）Yuasa, T., Matsuda, M. and Kijima, T.: SM-1 and Its Language Systems, Parallel Languages and Compiler Research in Japan, Kluwer
Academic Publishers, pp.349-376 (1995).
（平成13 年10 月16 日受付）

る．設計した言語を「並 C」（「なみ C」と読む）と呼んでいる．これは標準の C 言語に，SIMD 型並列実行を明示
IPSJ Magazine Vol.43 No.2 Feb. 2002−2−