ROMカートリッジ付きゲームマシン/ゲームパソコンの系譜(http://d.hatena.ne.jp/shin/20100107/p3)

徐々に「Z80+TMS9918+AY-3-8910」に収斂して行くのが面白いですねぇ。まぁ、回路作りやすかったからなぁ。
SORD M5がこの方向性に先鞭をつけて、すごい高度なシステムソフトウェアをROMカートリッジにのせるということで、ハードウェアの制限をうまくごまかしていたのが面白かったのですが、SC-1000/3000やMSXになると、とたんに「よくある何か」に成り下がってしまったのも不思議な感じ。
TMS9918(VDPといった方がいいかな?)と組み合わせるのなら同じTIのTMS9995とSN76489を同時に組み合わせた方がメモリマップドI/Oのデコーダで苦労しないですんだろうに、なぜかこの組み合わせはぴゅう太だけ。ZilogのZ80とGIのAY-3-8910と組み合わせられることの方が多いというのもこれまた不思議な感じ。
創世記のハードウェアの組成には謎が満ちていますね。


PC-6001がこんなに古いとも思わなかった。家電は殆どやっていなかった通信機器メーカーのNECが「ジャンケンポン・カセットポン」とテレビCMを流していたのは、かなり先進的だったんですね。カセットビジョンが玩具流通でCM打ちやすかったのは当然としても。
そして、FM-8(^^;)。バブルメモリでソフトが供給されていたんですね。でも、ゲームはなかったんだろうなー。
(追記)
PASOPIAもカートリッジがあったのか。知らなかった。

ヰタ・コンピュータリス

コンピュータ欲的生活(Vita Computalis)。別名、「春のめざめ」(笑)。


父親が電子機器の設計を行っていた影響で、やけに電気関係にうるさい子供でした。父親がオーディオの部署にいたときには一緒になってホームオーディオを如何に良く聞くかをを研究していましたし、パーソナル無線やセルラー電話の部署にいたときには無線にやたらと詳しくなっていました。
小学3年生の時、祖父が癌の手術で入院していた際、その入院先に良く行っていた関係上、静かにしていさせるために本屋で好きな本を買っていいと言われ、住んでいた街では見たことのない「子供の科学」という雑誌を初めて手にとりました。これ、学研の「n年の科学」のシリーズのように学年を固定したものではなく、幅広い年齢の小中学生向けに、最新の科学トピックを「噛み砕かずに」提供するというすごい雑誌でした。ちなみに、今も売られています。全然芸風変わっていません(^^;)(http://www.seibundo-shinkosha.net/products/detail.php?product_id=2455)。
この本には科学トピックの他にも電気回路の設計や、アマチュア無線の話や、高分子の話なんかが良く載っていました。多分、私が読んでいたその頃は、その辺の話題が最先端だったんでしょうね。自分でハンダゴテを握るほどの子供でしたので、TTL-ICなんかを使って加算器を作ったり(ボタンを押すたびに8elementのデジタル数字が1ずつ増加して行く!)、やけに良く飛ぶペーパークラフトの飛行機を作ったり、巻末に載っている教材メーカーのカタログをため息をつきながら隅から隅まで読んだりしていました。
で、ある時、「コンピュータ」の特集が組まれたことがありました。「コンピュータ」とはどういうものか、現在手に入れるにはどうすればいいのか、コンピュータがあれば何が出来るのか。その頃HPのプログラマブル関数電卓を友人の家で触って大きな感銘を受けたりしていたので、その号は貪るように読んでいました。これからはパーソナルコンピュータの時代だ。家電メーカーから出ているコンピュータはまだまだ高いけど(その頃もパソコンは売られていたのです。BASIC Master(1978年)とか、PC-8001(1979年)とか、MZ-80K(1978年)とか。TK-80BS(1978年)は、パソコンと言っていいのやら)、今度松下から価格が1桁安い本当のパーソナルコンピュータJR-100(1981年)がでるので、子科(「子供の科学」の略称)の読者みんなで買おう!という特集だったのでした。
いや、実際に安かったんですよ。性能は確かに制限されていましたが、54800円でBASICの動くパソコンが手に入るなんて、当時は夢のような事態でした(後で調べてみるともっと安いZX-81がすでに出ていたので、松下からの売り込みがあったんだろうなぁ。と、大人の邪推)。もちろん当然のようにBASICの文法と考え方の特集は組まれ、サンプルプログラムが数多く載せられ、サンプルプログラムを手で動かしながら1行ずつ追っていくと、もう、未来に触れているような気分でした。


小学3年生にしてアマチュア無線の通信教育講座を受け(でも、晴海に受験に行くことはできなかった。というか、北関東の田舎の人間には「晴海」がどこか判らなかった。なので、免許はとってない)、小学4年生のクリスマスには電子ブロックを買ってもらってハンダゴテからすっかり離れ(おい。だって、ハンダゴテ使わなくても回路がいくらでも作れるんだもん)、小学5年生のクリスマスにPB-100を買ってもらって徹夜(多分、生まれて初めての徹夜。あまりの刺激に寝るのが惜しいまま気がついたら朝だった)でBASICをマスターし、と、まぁ、理系街道を驀進していました。
小学5年生の頃には何を見てもプログラムで再現するにはどのようにすればいいのかを考えるようになっていましたので、街に出ていろんなパソコンのパンフレットをもらってくるのがすっかり楽しみになっていました。時折しもパソコンブームのまっ最中。互換性の無いパソコンが山のように生まれては消えしていた時代でしたので、店頭に置いてあるパソコンでプログラムを打ち込んでも動かないことがほとんどでした。でも、なんとか命令コードを探りだし、VRAMの構造を当てずっぽうで調べ、パフォーマンスを10000回forループで調べたり(4秒が壁でした。4秒を割り込むのはMZ-1200のSP-5030とX1位だったような。マイクロソフト系はCPUによらずあんまり速くないのが印象的でした。あ、あとSORDのM5はBASIC-G,BASIC-Iともにすごい速かったような)しながら、一端のパソコン評論家気取りだったのを覚えています。
結局、グラフィックにあまり興味のなかった私はベンチマークテストで好成績をたたき出していたMZ-700をなんとか手に入れられないかと電気屋の新聞の折込広告を毎回楽しみに見ていました。
小学6年生の秋頃、それまで定価近くで売っていたMZ-721が現品処分でやけに安く売られているのを見つけました。私は貯金を全額はたいてそれを手に入れ、BASICのロードの遅さに呆然としながらコンピュータの深みはまっていったのです。


で。
その頃出ていたパソコンはほとんど触っていたと思います。フレームバッファしか持ってなくてテキストVRAMのないFP-1100やBASIC MASTER Level3 Mark5、FM-8,FM-7など、めったに見かけないレアハードのSMC-70やMulti8、店頭にBASICが刺さっていればラッキーなMAX MACHINE、ハードウェアタイリングで妙に画面がザラザラしていたPASOPIA7などなど。AppleIICommodore 64も探すとおいてあったりするんですよね。
もちろんゲーム機もコンピュータの一種としてみていましたので、VDPを使った一連のハードウェアは「またこれか」とうんざりしながらスプライトの使い方を見ていましたし、ファミリーコンピュータのやけに綺麗なスプライトとBG面にため息を付いたりしていました。BG面が16x16のブロックに4色しか使えないというすごい制限されたハードウェアだと知ったのはファミリーベーシックが出てからでした。
とはいえ、パソコンは夢の機械ではなく、実用品ですらなく、知っているからといってなにかの役に立つものではちっともありませんでした。コンピュータを使わないとできないような作業というのは実際には当時はあまりなかったですし、ワープロ専用機こそ出ていたものの、パソコン上でワープロを動かすにはあまりにハードルが高かったので。
なので、くもんの指導者をやっていた母親が仕事に使えるパソコンはないかと聞いてきたときには迷いもせずにMacintoshを勧めた記憶があります。Color Classic IIとインクジェットプリンタのデスクライター。これに「クラリスワークス」をつけて。System7と漢字Talk7はあまりに不安定で重かったですが、それでも、他のパソコンに比べればずっとましでした。でも、Macintoshは私の中では「パソコン」ではなく、「単なる文房具専用機」でした。自分でプログラムを作ることもできないコンピュータをパソコンとみなすことなんかできなかったのです。


もちろん、今でもコンピュータは「プログラムが出来る機械」でしかありません。携帯電話がどんなにすごいハードウェアを持っていても、プログラムを組むことができなければただの「道具」。コンピュータではありません。私の中では。
コンピュータがプログラムを組むことのできる機械である限り、私の「コンピュータ欲」は尽きることがないのです。

MSXと似たようなハードのゲームパソコンの最大の違い

Z80+TMS9918+AY-3-8910」という組み合わせ自体はなんというか非常に一般的でハードウェアとしては面白いところはありませんが(何せ、TMS9918はVRAMをメインメモリにマップできないという変態ハードウェアなのでパフォーマンスを上げようがない。サイクルスチールさせたくないとか、DMA駆動中にCPUのバスを止めたくないとか、メモリコントローラとバッファみたいなものを作りたくないとか、いろいろ理由はあると思うけど)、MSXはそれ以外の部分で面白い技術が幾つか使われていました。
まず、「バンク切り替え」が一般的だった時代に、メモリを16KByte単位に区切ってスロットとして初歩的なMMUを積んでいたということ(Z80でリロケータブルなコードを書くのは難しいっていうかほとんど無理なので、論理メモリのアドレスマッピングまではしなかったけど)。
たしかに初期のMSXはRAM16KByteにROM32KByteと非常にしょぼいもので、16ビットのアドレスバスでアクセスしきれるような容量でしたが、メモリはそのうち足りなくなる(というか、CP/MMSX-DOSを動かすためにRAMを64KByte積もうとするとROMの領域がじゃまになる。あ、MSX-DOSCP/Mは何気にAPI互換だったりして)という見込みがあったらしく、最大で1MByteまでメモリを増やせるようになっていました。
その上でMSX-BIOSはインタースロットコールをすることを大前提にして、インタースロットコール以外ではハードに触ることすらもできないという極端なハードウェアでした。唯一の例外がI/Oポートにぶら下がっているVDP。VDPだけは特例で直接触ってもいいことになっていました。ただし、特定のI/Oポートを決め打ちにせず、BIOSにポートの番号を問い合わせてからじゃないと使っちゃいけないという制限付き(これのせいで、初期MSXのお行儀の悪いソフトはMSX2では動かなかった)。
ただ、これのおかげでどのスロットのバンクにあるプログラムであっても統一されたAPIMSX-BIOSにアクセスできるというメリットは有りました。
これらの機構がMSX1の時点ですでに備わっていたというのはマイクロソフト的にはかなり先見の明があったと思います。こんなに面倒くさい動きをさせている割には何故かN88-BASICよりも速度が出ていましたし。


MMUを積んだ8bitパソコンはもっとあとになるといろいろ出てきます。完全リロケータブルコードを割り当てることを前提にしたS-1とか、MSXによく似たインタースロットコールを備え持つX1turboとか、完全なMMUで巨大なメモリ空間を持つMZ-2500とか。
ただ、「巨大なメモリ空間16KByte!」とか言っていた時代にインタースロットコール必須にしたMSXはやっぱり、伊達に標準機目指していなかったというところでしょうか。「メガロム」なんかはまさにこのメモリスロットの応用例ですし。ただ、本当に1MByte(8Mbit)使ったソフトは結局出なかったなぁ。
ちなみに、ナムコのアーケード基板はメモリ空間が64KByteを超えそうになるとおもむろにCPUを1個ふやすという豪快な手で逃げていました。なので、グラフィックの多い基板はCPUも多いみたいです。いや、逃げてたんじゃないな、積極的にマルチCPUコンピューティングにしてたというか。
セガは同時期(System16A/B)にはすでに68000に移行していましたし、1MByteを超えそうになったらあっさりFDによる配信からも撤退(System24の後期)しちゃうし。
ま、MMUが当たり前のOSが一般的になった今となってはロストテクノロジーですな。


VDPのVRAMをCPUバス上にマップ出きないという制限はMSX2で使われていたヤマハのV9938でもバッチリ受け継がれちゃってて、VRAMはすごい巨大なのに高速転送できない(VRAM-VRAM間は若干早い、けど雀の涙)という不思議なハードウェアになっていました。FM-77AVやMZ-2500、X1turboZがMMUみたいな方法論で巨大なVRAMとDMA転送でやっつけていたのとは好対象。その上、この時期に珍しいことにVRAMのフレームバッファが垂直型だったのでプレーンによるマルチスクロールもできないし、かと言って色数を沢山使おうとすると書き換えが見えるしと、なんともしょぼいハードウェアになっていましたっけ。
あと、MSX-BIOSには「垂直同期待ち」の命令がなくて、その代わり「垂直同期割り込み」だけサポートされていたので書き換えに何フレームもかかるようなグラフィックの描画には激しく向いてなかったっけ。まぁ、当時1フレームで全画面を書き換えることができるハードウェアは逆に珍しかったので、ティアリング上等な書き換えでゴリゴリ動かしていましたっけ。
やー、なつかしいなぁ。
X1やMZ-2500でならまたゲーム作ってもいいけど(PCG:Programable Character Generator。ゲーム機で言うところのBG面)が強力なので、かなりいろんなことが出来る)、MSXではもう勘弁だなー。

Intelのx86CPUの組み込みへの進出計画(http://d.hatena.ne.jp/shin/20100107/p2)

いい加減コメントのやりとりが長くなってきたので新エントリ。
Intelx86(IA-32)命令コードのCPUを組み込み用途にまで拡大したいと思っているのはほぼ確実でしょう。これは異論を挟む余地はありません。特にIA-32命令コードについての経験は当然ながらどんなメーカーよりも多く、IA-32命令コードを使ったCPUを作るのであればどんな互換機メーカーよりもうまく作れるでしょう。省電力を目的とするのであれば省電力を、パフォーマンスを目的とするのであればパフォーマンスを、ダイサイズやチップ数の削減を目標とするのであればいくらでも削減出来ると思います。
また、IntelIA-32命令コードのCPUをどんどん高度化するにあたって製品のマスクプロセスをとにかく微細化する方針をとってきました。微細化するにはそれなりの技術力が必要であり、この技術に関してはどんな半導体メーカーよりも競争力があります。これは、IA-32というキメラのような命令コードで性能を導くためにどうしても必要だったものなので、目的を実現するための最良の手段をとって行ったらいつしか高みに登っていたという結果にほかなりません。幸いにしてIA-32命令コードのCPUは一定の需要が必ず存在しますし、その需要を満たしていけば資金にしても技術にしてもかなりの余裕をもたせることが出来ます。Intelの製品開発にかけるコストはかなり高額になっていると思います。
と、なると、Intel的にはIA-32という命令コードを最大限活かして、命令コードレベルで互換性のあるソフトウェアをあらゆるスケールで実現させたいと考えると思われます。IAサーバーよりもずっと高可用性のサーバー用途であっても、組み込みのようなコスト面、実装面、消費電力面などでの制限が厳しい用途であっても、自らのもつ最大の競争力を生かすように考えるのが、まぁ、営利企業としては順当でしょう。
なので、DECの半導体部門をせっかく入手しても(StrongARMですね)、それがIA-32ではないという理由で売却してしまいますし(MarvellのXScale)、そのカバーしていた製品範囲をIA-32という命令コードで実現すると言いはります。AtomZシリーズが出る前、A110というCPUがありましたが、これはXScaleの製品範囲を実現するための尖兵で、AtomZシリーズは新アーキティクチャMoorestownでXScaleに対して攻勢をかけてきました。IA-32は対応しているOSも山のようにあり、そのペリフェラルやドライバに対してもそれこそ膨大なソフトウェア資産があります。Core iシリーズもすっかりSoC風味になり、DRAMやNAND Flashですらもチップに乗ってしまいそうな勢いです。
Intelが今利益を最大限にすることは、特に競争力のある技術を活用して、他の追随を許さずに寡占状態に持っていくことです。そのためには組み込みへの進出はある意味既定路線だったと思います。


おもいます、が。
IA-32って、命令アーキティクチャ的にはあんまり素性がよろしくないってのが残念なところ。確かに80386が出た当時、後方互換性を保ちながらモダンなOSに対応するためにはああいった命令コードになった、という理由はよーく分かるのですが、いかんせん設計思想が古すぎです。どんな状況でも最適なパフォーマンスを出すよう細心の注意を図られたPOWERアーキティクチャや、少ないトランジスタで高度な命令とパフォーマンスを実現するために作られたARMや、そもそもRISCという現代においては当然のように扱われている設計手法を論文レベルから実現していったMIPSなどに比べると、本来必要ない部分での命令の分割やCISCにまつわる泥臭い部分がいつまでも足を引っ張っていると考えると、IA-32を捨て去るだけでトランジスタ数が激減するんじゃないのかなーという気は、確かにします。実際、IA-32CMSでエミュレーションしていたTransmetaのCruesoeはトランジスタ数では同時期のPentiumIIIの約半分でしたし(あ、ただし、TransmetaのアーキティクトであったBolis Babaianさんも、今はIntelにいたりしてな)、ARM Cortex-A8なんかでAtomNシリーズと張り合おうとするとSoCのTegraやSnapdragonの方がCPU単体のAtomNシリーズよりもトランジスタ数で少なくなったりするという現象が起こっています。
それでも、IntelはしばらくはIA-32が世を席巻するという野望を捨てないでしょう。何せIntelには膨大な資金力とそれに裏打ちされた技術力があります。IA-32が32bitだからスケールするにはちょっと役不足という向きにはEM64Tという技術だってあります(これまたなんというかキメラなアーキティクチャなのがどうにも釈然としないのですが……)し、省電力、ダイサイズの縮小、システムへの組み込みやすさに関しても怒涛のプロセスルールとCoreマイクロアーキティクチャを生み出した設計能力があります。SoCとしてワンチップで今までの製品を置き換えることだって容易いでしょう。Core i5がコンパニオンチップをオンダイで出荷されてきたのも組み込みに対する回答でしょうね。
新AtomZシリーズであるMoorestownがどこまでXScaleに肉薄出来るかも見どころではありますが、Moorestownではまだ足りないんじゃないのかなー。いろんなところが。

で、だ(承前)

マシン語とかCPUのアーキティクチャとかメモリのキャッシュ技術を今学習するのならARMのマシン語をやるのがいいよ、ということを言いたかったのでした(ぜんぜん違うこと書いてるぞ、上のエントリと)。
ほんとはPOWERアーキティクチャのPC(ええと、今売ってるコンシューマレベルではPS3位しかないかな?)で、MINIXか何かのソースを写経するだけで(PS3MINIX動くの?)格段にレベルが上がるんですが、悪貨は良貨を駆逐するのでなぁ。IA-32MINIXはソースが簡単に手に入るし、VMWare PlayerやVirtualBoxですぐ試せるんだけど。
あれ? そういや、VMWareVirtualBoxって、PowerアーキティクチャのゲストOSサポートしてるのかな?
(追記)
QEmuなら行けるらしい。この際QEmuでもいいかー。