このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第326回

スーパーコンピューターの系譜 半導体メーカーTIが製造したASC

2015年10月19日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

先進的な機能が満載された
内部構造

 そのASCであるが、全体の構成は下の画像のようになっている。演算を行なうCP(Central Processor)とは別に周辺機器とのI/Oなどを管理するPP(Peripheral Processor)を用意するマルチプロセッサー構成とする、というアイディアはCDC 6600と同じだが、これは2つの理由から採用されたそうだ。

ASCの構成。ちなみにTIAC 870の際にCRTを使ったコンソールが始めて実用化され、それもあって“DISPLAY CONSOLE”がシステムのど真ん中に鎮座している。出典はTIの“ASC-4X Central Processor Volume 1 : Opteration and Maintenance instuction”というマニュアルから

 1つは、作業分担(CPを設計するチームとPPを設計するチームを分離できる)上のメリット、もう1つは試作されたTIAC 870あるいはその前モデルのTIAC 827というマシンに、ベクトル演算を行なうユニット(Vector boxes)を試しにつないで性能を測定したところ、大変に良い結果が出たとのことで、ASCでもすべての処理を1つのプロセッサーに行なわせるのでなく分離させるのが得策と判断された。

 演算そのものは、PPとCM(Central Memory)に挟まれたCPで行なわれる。このCPだが、内部は下の画像のような構造となっている。

CP(Central Processor)の内部構造。ベクトル長を4つ程度に抑えたことで、現実的な構成でシステムが構築できたといっても良い。出典は先の資料と同じ

 IPU4はInstruction Processing Unitで、4つのAUに対して命令を発行する処理を行なう。昨今のCPUで言えばAUがExecution Unitで、IPU4はFetch~Decode~Dispatchに相当すると思えばいい。

 このIPU4はなかなか高機能で、ベクトル命令とスカラー命令の両方を扱え、全体では最大36命令をIn-flight状態における。また、複数のAUを連動させて実行することでベクトル処理を行なわせることもできた。

 MBUはMemory Buffer Unitで、これはCMとの間でのやりとりをするキャッシュである。最近のCPUで言うならLoad/Store Unitに相当するものである。

 そしてAU(Arithmetic Unit)が実際の演算を行なう部分だ。この中身をもう少し細かく説明したのが下の画像となる。よく見るとLevel 0~Level 12という番号が振られているのがわかるが、これがパイプラインのステージ数である。

AUとMBUは実際には同じものが4つ並んでいる形だ。これも出典は先の画像同じ

 Level 0というのはFetch、つまり命令やデータをメモリーから取り込むところで、Level 1はIPU4の中で命令を選択、Level 2~3でアドレス計算を行ない、Level 4でその結果をオペランドレジスターに代入する。

 そのアドレス値を基にLevel 5~6でCMよりデータを取り込んでMBUに格納する。これが終わるとLevel 7で各々AUのオペランドレジスターに値をセット、これを基にLevel 8~12で演算を行ない、その結果が書き戻されるという仕組みだ。Fetchを除いて考えれば12段のパイプライン構成である。

 サイクル時間は65ナノ秒(当初は16MHz駆動ということで62.5ナノ秒とされていたが、もう少し遅かったらしい)で15.3MHz駆動ほどになるが、1サイクルで最大4つの演算が可能であり、ピーク性能では61.5MFLOPSほどになる。これは時期を考えれば十分に高速であった。

 ちなみにWord長は32bitであるが、16bit整数や64bitの浮動小数点演算もサポートしていた。おもしろいのは、32bitと64bitの浮動小数点演算フォーマットで指数部の桁が同じことだ。32bitは符号1bit、指数部7bit、仮数部24bitで、一方64bitでは符号1bit、指数部7bit、仮数部56bitとなっている。

 浮動小数点の標準形式を定めたIEEE754が登場するのは1985年なので、この頃は各社が勝手にフォーマットを定めていたわけだが、ASCでは扱える値の範囲を変えずに有効桁数だけを増やす(32bitで8桁、64bitで16桁)形にしていたのは、弾性波探索という用途では桁数よりも精度が重視されたためかもしれない。

 また目立たないところだが、先の画像の上の方をみるとRegister Fileが48も存在しているのがわかる。もちろんIPU4は4つのAUで共通なので、AU1個あたりで見ると使えるレジスターの数が12ということになるが、それでも汎用レジスターがこれだけあるのはおもしろい。

 実際ASCではRISC命令風のレジスター間演算を多くサポートしており、このあたりも性能改善に効果があったと思われる。

 CMもなかなか特徴的であった。CMはMCU(Memory Control Unit)と複数種類のメモリーモジュールから構成される。MCUは双方向の256bit幅のメモリーI/Fを構成しており、最大8つまでのプロセッサー(これにはCPだけでなくPPも含まれる)に対して同時にアクセスが可能な構成になっていた。

 1つのプロセッサーあたり最大で80MWord/秒(=320MB/秒)の転送が可能で、8本で合計2.56GB/秒という、これも時期を考えるとおそろしく高い帯域である。

 もっともこれはあくまで理論帯域であって、実際にはメモリーの速度に制限されることになる。MCUは複数種類のメモリーモジュールを組み合わせることが可能で、しかも速度が違っていても良かった。

 実際メインには低速だが低コストなコアメモリーを使いつつ、8本のプロセッサー向けポートにはキャッシュ用として小容量ながら高速なDRAMを使うといった構成になっており、この際にMCUはDRAMをキャッシュとして扱うような処理も可能となっていた。

 ちなみにASCはDRAMとしてインテルの1103(1Kbit DRAM)を採用した最初期の製品の1つである。アドレスは24bitで、最大16MWord=64MBの構成が可能となっていた。仮想記憶などは当然ないものの、メモリーマッピングの変更やプロテクトが可能という簡単なMMU(Memory Management Unit)の機能もMCUには搭載されていた。

(→次ページヘ続く 「ソフトウェア開発で苦戦」)

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン