Web Analytics
Privacy Policy Cookie Policy Terms and Conditions トランスピュータ - Wikipedia

トランスピュータ

出典: フリー百科事典『ウィキペディア(Wikipedia)』

トランスピュータは、イギリスのブリストルにある小企業INMOSが1980年代に設計した並列コンピューティング向けの先駆的なマイクロプロセッサである。 1980年代後半の一時期、トランスピュータは次世代の新たなコンピュータの始まりであると多くの人々が考えた。 今日、この興味深いチップはほとんど忘れ去られている。

目次

[編集] 背景

1980年代初期、従来からのマイクロプロセッサは性能の限界に達しつつあると見られていた。 このころ、製造技術の問題によって、設計者がチップに載せられる回路の量が制限されていた。 しかし、製造技術は進歩し続け、今では逆に設計者が思いつかないほど大量の回路をチップに載せられるようになった。 間もなく、伝統的なCISC型デザインは性能の限界に達し、その限界を超えられるのか当時は明らかではなかった。

唯一の道は並列性を高めることだと思われた。複数のマイクロプロセッサを一緒に動作させ、複数のタスクを同時に処理するのである。 これにはマルチタスクと呼ばれる手法が可能なマシンがなければならない。 マルチタスクはそれ以前のマイクロプロセッサには困難であったが、当時の最新の設計では効率的に実行できた。 マルチタスクが全てのオペレーティングシステムの機能となるのは明らかだった。

マルチタスク設計の副次効果としてマルチプロセッサ(複数のCPU)上で複数のプロセスを動作させることができるようになった。 低価格のマイクロプロセッサでマルチプロセッサ機を実現すれば、マイクロプロセッサを追加することで簡単に性能を向上させることができる。 それは新たに高速なマイクロプロセッサを設計するよりも非常に低コストで実現可能と思われた。

[編集] デザイン

トランスピュータ(トランジスタ+コンピュータの造語)は並列コンピューティングに特化した初めての汎用マイクロプロセッサである。 様々なチップを組み合わせてコンピュータを構成することが目的であった。 各チップがトランジスタのように組み合わされて役割を果たすことからトランスピュータと名づけられた。

当初の計画ではトランスピュータのコストは数ドル/ユニットとすることになっていた。 INMOS社はこれがあらゆる場所で使われることを想定した。コンピュータのメインCPUとしてだけではなく、同じコンピュータのディスクドライブのチャネル・コントローラとしてもである。 これらトランスピュータは空き時間を利用して別の仕事をさせることもでき、全体として性能を大幅に向上できると考えられた。

各トランスピュータは単独で動作できるだけの回路を備えていたので、その特長はマイクロコントローラに似ている。 トランスピュータ同士は複雑なバスを使わずに簡単に接続することができる。 電力供給もクロック供給も簡単である。 RAMもRAMコントローラも不要である。 さらにはRTOSすら要らない。 それらは全て組み込み済みである。

[編集] リンク

トランスピュータの基本デザインは、他のトランスピュータと接続する4つのシリアルリンクを持っていることである。 各リンクは1980年代当時としては非常に高速な5Mビット/s、10Mビット/s、20Mビット/sといった性能であった。 任意個のトランスピュータを長い(最長数十メートル)リンクで接続し、ひとつのコンピュータ"farm"(農場、ファーム)を形成する。 例えば、典型的なデスクトップマシンとしては、入出力を処理するふたつのローエンドのトランスピュータを使ってそれらのシリアルリンクを必要な周辺装置に接続し、CPUとしてより高機能なトランスピュータを使用する。 トランスピュータはネットワークリンクからの信号で起動できるため、ひとつのトランスピュータが接続されている全ネットワークを起動することができる。

このような方式で構成できるシステムには限界がある。 各トランスピュータは1対1で接続されているため、直接つながっていないトランスピュータへの通信メッセージは途中のトランスピュータが中継することになる。 この中継が度重なると無視できない遅延が生じる。 これを解決するためにINMOS社は32個のトランスピュータを接続するディレイのないスイッチを提供した。 これは、スイッチにスイッチを接続することもできるため、非常に巨大なネットワークを形成できる。

