SSブログ

アクセラレータ,なないろのディスプレイ(月刊ASCII 1992年5月号10) [月刊アスキー廃棄(スクラップ)]

「特集II 数値演算コプロセッサ&アクセラレータ入門」をスクラップする。
この当時のCPUは整数演算しかできなかった。浮動小数点演算はソフトウェアでやっていた。当然スピードは劇遅なので数値演算コプロセッサを装着して速度を稼ぐのだが、シミュレーションを行う研究室等でしか導入してなかったように思う。個人の趣味ではなかなか導入できるものではなかった。フライトシミュレータ等のゲームでも数値演算コプロセッサの利用を前提としたものはなかったと思う。
ASCII1992(05)e01アクセラレータ_W520.jpg
数値演算コプロセッサは実数計算の専門家
 80286や80386,68020といったCPUには,実数計算のための機能が用意されていない。これらのCPUが「ADD」命令などで直接扱うことのできる数値は,整数に限られるのだ。もちろん,だからといってこれらのCPUでは実数を使った計算ができないというわけではない.そのためのプログラムを作ればいいのだ。人間が基本的には九九の組み合わせで実数演算をするように,コンピュータだって整数計算の組み合わせで実数計算を行なうことができるのだ。
 しかしその場合,要するに実数計算をソフトウェアでエミュレートしているわけだから、当然あまり速くない。実数計算を多用するアプリケーションでは,どうしても処理に時間がかかってしまう.実数の計算をハードウェアで実現できれば,ソフトウェアでエミュレートする場合に比べて数倍から数十倍も高速化できる.
 この「実数計算をハードウェアで実現したチップ」が数値演算コプロセッサである.コプロセッサの頭の「コ」というのは,「共同」「共通」といった意味の接頭語「co-」で,つまり「CPUと共同で仕事をするプロセッサ」ということになる.コプロセッサとしては,数値演算コプロセッサのほかにも,MMU(メモリ管理ユニット)などがある.しかし,実際には数値演算コプロセッサ以外のコプロセッサが話題になることは少なく,単にコプロセッサ(あるいは「コプロ」)といえば,数値演算コプロセッサを指すことが多い。
 数値演算コプロセッサはCPUと一体になって動作するため,ソフトウェア的には元のCPUに実数計算の命令が拡張された新しいCPUがあるかのように見える。プログラムを作るときは,特に数値演算コプロセッサのことを意識しなくても,単にその拡張された命令を使えばいいのだ。
 実際にCPUとコプロセッサが共同で動作する方法にはいろいろある(図1).


ASCII1992(05)e02アクセラレータ図1_W520.jpg
 したがって,あるCPUが使用できるコプロセッサは決まっており,68020に80287を組み合わせるといったことはできない.ただし,同一メーカーの製品で,インターフェイスが統一されている場合には、この限りではない。たとえば,80386は80287と組み合わせることもできる.もっとも,これはあくまでパソコンを設計する段階の話で,80387を使うように設計されたパソコンに,いきなり80287を持ってきても装着することはできない.
 プログラムが拡張された実数計算の命令を使っていなければ,いくら数値演算コプロセッサがあっても意味がない.逆に,拡張された命令を使ったプログラムは,数値演算コプロセッサのないマシンでは実行できない(ハングしてしまう)。そこで一般的なアプリケーションでは,起動時に数値演算コプロセッサの有無をチェックし,ある場合は拡張された命令を使い,ない場合はソフトウェアでエミュレートするように自動判別している.
 なお,市販のCやPascal,Fortranなどのプログラミング言語のコンパイラには,このように数値演算コプロセッサの有無を自動判別してくれるライブラリが付属していることが多い。一般のユーザーが作るプログラムでも,そのようなココンパイラを使用していれば,数値演算コプロセッサを意識する必要はない.
 数値演算コプロセッサに対応している主なアプリケーションには,表1のようなものがある。大量の計算をこなさなければならないアプリケーションは,たいてい対応していると考えていいだろう.もちろん,対応していないアプリケーションも多い。別に対応をサボっているというわけではなく,もともと実数計算を必要としない処理が多いのだ。たとえば,エディタや通信ソフトなどは数値演算コプロセッサに無縁のアプリケーションだ(実数計算までサポートしたマクロ言語でも持っていれば別だが).
 また,対応しているアプリケーションでも,その起動から終了まで,実数計算だけしているということはない。ユーザーからのキー入力を待ったり,ファイルを読み書きするなどの処理が,必ずあるはずだ。だから,実数計算の部分が50倍速くなったからといって,アプリケーション全体が50倍速くなるわけではない.具体的に、どんなアプリケーションでどの程度速くなるかは,最後のベンチマークテストを参照してほしい。

アクセラレータでCPU移植
 前述のように,数値演算コプロセッサは,「実数計算」という特定の機能を実現するためのプロセッサだ。それに対して,アクセラレータはCPU自体をより高速で高機能なものに置き換えてしまう(図2).

ASCII1992(05)e03アクセラレータ図2_W485.jpg
 方式としては,
(1)本体のCPUを抜き取り、そのソケットにアクセラレータを装着するもの
(2)拡張スロットに装着するもの
がある。(1)のタイプは,CPU以外は本体の部品を利用するため,80286を80386SXへ,80386を80486へというようにバス幅の同じもので置き換える必要がある.
 後者の場合は、本体のCPUとボード上のCPUを切り替えて使うことも可能だ。ただし,切り替えるためにはリセットが必要であり,アプリケーションの動作中に切り替えるといったことはできない。
 アクセラレータの意味としては,高速化以外にも,より上位のCPUに置き換えれば一歩先の機能を利用できるということがある。たとえば,80286を80386SXに置き換えれば,Windows 3.0の386拡張モードや,MEMORY-PRO386のようなメモリ管理ソフトが使えるようになる.
 アクセラレータを使えば,CPUのすべての命令が高速化されるから,どんなアプリケーションでもCPUの速度比だけ速くなるかというと,そうとも限らない。速くなるのはあくまでCPUだけで,メモリアクセスや周辺機器との入出力は元のままだからだ。メモリに関しては,キャッシュメモリを使うなどの解決方法があるが(そして実際たいていのアクセラレータが何らかの解決策を講じているが),周辺機器の場合はそうもいかない.たとえば,Windowsの動作が遅いといっても,ハードディスクへのスワップが頻繁に起こって遅いという場合には,いくらCPUを高速にしても効果は望めない。この場合は,メモリを買い足すのが一番の解決法だろう.

 そんなにしてまでWin3を使いたいのか疑問に思う。
8087
 8086/V30用のコプロセッサ.8087自身がバスを監視し,実数計算用の命令を見つけるとCPUに代わってフェッチし、実行する.そのため,バスの管理や命令のデコードなど,CPUと共通の機構を持っている.
ASCII1992(05)e04アクセラレータ_8087_W319.jpg

80387
 80386用のコプロセッサ80287の約5倍の性能を持つ。CPUとのインターフフェイスは80287と同じなので,80286に80387を組み合わせたり,80386に80287を組み合わせることが可能だ。しかし,実際にはコストと性能のバランスから,80386には80387が,80286には80287が組み合わされることが多い。
ASCII1992(05)e04アクセラレータ_80387_W297.jpg

80287/80287XL/80287XLT
 80286用のコプロセッサ8087とは違い、80286からI/Oチャネルを通して命令を受け取る.
 80286が8086より2倍以上高速化されているのに対して,80287は8087と同じ性能だっため、当初あまり評判が良くなかった。インテルは,後になって約50%高速化した80287XLと80287XLTを発表している.80287XLは,従来の80287と差し替えて使用できる.一方80287XLTは,44ピンのPLCCパッケージを採用し,ノート型パソコン用に省スペースを図っている.

ASCII1992(05)e04アクセラレータ_80287_W490.jpg ASCII1992(05)e04アクセラレータ_80287XL_W358.jpg ASCII1992(05)e04アクセラレータ_80287XLT_W298.jpg
 「80286が8086より2倍以上高速化」そうだったか?PC-9801VM2がV30(10MHz)を使っているからPC-9801VX2(80286/8MHz)が高速化されたという実感がなかった。V30が良いCPUだったということだろう。
80387SX
 80386SX/80386SL用のコプロセッサで80286の約3~5倍の性能を持つ。
 80386SL用のコプロセッサとしては,最近になって80387SLが発表された。これは,使用されないときに消費電力を抑える機能を持つ。80387SXの代わりに使用することも可能だという.

ASCII1992(05)e05アクセラレータ_80387SX_W307.jpg

80487SX
 80486SX用のコプロセッサだが,単独でCPUとしても機能するよう設計されている。機能的には,80486DXと同じものと考えてよい.
ASCII1992(05)e05アクセラレータ_80487SX_W314.jpg

80C287
 AMDが開発した80286用のコプロセッサ.マイクロコードに80287と同等のものを用いているため,完全な互換性がある.性能も変わりないが,CMOSを用いて消費電力を抑えるとともに,価格も低く設定されている
ASCII1992(05)e05アクセラレータ_80C287_W311.jpg
 AMDは最初互換コプロセッサを作っていた。安いのが売りだった。
CX-83D87/SX-83S87
 Cyrix社が開発した80386DX/80386SX用のコプロセッサ。80387がマイクロコードを使っている機能をワイアードロジックに置き換えることで,80387DXの5~10倍の計算速度を実現しているという.ピン配列が同じなので,80387DX/80387SXと差し替えて使用することが可能.
ASCII1992(05)e05アクセラレータ_CX-83D87_W325.jpg ASCII1992(05)e05アクセラレータ_SX-83S87_W326.jpg
 Cyrixも互換コプロセッサを作っていた。Cyrix好きだったがそのうち無くなってしまった。
IIT2C87/3C87
 Integrate Information Technology社が開発したコプロセッサで,2C87は80287と,3C87は80387と完全な互換性がある。差し替えるだけで80287/80387の2~3倍の性能が得られるうえに,拡張された行列演算命令を使えば,より高速化が可能という.
ASCII1992(05)e05アクセラレータ_IIT2C87_W332.jpg ASCII1992(05)e05アクセラレータ_IIT3C87_W320.jpg

Turbo-486
 京都マイクロコンピュータ(株)の468アドオンボード.PC-9801RA/DAとPC-98RLに対応している.486SXを使ったものと,486DXを使ったものがある。486DXを使ったものには,本体クロックの2倍で動作する 「倍速モード」が用意される.
ASCII1992(05)e06アクセラレータ_Turbo-486_W421.jpg

486GT
 エービーエム(株)のアクセラレータ.PC-9801RA/DAとPC-98RLに対応している。拡張スロットに装着するメインボードと、本体の80386ソケットに装着するプローブボードの2つのボードから構成される.2次キャッシュとして,i485ターボキャッシュモジュール(容量128Kbytes)を搭載することができる.
ASCII1992(05)e06アクセラレータ_486GT_W331.jpg

M3
(株)エム・エス・アイが開発しV33を使ったアクセラレータ。拡張スロットに差して使用するタイプだ。
 V30マシン用で,このアクセラレータによりクロック周波数12MHzの80286に相当する処理速度が得られるという.

ASCII1992(05)e06アクセラレータ_M3_W415.jpg
 (株)エム・エス・アイは知らないというか記憶に残っていない。
 V33ならV30マシンに使えるのは納得できるが、PC-9801VM2を高速化するよりもPC-9801RAなどに買い替えた方が早いはずなのにこの製品どんな人たちが買ったのだろうか。

コラム記事をスクラップする。
Rapid CADとOverDrive
 最新の80486や68040は,数値演算コプロセッサの機能を内蔵している.CPU内部で数値演算コプロセッサの機能(実数演算)を実現している部分は,FPU(Floating PointUnit)と呼ばれる.逆にいえば,数値演算コプロセッサというのは「外付けFPU」というわけだ。
 前述のように,80287や80387はCPUから必要なデータを受け取って動作する.68020/68030用の68881/68882という数値演算コプロセッサも同様だ。この方法だと,CPUとコプロセッサのやり取りのために余分な手間がかかってしまう。
 そこで,80486や68040はFPUを内蔵し,この問題を解決している.つまり,FPUはCPUのほかのユニットと同じように,直接バスからデータを受け取れるのだ.そのため、より高速な実数計算が可能になっている。
 この技術を80386DXにフィードバックしたチップセットが米Intel社から発表された(日本では未発表)。これは「Rapid CAD」と呼ばれ,2チップから構成される。RapidCAD-1と呼ばれる大きいほうのチップが,80386DXと80387DXの機能を併せ持つ.小さいほうのRapidCAD-2は,0除算などの例外処理に関して80386DX+80387DXのセットとハードウェア的に互換性を持たせるためのものだ。
 RapidCADは,80386DXと80387DXを1チップにまとめたことにより実数計算の速度が約70%向上したという.ただし,あくまで実数計算の機能向上に限られるため,80486DX/SXと競合するものではないようだ。

 コプロセッサも80486が出てからは用無しになったころだろう。パソコンを買い替えた方が早い。

漫画をスクラップする。
なないろのディスプレイ
ASCII1992(05)g01なないろ_W797.jpg

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット