パーソナルなコンピュータのプロセッサ事情 (第11回: 異なるプロセッサを使う)
カテゴリー:
これまでさまざまなプロセッサを見てきましたが、本来と異なるプロセッサを使う試みも多くありました。
さまざまな目的・形態の製品が発売され、また個人で製作されることもあったのです。
まず目的から見てみましょう。
これまでさまざまなプロセッサを見てきましたが、本来と異なるプロセッサを使う試みも多くありました。
さまざまな目的・形態の製品が発売され、また個人で製作されることもあったのです。
まず目的から見てみましょう。
32ビット以上になるとRISC (Reduced Instruction Set Computer)と呼ばれる命令セットを持つプロセッサが出てきます。
従来のプロセッサとはソフトウェアの互換性が無いのでPC・パソコンの世界ではあまり使われませんでしたが、UNIXワークステーション等の世界では普及しました。「パーソナル」の趣旨から少し外れますが、リースバック品等を入手して個人で動かしていた人もそれなりにいましたので簡単に触れることにします。
IBMのPowerPCは一時期Apple Macintoshに使用されていました。またPlayStation3のCELLにも汎用プロセッサコアとして入っていました。
SPARCはSun Microsystemsや富士通のワークステーション・サーバに使用されました。一時期Sunワークステーションのジャンクや中古が用意に入手可能だったので自宅で動かしていた人もいました。(私もです)
MIPSはR3000, R4700といったモデル名で呼ばれることが多いです。RISCの中では広く用いられた部類だと思います。
もう少し16ビット時代の話を続けましょう。
Intelの80286ではプロテクトモードが導入されました。これは単にメモリ空間を拡大しただけではなく、名前の通りメモリの保護が可能になりました。今から考えると重要な機能なのですが、当時は「パーソナルな」コンピュータに保護は必要ないという考え方が残っていました。
このように多くのパソコン・PCに採用されました。
第3回で取り上げたMN1610も立派な16ビットプロセッサでしたが、一般的に16ビットのプロセッサとして認知度が高いのは今回取り上げるトリオでしょう。
Intelが8080, 8085の後継として投入したのが8086です。8080/8085との直接の互換性はありませんが、アセンブラソースレベルでの変換ツールは用意されていました(MC6800⇒MC6809に似ています)。約一年後に内部はそのまま外部バス幅を8ビットに変更したのが8088です。
8086はPC-9801シリーズ(VシリーズでV30に変更されるまで)に使われ8088はIBM PCに採用されたことで有名になり、現在のx64に続いていると言えるでしょう。他にも多くの採用例があります。
バッテリ駆動が前提のハンドヘルド機ではプロセッサ選択の基準も変わってきます。
まだリチウムイオン電池などは無く、アルカリ乾電池かNi-Cd充電池で実用的に使うためには消費電力が重要になります。まだn-MOSのものが多く、選択肢は限られていました。
Intelの8085は8080の改良版、といってもハードウェア的な変更が主でソフトウェア的にはほぼ8080です。Z80より先にCMOS版が供給されたため選ばれたようです。
CMOSの80C85を採用していたハンドヘルド機には次のようなものがありました。
今回取り上げる2つはパソコンの一時代を築いたものたちです。少なくとも日本では8ビットパソコンの多くはこのどちらかを搭載していました。
その後も16ビットの時代になるまでこれらが使い続けられることになります。
まずはZilogのZ80 CPUです。発表は1976年ですが、今でも(n-MOS版は無理ですが)CMOSのZ84C00はDIP品も含めて現行品です。
これまで取り上げたものはMCS-40がMCS-4の上位互換であった他はソフトウェアのバイナリ互換性はありませんでしたが、このZ80は8080の上位互換にあたります。
搭載機種はあまりに多くてきりがありませんが代表的なものを挙げてみます。
今回もちょっとマイナー路線です。
まず最初はNational SemiconductorのSC/MP (Simple Cost-effective Micro Prosessor)、「スキャンプ」と発音します。まだプログラムしたことはありませんが、資料を読むかぎりソフトウェアはかなり癖のある仕様です。
p-MOSのSC/MP (ISP-8A/500)、これをそのままn-MOSにしたSC/MP II (INS8060)、スタックや16ビット演算機能を追加したSC/MP III (INS8070)などがありました。SC/MP IIIでは残念ながらそれまでのものとソースレベルでもバイナリレベルでも上位互換ではなくなってしまっています。
ハードウェア編に続きまして、今回はソフトウェア編です。
トレーニングキットの時代は回路図同様にソフトウェアについてもオープンなものが多かったと思います。
ソフトウェアといってもメモリの内容を表示・変更したりプログラムの実行ができるモニタ等ですが、これのソースコードがマニュアルに掲載されていたりするわけです。これもサンプルとしての意味が大きいからでしょう。オブジェクトのサイズも数kB以下ですから量的にも大したことはありません。
BASICインタープリタをROM搭載したいわゆるパソコンになると状況が変わりました。シャープのようにモニタのソースコードのマニュアルへの掲載を続けたところもありますが、BASIC自体となるとそうはいきません。
といった事情からソースコードの公開は困難になります。
今パソコン・PCはブラックボックスになっています。どんな回路構成になっているのか、どんなソフトウェアが入っているのか、ほとんどの人は気にしません。
「いや、俺は気にする」という人でも、XXXチップセットを搭載している⇒このくらいのパフォーマンスが期待できる、OSのバージョンがYYY⇒何とか機能がある、といった機能・性能の指標として気にしている人が大半ではないでしょうか。
周辺機器のハードウェア設計者でもPCI・USBといったインターフェイスの仕様は調べますが本体の回路がどうなっているかは(トラブルでも起きないかぎり)普通は調べません。ソフトウェア設計者もAPIの使い方は知っていますがそれがどう実装されているかは考えません。
これはもちろん悪いことではありません。効率を上げ、互換性を保つには必要不可欠でしょう。
しかし昔は事情が違っていました。各社が互換性の無い機種を発売し、標準的なOSも無く(あっても機能が限られ)、ハードウェアを直接叩かなくては十分なパフォーマンスが得られない状況では内部の情報は重要だったのです。
ということで今回はハードウェア情報(主に回路図)について書いてみます。