インテル社と上位互換戦略インテル社と上位互換戦略8ビットCPUの8080で大成功したインテル社は、次に16ビットCPUの8086を開発する。このときインテル社が採った方法は、8080用の機械語がそのまま8086上でも動くようにしたことです。これを上位互換性という。ユーザーは新しい高機能のパソコンを買っても、今までのソフトがそのまま動くのは大変魅力的であった。開発者の立場でも、新機種用に新しく1からソフトを作り直すのは並大抵ではない。この戦略により、旧のユーザーをそのまま新しいCPUのユーザーに取り込むことに成功した。CPUの新機能を使う新たなソフト開発の需要も生まれ、一石二鳥である。このようにして、上位互換のCPUとして80286、さらに32ビットCPUの80386、80486、Pentium、Coreと進化させて、パソコン用のCPUを独占し続けている。この間、他社がインテル社と互換性のあるCPUを開発して挑戦してもインテル社は徹底したCPUの高速化で対抗して、競争相手を退けるのに成功している。マイクロソフト社が一貫してインテルCPU用に特化したソフトを作り続けていることも大きい。これがCPUの自然な発展・進化であるかと言えば、大いに疑問があると私は考えています。以下の話は当時の私見です。(32ビット化した現在では下の批判は余り意味がない。)私は8ビットCPUに不満を感じていたとき、インテル社は16ビットと称するCPUを出したわけですが、倍の16ビットになったのは内部レジスタだけでアドレスバスは倍になっていませんでした。8080はレジスタだけ見れば8ビットですが、アドレスはすでに16ビットでした。2の16乗の64Kバイトのメモリー領域をアクセス出来たのです。これを拡張すれば当然アドレスは倍の32ビットにするのが自然です。インテル社は代わりにセグメント・レジスターというアドレスに下駄をはかせて上げ底にするだけのレジスターを追加しました。これでは、素直に使えるメモリー領域は依然として64Kバイトのままと言ってもよいでしょう。セグメント方式はもっと大きなメモリーをもつコンピュータがページングというメモリー管理をしたいときにこそ導入すべきもので、パソコンレベルには馴染まないものです。その点当時モトローラ社が開発していたCPUは素直な32ビット化に近い仕様を採っていました。そのCPUの命令体系は相対ジャンプ命令を完備していました。これを使えば、命令コードのアドレス位置を自由に移動させることが出来、プログラムを完全にモジュール化することが可能でした。命令コードレベルで(ソースコードを知らなくても)再利用可能なモジュール群として開発されたコードが共有財産化できるわけです。私はてっきり将来そういう方向にコンピュータは進んでいくものと想像していました。現実はそうなりませんでした。(現在のオブジェクト指向の継承や仮想関数は言語レベルでの同様な試みである。)インテル社はある意味賢明でした。一つはユーザーの囲い込みに成功しました。一つは高級言語レベルのソースコードさえ隠せば、ソフトウェアの秘密を保持出来、ソフトウェア開発が産業として成立することができるからです。