PC-386 Book Lの復活劇 その8 ~コプロセッサでパワーアップ
- 2022/09/28 08:35
- カテゴリー:マニアックなおはなし
PC-386 Book Lのメニューの1つ,数値演算プロセッサを入手しました。
数値演算プロセッサ?なんじゃそりゃ?という反応が返ってくることだろう事をふと思うと,そういう時代になったんだなあとつくづく思います。
数値演算プロセッサ(NDPともいいます)とは,浮動小数点演算を行うプロセッサです。いろいろな種類があるのですが,多くはCPUごとに専用の設計され,文字通りコプロセッサとしてCPUにくっついて浮動小数点の演算に関する命令を拡張するようになっています。
なぜこれが現代では廃れてしまったかというと,すでにCPUに統合されているからです。歴史的経緯を見ていくと,もともとディスクリート部品で作られていたCPUがLSIになるとき,回路規模を小さくするために別チップに分けたというのが正しいと思います。
さらにいうと,当時のLSIになったCPUの用途では浮動小数点の演算への需要が低く,回路規模が大きくて高価になりがちな機能を省くというのは合理的でもあったのです。
8080やZ80などの乗除算命令さえ持たなかったCPUの時代には,命令を拡張するという考え方はなかったですし,専用の数値演算プロセッサも作られなかったですから,I/Oデバイスの1つとして演算を行うLSIが使われていました。
これらはいわば関数電卓そのもので,関数電卓からキーボードとディスプレイをはずし,かわりにCPUに繋がるバスを用意したもの,という感じでした。だから演算速度も極端に遅く,これを使おうという動機はsinやcos,eといった関数が使いたいというものだったんじゃないかと思います。
16ビットの8086には8087という命令を拡張する数値演算プロセッサが開発されました。CPUにくっついて動作するのでコプロセッサと呼ばれたものの1つとして知られていますが,ライバルだった68000には数値演算プロセッサは用意されず,32ビットの68020用に開発された数値演算プロセッサ68881が流用されていた感じです。
ついでにいうと,68000には数値演算プロセッサの接続はI/Oデバイスとしての接続以外に方法がなく,命令の拡張という形式を取ることが出来なかったという点で,実は8086の方が有利でした。
インテルのCPUには伝統的に数値演算プロセッサが用意されていて,8086には8087,80286には80287,80386には80387が開発されました。
30386はバス幅が32ビットの80836DX,16ビットの80386SXが作られましたが,それぞれに80387DXと80387SXが用意されていました。そういえば387DXはセラミックPGAという立派なパッケージ,一方の387SXはPLCCでこのあたりからも格の違いを見た気がします。
私がこの目で確かめたわけではありませんが,コプロセッサとして動作するのは8087で,80287や80387では一種のI/Oデバイスとして機能するらしく,動作が8087とは異なるんだそうです。
で,この数値演算プロセッサですが,メーカー純正品は10万円近く,インテルのリテールは3万円ほどだったと思います。後にサードパーティからのコンパチ品が登場すると1万円くらいで手に入るようになりましたが,果たしてそれだけの効果があったかというとそうでもなく,通常のDOSやワープロ程度では浮動小数点演算の世話にはならないからでした。
次の486の世代では数値演算プロセッサが内蔵され,ようやく最近のCPUと同じになるのですが,内蔵されていない80486SXという品種もあり,内蔵されていた80486DXとは区別されていました。
本当かどうかはわかりませんが,人づてに聞いた話では,80486DXのうち浮動小数点演算プロセッサにエラーがあったものを80486SXとし,逆にCPUにエラーがあった不良品を80487SXとして売っていたそうです。そんなことで安定的に量産など出来る訳がないので,あったとしても初期の立ち上げ段階だけだろうと思いますが,大きさからピン配置までそっくりだったことを考えると,あながち嘘でもないと思います。
Pentiumからはさすがにそういうことはなく,数値演算プロセッサは内蔵されて今日に至ります。
話を戻すと,PC-386 Book Lに搭載されたCPUは80386SXです。数値演算プロセッサは内蔵されておらず,80387SXという別チップを取り付けなければなりません。しかし当時のことですから,数値演算プロセッサを使うようなアプリケーションは少なく,なくても全然困りませんし,取り付けたところで気分的なもの以外の効果は薄いです。
そしてそれ以上に,今は入手が難しくなっています。中古品が潤沢にあるかといえばそんなこともなく,既に歴史上のチップになった感じさえします。
探してみますが,あいにく見つかりません。互換品も見つからず,まあいいかとあきらめていましたが,こういう場合はaliexpressだと探してみると,やっぱり売っていました。価格から見て中古品でしょうし,そもそも偽物かも知れません。どちらにしてもあやしいのは間違いなく,本当に届くのか,本当に動くのかと気になるのですが,こういうのは試してみるのが面白いでしょう。
9月初旬に注文したものが,9月19日に届きました。aliexpressも早いケースがあると噂に聞いていたのですが,物流がまだ落ち着いていないこのご時世で,よくこの期間で届いたものと思います。
開封すると,形こそ同じですがどうみても387SXとは違う刻印のチップが2つ出てきました。なになに?BB?VECANA01?
やられた!と思って自分の注文を確認してみると,なんと私のミスでした。
商品名は80387SXなのですが,なんとまあ,色の選択に80387SXとVECANA01があり,私は運悪くVECANA01を選んでいたのでした。
いや,VECANA01というチップを私が知っていれば間違うことなどなかったと思うのです。しかし不勉強な私は,Burr-Brownからこんな名前のチップが出ていた事を知らず,品名さえ間違っていなければ正しいものが届くと信じて疑わなかったのです。
価格が高いなら返品するのですが,送料まで入れて10ドルくらいの買い物ですから,ここで送料を私が負担して返品しても差額は数百円です。バカバカしいので,違うお店で387SXを買い直しました。
お値段はほぼ同じ,送料もほぼ同じなのですが,今回はさらに早い到着日時が設定されています。9月22日に注文して,なんと9月27日に私の手元に届きました。
開封すると今度は間違いなく387SXです。動作クロックは25MHzまでOKと刻印されているもの(16-25MHzとあります)なので,クロックアップしてある私のマシンでも問題はないでしょう。
とりあえずPC-386 Book Lに取り付けてみましょう。昔からPLCCというこの手のパッケージは取り付けが難しいですし,取り外しは専用工具がないと絶望的です。
電源が入り,DOSが起動してくれたので,システム情報を確認するとちゃんと認識しています。メモリスイッチを設定してから浮動小数点演算を使うベンチマークを取ってみると確かに動作していることが確認出来ました。これでOK。というかこれ以上することがありません。
しかしですね,別にかな漢字変換が早くなったわけでも,スクロールが高速化したわけでも,ファイル操作が快適になったわけでもないので,日常的にはなにも変わりません。これは本当に気分のものだと思いました。
・・・ところで先程のVECANA01,これ,12bitのADCなんですが,なんと10chです。というのも,モーター制御に使うADCらしく,ベクトル制御用に多chのADCが欲しい人向けに1990年代後半に市場に出ていたもののようです。
12bitでサンプルレートが1.25Mくらいですので,汎用のADCと思えば使えなくもありませんが,10chもいりませんし,このくらいのADCなら内蔵品で十分ですので,正直ゴミだなと思います。