見出し画像

iApx432 それはSF大会の思い出

このCPUを知っている人はいるかもしれませんが、見たことがある人はいるのかな?というインテルの黒歴史CPUであるapx432です。インテルは8086という16ビットCPUを世に送り出した後、次の32ビット時代にはどのようなCPUが必要になるかの検討を始めました。電卓用のCPU屋と揶揄されていたインテルは、来る32ビット時代にはいわゆる本格的なコンピュータをチップに収めたマトモなCPUを作り、モトローラの鼻を明かしたいと考えていたのかもしれません。

時代はまだ8ビットCPUでしたが、既にアセンブリ言語でコードを書くのではなく、Pascalなどの高級言語をコンパイルしてプログラムを実行するというスタイルが主流でした。ただPascalの持っている高度な処理をマイコンの命令で直接実行するのは難しく、多くの命令を組み合わせる必要がありました。このためUCSD-Pascalは、pCodeと呼ばれる仮想CPUを規定して、このCPUに対するコードを生成するという方法を取っていました。

pコードマシン

この流れが正しいとすれば、このpCodeを直接、実行できるCPUがあれば良いはずです。そこで実際にPascal MicroEngineと呼ばれるCPUが作られました。

Pascal MicroEngine

その実装はすべてをハードワイヤードで作り直したものから、既存のCPUのエンジンに大規模なマイクロコードを追加したものなど、いろいろな組み合わせがあったようですが、シンプルにも見えるpCodeは高度なメモリ管理能力も要求され、マルチタスクに必要な機能のいくつかもハードウェアで実装したために、その仕様の規模はかなり大きく当時の技術ではひとつのチップに収めるのはまだ無理がありました。

このような時代にインテルは32ビットな時代は、このような高級言語を走らせるための機能を充実させれば良いと考えたのだと思います。ちょうど国防総省が標準言語としてAdaを採用する動きを進めていた時期でもあったので、AdaをpCodeのように実行できるCPUを作るというアプローチを取ることに決めました。

プログラミング言語 Ada - 机の上で活躍した思い出の言語

こうして出来上がったのがapx432です。1981年には何とかリリースされ32ビット時代の基盤となるCPUとなる予定でしたが、この時点ではひとつのチップに収めることが出来ずに複数のチップで構成することとなり、これが理由でかなりパフォーマンスが低下することになってしまいました。また今までのアーキテクチャをすべて捨てていきなり高級な命令を実装したためにチューニングも充分ではなく、命令によっては実行するのにとても多くのクロックが必要でハードウェアを効率よく使えるものではなかったようです。さらに悪いことには、このCPUに対応したAdaコンパイラの品質が悪く(まだ言語仕様も安定していない時期です)、結果としてとても耐えられる処理能力を出すことができませんでした。

Intel iAPX 432

Intel iAPX 432

命令セットは革新的で、命令長が可変ビットでありメモリアクセスもビット単位で行う能力がありました。さらに凄い(恐ろしい)のがメモリアクセスにアドレスを使うことは出来ず、必ずメモリディスクリプタを設定し、これを使ってアクセスするようになっていたことです。

Intel iAPX432 Interface Processor Architecture Reference Manual

http://www.bitsavers.org/components/intel/iAPX_432/171863-003_iAPX_432_Interface_Processor_Architecture_Reference_Manual_Aug82.pdf

Technical Review of iAPX 432 Component User’s Guide

いわゆる本物のOSが必要な機能のかなりの部分をハードウェアで実装してあるのです。そうです、なんとこれではC言語を実装できないですね。PascalやAdaのヒープはポインタのように振る舞いますが、これは必ずしもメモリアドレスで実装する必要はなく、実際にダブルポインタで実装されているものもありましたし(これでヒープの再編成ができる)、アドレスでアクセスできないことは問題になりません。確かにパフォーマンスに問題はありましたが、いずれ技術の進歩がこれをカバーできると信じていた時代で、夢のマイコンとして語られていました。

このCPUの思い出としては、1982年に開催されたSF大会であるTOKONⅧの合宿で、ASCIIの面々と熱く語り合ったことがあります。これだけの機能をCPUが直接実行できるようになれば、コードを書くときにもパフォーマンスを良くするための小賢しいテクニックに振り回されることもなく(ASCIIって、そんなことばかり書いていた雑誌ですけれども)、より本質的な高度な処理に取り組むことのできる時代が来ると夢見ていました。もっとも合宿では、そんな話よりも座布団を振り回してフロッピーのものマネとか実にくだらない話題のほうが盛り上がったのですけどね。

インテル iapx 432 Intel Iapx 432

https://academic-accelerator.com/encyclopedia/jp/intel-iapx-432

忘れ去られたCPU黒歴史 20年早すぎたCPU iAPX 432

結局、進歩の速いソフトウェア的な高度な機能をハードウェアとして固定化してしまうことは良い解決策ではなく、ハードウェアは基本的な機能をより高速に実行することに専念し、それらを活かすソフトウェアを開発していくべきだということになり、やがてこれがCISC/RISC論争にも繋がっていくわけです。考えてみればこの時代においても、既に高度な機能を持つ6809はパフォーマンスに難があり、命令はシンプルだけれどより高速で、そして安価な6502が売れていたことを考えれば、もう答えが出ていたのかもしれません。

ところで、Pascalが高級言語の本命であり、これからはAdaだと言っていたこの時代、1983年に発表された「本物のプログラマはPascalを使わない」というエッセイが思い出されます。このエッセイは元の主旨を超えて、いろいろな解釈がされているようですが、世の中、構造化であるとかオブジェクトであるとかキレイごとばかりが語られているけど、大事なことはどう書くかではなくて何を書くかで、言語なんて所詮、道具に過ぎないんだよみたいな話です。そこは華やかなソフトウェア業界ではなく高度な職人技が幅を利かせていて、世界は彼らのお陰で成り立っていることをお忘れなく、といったところです。つまるところ、高級言語をハードウェアに固定化するなんて時期尚早だよと言っていたのかもしれません。

【解説】本物のプログラマはPascalを使わない - このエッセイだけはなく時代を包括的によくまとめてあります

結局、インテルは元の路線に戻り80386というCPUで32ビットな時代に乗り出すこととなりました。

ヘッダ画像は、TOKONⅧで毎時発行されていた時刊新聞(第15号0:30)[一部]と、APX432のデータプロセッサたち。以下の画像も使わせて頂きました。
https://commons.wikimedia.org/wiki/File:Intel_C43201-5_chip_(15597750510).jpg
By brouhaha - Intel C43201-5 chip, CC BY-SA 2.0, https://commons.wikimedia.org/w/index.php?curid=113440104

https://commons.wikimedia.org/wiki/File:Intel_C43202_chip_(15597749830).jpg
By brouhaha - Intel C43202 chip, CC BY-SA 2.0, https://commons.wikimedia.org/w/index.php?curid=113440105

#CPU #32ビット #インテル #APX432 #SF大会 #TOKON#ASCII #bit #Pascal #Ada #本物のプログラマはPASCALを使わない

いいなと思ったら応援しよう!