人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)

ガジェット PC
大原雄介

猫に傅くために原稿を書いて日銭を稼いでいる毎日。元は組み込み系のエンジニアだったのに、もうずいぶん遠い所まで来てしまった。

特集

人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)
  • 人知れず消えていったマイナーCPUを語ろう(第2回):NS SC/MPが日本のパソコン自作に果たした役割とDr.パソコン(大原雄介)

コンピュータの歴史を暗部も含めてていねいに掘り起こすことで定評のある大原雄介さんによる新連載。テーマは、今となっては知る人も少ないマイナーCPUです。その第2回は、引き続きNational SemiconductorによるCPU「SC/MP」。今回は日本の話も出てきます。

1980年代のパソコンであるX68000が小型化されて現代によみがえることが話題になっていますが、こうした完成品のパソコンが登場するさらに10年以上前、米国ではApple ][(昔からのマニアはこう表記します)が登場していたものの、日本では「コンピュータは自分で作るもの」、今の自作PCみたいな動きが活発でした。今回紹介するCPUは、そこに使われていたという興味深い話が登場します。そして、伝説パソコンテレビ番組「パソコンサンデー」に登場する先生が関わっているのです。



先月予告したように、今月のお題はSC/MP。"pronounced scamp"なので「スキャンプ」と発音する。Simple Cost-effective Micro Processorの略語だそうだ。


SC/MPを開発したのはまたもやNS(National Semiconductor)である。製品発表は1974年説と1975年説の両方があって、どちらが正確なのか判断がつかないが、実際に製品が出荷開始されたのは1976年4月のことである。先月紹介したPACEチップがやはり1974年だから、おそらくはPACEチップとほぼ同タイミングで設計を進めており、ただ出荷がやや遅れたというあたりだろうか。

SC/MPの狙いは、もう製品名称からも明らかなように「安価な」8bitプロセッサを構築することだ。これはSC/MPやIMP-16だけの話ではないのだが、そもそもこの時期のNSの戦略は「安価な製品を成長市場向けに大量投入することで、競合を打ち破る」だった。

1967年にFairchild Semiconductorから引き抜かれてCEO職に就いたCharles E. Sporck氏が採ったこの戦略でNSは1960年台の苦境から脱し、1970年台に同社の業績を大きく伸ばしたが、80年代に入るとその戦略が裏目に出て、再び苦境に陥るようになる。

これを救ったのは、のちにAppleの建て直しに招かれてNeXTを買収したもののスティーブ・ジョブズに追い出されたことで知られるギル・アメリオ(Gilbert Frank Amelio)博士だが、まぁこれは本題ではない。とにかくこの当時のNSの製品は、性能の高さよりも価格の低さを貴ぶ傾向が強く、これはプロセッサにも色濃く反映されることになった。

SC/MPはいろいろと癖があるプロセッサであるが、最大のものは16bit Addressingをサポートしつつ、PC(Program Counter)が12bitしかないことだろう。実際内部構造(Photo01)を見ると、内部の構造が2つに分かれており、左側がAddress(High)、右側がAddress(Low)になっているのが判る。ALUは右側にのみ存在しているという独特な構成である。

▲Photo01:正式名称はISP-8A/500Dっぽい。というか、古いSC/MPの写真を探してもISP-8A/4500とか500A~Cの型番のチップが発見できなかったあたり、出荷された初代SC/MPは全てISP-8A/500Dなのかもしれない

もうちょっと詳細な構成図がPhoto02であるが、ALUから直接参照できるメモリアドレスは12bit分、つまり4KBとなる。

▲Photo02:こちらでは、左のブロックは4bit Addressを、右のブロックは12bit Addressをそれぞれ管理していることが判る

もっと言えば、そもそもSC/MPのアドレス指定にDirect Addressing(アドレスの直接指定)が存在せず、PC-Relative Addressing(PC:Program Counterが指すアドレスからのオフセット)、Immediate Address(即値アドレス:ちなみに値は1Bytes分)、Indexed Address(アドレスのIndex指定)とAuto-Index Address(Index Addressの派生型で自動的にアドレスを増減させる)しかない、というなかなか面倒くさい代物である。

ちなみにPCは12bitと書いたが、プログラマ的から見ればPCは16bitあるように見える。ただし物理的にはPhoto02にあるように、PCはLowとHighの2つに分かれており、ALUから直接操作できるのはProgram Counter(Low)の12bit分ということになる。この結果として、外部に引っ張り出されるアドレス線は12本のみである。Photo01の右下のピン配置で、アドレス線はAD00~AD11の12本であることからもこれは明らかだ。

ではどうやって16bitアドレスをサポートするか?というと、Data Bus(DB0~DB7)を利用する形だ。もともとSC/MPは、下位12bitについてはALUから直接指定できるが、上位4bitについてはPointer Register命令を利用して変更する仕組みになっている。要するにALUからは12bit分のメモリしか見えない格好だ(SC/MPではこの12bit=4KB分のメモリ領域をPageと呼んでいる)。で、システム全体では最大16個のPageを利用可能で、どのPageを操作するかはPointer Register命令で指定するという感じになる。要するにバンク切り替え式、と言えば判りやすいかもしれない。

ちなみにアドレス指定だが、下位4bitにはそんな訳でPageの番号(=16bit Addressの上位4bit分)が、上位4bitにはStatus Flag(R/I/D/Hの4種類のFlagが定義されている)が出力される。なので周辺回路ではData Busをデコードして、アドレス指定の場合とI/Oの場合で処理を切り替える仕組みが必要になる。といってもバスタイミング(Photo03)を見るとそんなに難しい仕組みではなく、NADSの立ち下がりでアドレスをラッチし、その一定期間後にデータをラッチすれば済む(書き込みの場合も同じ)だから、当時の周辺回路でもそう難しくはなかったとは思うのだが。ただアドレスバスを16本持つ製品(例えばIntel 8080)と比較しても別にピン数が減らない(40pin)し、簡単とは言えアドレスデータ多重だから分離の回路が必要な訳で、このアーキテクチャが本当にコストを下げることにどこまで繋がったのか、筆者には判断しづらい。

▲Photo03:これだけ見てるとNRDSとかNWDS要らなくね?と思わなくも無いが、実際は後述するバス開放のメカニズムとも絡むのと、NADSだけで全部制御するのは危険(NRDS/NWDSも併用しないと、何かエラーでNADSが立下りと認識されてしまうと誤動作になる)なので、必要である

加えて言えば、ソフトウェアを書く側からすれば、明らかにこのアーキテクチャは面倒くさい。要するに4KBを超えないようにブロックを分割し、かつブロックを移動するような仕組みをソフトウェアに仕込む必要があるからだ。大昔に8bitのプログラムを書いたことのある方なら、オーバーレイという用語を覚えておられるかもしれない。あの仕組みをアセンブラで実装する必要がある訳だ。

もっとも1970年代と言えば、4KBは「大容量」であり、これで足りないケースは稀、という認識もあった時代の話(NECのTK-80のRAM容量が標準512Bytes/最大1KBだったことを思い出してほしい)だから、一概には責めにくくもあるのだが。ただこれは結果的に言えば、間違いなくSC/MPの足を引っ張ったと筆者は考える。

命令セットそのものはごく一般的というか、当時の8bitプロセッサそのものといったところ。珍しいところでは10進演算(Decimal Add)とかシフト演算(8080にはローテートはあってもシフトはない)が入っているあたりはちょっと珍しいが、基本シンプル(なにせ全部で46命令しかない)な構成である。問題は、これが決して高速ではなかったことだ。ISP-8A/500DはPMOSでの製造で、fres(外部からのクロック信号入力)は900KHz~1MHzとされているが、実行に要するサイクル数NOPですら5cycle。ADDだと19cycleとかである(Photo04)。

▲Photo04:Read/Write Cycleはそれぞれメモリからの読み込み/書き出しの時間で、それも含めたトータルの実行時間がTotal Microcyclesである

平均というのも難しい(どの命令がどのくらいの頻度で使われたかの統計がないからだ)が、ラフな言い方をすれば10cycle程度を見込んでおくのが無難であり、ということは実質100KHz駆動のCPUということになる。もちろん当時はまだ1cycleで命令を完了するようなプロセッサは世の中に存在していなかったが、例えばIntel 8080だと4~11cycle以内であり、動作周波数の高さ(当初は2MHzだった、後で3.125MHzまで向上した版がリリースされた)と相まって、SC/MPの2~3倍の処理性能を発揮した。

ただNS自身は、この処理性能の低さは織り込み済だった。

同社はこうした高性能の8bit製品と競合するつもりはなく、その意味では競合はIntel 8008あたりだった。要するにそこまで高性能でない代わりに安価、という路線を選んだ訳だ。高性能品が新市場を開拓すれば、そこまで高性能でない代わりに安価な製品が大量に求められるようになる、というのは良くある話であり、そうしたマーケットをターゲットにしたようだ。あと、何を考えてこの機能を用意したのかは不明だが、マルチプロセッサ構成も可能になっていた(Photo05)。

▲Photo05:謎のマルチプロセッサ構成。EMIN/EOUT信号をディジーチェーン接続する事で、バスを占有するプロセッサを制御する仕組み。

低価格向けのマルチプロセッサ構成にどこまで意味があるのか不明だが、こうした構成を要求するマーケットがあると睨んだのだろうか?

残念ながら実際のマーケットの動向は、NSの思う通りにははならなかった。

Intel 8080やMC6800、Z80、MOS6502といった8bitの有力な商品がマーケットを開拓した結果、より高性能なプロセッサが市場で求められるようになったからだ。Intelは8080に続き8085、次いで8086を投入するし、これとは別にまずIntel 8048、次いでこの改良型である8051を組み込み向けに投入して8bitマーケットで確たるシェアを確保していく。

MotorolaはMC6801の後でMC6809を投入、次いでMC68000を投入して大成功を収める。残念ながらMOS6502は後継に恵まれず(MOS6510は後継というよりもマイナーバージョンアップ)衰退していった。Zilog Z80も同じく後継に恵まれなかった(Z800は失敗作だった)が、Z180(日立がZ80を魔改造、いや改良したHD64180をZilogがセカンドソースしたもの)を始めとして高性能品が組み込み向けに広く出回った結果、意外に生き残った。

要するに8080とかMC6800がハイエンド製品だった期間はそれほど長くなく、すぐにミドルレンジとかエントリークラスの性能に落ちてしまい、より高速なプロセッサが市場を更に広げていくという動きの中で、SC/MPが確保できるマーケットはあまりなかったと言ってよい。SC/MPの評価キット自身はNSから発売された(Photo06)ものの、それ以外の採用例は全く聞かない。

▲Photo06:出典はcentre for computing history。左に拡張カード4枚分のスロットが用意される。ちなみにお値段は499ドルだそうだが、1976年なので当時の換算レートだと日本円で15万円弱になる

改良版SC/MP-IIの登場

さて、ここからの粘り腰は、これもNSならではである。1977年、このSC/MPをNMOSで製造することで高速化と省電力化、単一電源化(SC/MPは+5V/-7Vが必要だったのが、+5Vだけになった)に加え、動作周波数も2倍(外部4MHz/内部2MHz)に引き上げられた。また低価格なプラスチックパッケージ(ISP-8A/500Dはセラミックパッケージだった)が採用された。

SC/MP-IIことINS8060(最初はISP-8A/600だったが、途中からINS8060になった)と名付けられたこの新製品の違いはそれだけであったが、こちらはもう少し採用例が多い(Photo07)。

▲Photo07:データシートの日付は1978年1月だが、これはRevision Cなので改定が行われた版である。Microcomputer Digestの1977年1月/2月号に、SC/MPのNMOS版のサンプル出荷が開始され、サンプル価格は17.76ドルである旨の記事が掲載されている

海外では英シンクレア(正確に言えばこの当時の社名はSinclair ResearchではなくSoC:Science of Cambridge)のMK14というコンピュータキットに採用された(この話は以前この記事で触れた)(Photo08)他、日本だと横浜にあったアドテックシステムサイエンス(2009年に倒産)がCOMKIT8060やCOMKIT8061、さらにその後継でORANGEことCOMKIT8062をリリースしている。

▲Photo08:MK14のマニュアルに付属したレイアウト表。IC1がISP-8A/600(1SP-8A/600になってるのはご愛敬)である。縦長のワンボードマイコンキットだった

このORANGEというのはApple ][を思わせる筐体(ただしオレンジ色だし寸法も微妙に違う)にCOMKIT8060ベースのワンボードマイコン、さらにNIBL(National Industrial Basic Language)というTiny BASICのインタプリタROMを乗せ、9万9800円という当時としては激安価格で販売していた製品だ。余談になるが、Apple ][を完全にパクったGrapeというマイコンもこの当時あって、たしかどこぞの大学祭で触った記憶がある。ORANGEの方は筐体が似てるだけで、ハードウェア / ソフトウェアともにApple ][とは無関係だった。

日本で謎の盛り上がりを見せたSC/MP-II

実はこの当時、日本では結構SC/MP-IIが盛り上がっている。というのはさまざまな雑誌に積極的な記事出しをしていたからで、ちょっと調べただけで、

  • トランジスタ技術 1977年10月号~1978年1月号:「マイコンピューターをつくろう SC/MPによるマイコン入門」

  • 電子展望 半導体技術 1977年11月号「SC/MP-Ⅱマイクロプロセッサ活用の手引き」

  • マイコン 1977年8月号 「NIBLの仕様から応用まで」

といった記事が掲載されている(他にもASCII誌とかI/O誌などでも記事があったらしいが、調べきれなかった)。トランジスタ技術の連載は「パソコンサンデーのDr.パソコン」こと故宮永好道先生の連載で、実際にSC/MP-IIを使ってコンピュータを自分で作ろうというものだったし、電子展望やマイコンはNS Japanのエンジニア(当時)の方が執筆するという熱の入りようである。インターネットも何もない時代の雑誌の影響力は非常に大きかったし、相対的に低コストだったこと、それとNIBLが入手可能だったことが大きい。このNIBLはNSが自社で開発し、ROMの形で販売していたため、自分で作ったマイコンボードにこのROMを載せて、そこに制御を移しさえすればBASICインタープリタが動く、という手軽さは他のプロセッサでは不可能だった。

ちなみに1978年にこのNIBLのROMを(何故か)東急ハンズで購入した方が居られたが、価格は2万4000円だったそうだ。多分現在SC/MPに何らかの郷愁を感じておられる読者の大半は、この1977~78年の雑誌記事を目にしたとか、NIBLでBASICに触ったなんて経験をお持ちの方と思われる(ちなみに筆者は中学2~3年生の頃で、モロである)。

おそらくはこのNIBLの提供もあって、SC/MP-IIは初代SC/MPよりは売れたのだろう。気をよくした(?)NSは1978年、SC/MP-IIIを発表する(Photo09)。

▲Photo09:相変わらずPCがHigh(4bit)とLow(12bit)に分かれ、ALUはLow側しかアクセスできない

基本的な構成はSC/MP-IIと同じであるが、

  • INS8070:64Bytes RAMを内蔵

  • INS8072:64Bytes RAM+2.5KB ROMを内蔵

の2製品があり、INS8072はこの内蔵ROMの中にNIBLを格納していた。加えて新しく16bit演算をサポートし、更にハードウェアで乗算(37μs)と除算(42μs)演算ユニットを追加したほか、外部バスのI/FがMICROBUSという規格準拠になっている。

この結果、命令セットの互換性はなくなった。さて、これが売れたか?というと、全然売れなかった。1978年といえば、もうIntelの8048とか8085が登場、翌年にはMC6809も投入される時期である。この頃になると、メモリサイズが4KBというのはいろいろ厳しくなってきていた。要するにマーケットが拡大し、より広範な用途に使われるようになった結果、プログラムの複雑さが上がり始めていった時期である。

BASICにしても、たとえば前述のアドテックのORANGEにしてもカラー表示や文字/グラフィックスの混在とかが可能だったし、そうなると4KB Pageでしか管理できないSC/MPやその後継製品は、VRAMの制御を行う際に煩雑にPage切り替えを発生することになり、猛烈に遅くなる。

ちょっと使う分には良いかもしれないが、それ以上の事をするにはSC/MPのアーキテクチャは制約が多すぎた。それもあって、組み込み用途などでもあまり広く使われることはなかった。そして性能は初代SC/MPの倍とはいえ、8080に届くかどうかという程度だから、8080の値段が下がってくるともう太刀打ちできなかった。

NSが80年台末までSC/MP-IIの供給を続けたのは偉いと思うが、売上としてはもう微々たるもので、一部のユーザーに強い郷愁感を植え付けた以上の功績を残すことができないまま、市場からフェーズアウトしていった。

《大原雄介》

大原雄介

猫に傅くために原稿を書いて日銭を稼いでいる毎日。元は組み込み系のエンジニアだったのに、もうずいぶん遠い所まで来てしまった。

特集

BECOME A MEMBER

テクノエッジ友の会に登録しませんか?

今週の記事をまとめてチェックできるニュースレターを配信中。会員限定の独自コンテンツのほか、イベント案内なども優先的にお届けします。