[編集] スケジューラ

リンクをサポートしたため、通信トラフィックをスケジュールする新たな回路が必要となった。 通信結果を待っているプロセスは自動的にポーズ状態となってネットワーク回路がリードやライトを終えるのを待つ。 そうすると他のプロセスが走行を開始する。 デッドロックを防ぐため、ふたつの優先度レベルをサポートしている。 ひとつのトランスピュータ上で動作するふたつのプログラムが互いに通信する場合、メモリ上の「仮想ネットワークリンク」を使うことができた。 プログラムが入力や出力を要求してその処理を待つ間ポーズすると、オペレーティングシステムが調停回路を使ってそれを処理するのである。 トランスピュータのオペレーティングシステムはスケジューリングを行う必要がない。 ある意味ではチップ自身がOSを内部に持っていると考えることができる。

このような機能を全てシングルチップに組み込むため、トランスピュータのコア部分は一般のマイクロプロセッサよりも単純になっている。 RISCベースの設計であるが、一般のRISCのようなレジスタのたくさんある設計ではなく、トランスピュータはごく少数のレジスタを持つスタックベースのシステムである。 これによりコンテキストスイッチが非常に高速化された。 単にスタックポインタを別のプログラム用のアドレスに書き換えるだけで済んだのである。 トランスピュータは3本のノーマルレジスタと呼ばれるものを持っているが、それは実際にはスタックのトップ3段目までの内容のミラーであり、アドレス指定しない命令のためのものだった。

[編集] 命令セット

トランスピュータの命令は8ビット長でそれがふたつのニブルに分けられる。 前半のニブルは命令コードを示す。つまりたった16種類の基本命令しかない真のRISC設計である。 後半のニブルはデータを示す。イミディエート値かスタックポインタのオフセットを表している。 より大きな定数やオフセットも指定できるが、それには余分なバイトをフェッチしてデコードする必要がある。 追加の命令としてOperate(Opr)命令コードがある。このコードがニブルにあると、続く領域が拡張オペコードとして解釈されるので簡単に命令セットを拡張することができる。 プロセスは小さなコンテキストで高速に動作するが、トランスピュータの考え方がそもそも小さなプロセスを多数走行させるところから始まっているのである。

[編集] Occam

トランスピュータはプログラミング言語Occamを使ってプログラミングされる。Occamは CSP(Communicating Sequential Processes)をベースにしている。 実際、トランスピュータはOccamを動作させるために作られたと言っても過言ではない。同様にCISCデザインのプロセッサはPascalC言語のような高級言語を動作させるよう設計されている。 Occamは言語仕様としてスレッド的なタスクを持っており、Occamで書いたプログラムは自然にマルチスレッドになる。 チップと言語がタスクと通信をサポートしていたので、デバイスコントローラのようなプログラムを書くのは極めて簡単である。 ほとんどのプログラムは入出力としてシリアルポートを使い、データが無ければ自動的にスリープした。

[編集] 実装

最初のトランスピュータは1983年に発表され、1984年にリリースされた。

その役割のマイクロコントローラ的なデバイスとするため、2KバイトのRAMを内蔵し、追加のRAMを簡単に接続するためのRAMコントローラを内蔵していた。 他の設計と全く違う点はI/Oが全てシリアルリンクに何らかのハードウェアを追加することで接続するようになっていた点である。 一般のマイクロプロセッサの割り込みに相当する1本の"Event"ラインを持っていた。 これが一種のチャネルとして動作し、プログラムはこの"Event"ラインから入力することができ、"Event"ラインをアサートすることで処理を開始した。

このトランスピュータはMMU仮想記憶機構を持っていなかった。

[編集] 16ビット

プロトタイプの16ビットのトランスピュータはS43と言い、スケジューラやリンク上のDMA制御ブロック転送機構を持っていなかった。 製品としては、T212とM212(ディスク・コントローラ)は16ビットであった。

[編集] 32ビット

製品としては、T414が32ビットであった。チップ上のRAMは後に4Kに拡張され、T424と名づけられた。 T424はデバッグ用のJ0トラップ命令を持っていた。

[編集] 浮動小数点演算

次の主なバージョンアップとして、1987年にT800が登場した。これは64ビットのFPUと浮動小数点数用の追加の3本のレジスタを持っていた。 また、RAMは4Kであった。 これらのマイクロプロセッサの改良版(プログラミングやデバッギング機能の改良)が間もなく登場し、T-2シリーズ、T-4シリーズ、T-8シリーズとして知られている。 32ウェイリンクスイッチC004も製品ラインナップに加えられた。

[編集] 競合

トランスピュータは他のデザインに比べてもシンプルで強力であるが、本来の目標であったあらゆる場所で使われるCPUあるいはマイクロコントローラというには程遠い状況であった。 当時のマイクロコントローラ市場は8ビット機が優勢で、コストだけが問題だった。 そのため、T-2シリーズであっても当時の市場では強力すぎ、高価すぎた。 またトランスピュータは仮想記憶をサポートしていないのでUNIX市場にも入り込めなかった。 もっとも、UNIX風のOSの移植製品は存在している(MinixやIdris)。

デスクトップやワークステーション市場でもトランスピュータは十分高速と言えた。20MHzで10MIPSを記録している。 これは1980年代前半では非常にすばらしい記録であるが、FPUを備えたT800が出荷されたころには他のRISCプロセッサに性能を追い越されていた。 性能差はマシン内で複数のトランスピュータを使えば埋められたかもしれないが、T800はひとつ400ドルもしたので、価格性能比で考えれば太刀打ちできなかった。

[編集] T9000

INMOSはT9000の投入でこの状況を打開しようとした。 T9000はT800によく似ているが、いくつかのハードウェアをチップに追加し、スーパースケーラ機構も導入した。 初期のモデルとは異なり、T9000は16KBのキャッシュを備えていた。これは従来のようにRAMとしても使用でき、これを制御するためMMU的な機能(PMIと呼ばれた)も組み込んだ。 加えて、高速化のためにT9000はスタックトップの32本ぶんをキャッシュしている(従来は3本)。

T9000は高速化のために5ステージのパイプラインを持っていた。 興味深い機能追加としてキャッシュ外のコードのかたまりをグループ化して、それを4バイトの擬似命令にパッケージ化する機能を持っていた。 このグループは1サイクルで実行することができた。 (訳注:命令が8ビット長であることに注意。つまり4バイトの擬似命令とは4つの命令のかたまりを意味する)

リンクシステムもアップグレードされ100MHzとなったが、下位互換性は失われた。 T9000は新たなネットワークハードウェアVCPを備えていた。これは任意の本数の仮想チャネルvirtual channelを物理的なリンク上に構成する機構である。

T9000の開発が遅れたため、リリースしようという時にはすでに他のRISCプロセッサの性能はその先に行っていた。 実際、T9000はT800の10倍という性能目標も達成できず、プロジェクトが中止された時点では50MHzで36MIPSの性能だった。

INMOSはそれ以上開発を続ける資金力がなかったため、会社ごとSGS-Thomson(現 ST Microelectronics)に買収された。 買収後、T9000の開発は中止され、T212/T414を活用したマイクロコントローラST10ST20が製造されることになった。 これらもすでに製造されていないが、その技術の一部は特定用途のチップセットで活用されている。

皮肉なことに、トランスピュータの設計思想であった並列性向上は汎用のCPUの中で実現され高速化に寄与している。 トランスピュータのような明示的な重いシステムではなく、命令レベルの並列性である。 アウト・オブ・オーダー実行スーパースケーラが汎用のコンピューティングには適していたと言えるだろう。

[編集] 関連事項

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu